- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的学校做一个安全项目。
对于这个项目,我有一个二进制文件,我必须做两件事,制作这个二进制文件的伪代码并进行利用。
为了在 ASM 中变得更好,我尝试在 c 中执行完全相同的源代码。我主要遇到 edx 问题。我不知道如何在 c:
中执行此操作0x080484a5 <+41>: mov edx,0x8048468
这是完整的主要代码:
Dump of assembler code for function main:
0x0804847c <+0>: push ebp
0x0804847d <+1>: mov ebp,esp
0x0804847f <+3>: and esp,0xfffffff0
0x08048482 <+6>: sub esp,0x20
0x08048485 <+9>: mov DWORD PTR [esp],0x40
0x0804848c <+16>: call 0x8048350 <malloc@plt>
0x08048491 <+21>: mov DWORD PTR [esp+0x1c],eax
0x08048495 <+25>: mov DWORD PTR [esp],0x4
0x0804849c <+32>: call 0x8048350 <malloc@plt>
0x080484a1 <+37>: mov DWORD PTR [esp+0x18],eax
0x080484a5 <+41>: mov edx,0x8048468
0x080484aa <+46>: mov eax,DWORD PTR [esp+0x18]
0x080484ae <+50>: mov DWORD PTR [eax],edx
0x080484b0 <+52>: mov eax,DWORD PTR [ebp+0xc]
0x080484b3 <+55>: add eax,0x4
0x080484b6 <+58>: mov eax,DWORD PTR [eax]
0x080484b8 <+60>: mov edx,eax
0x080484ba <+62>: mov eax,DWORD PTR [esp+0x1c]
0x080484be <+66>: mov DWORD PTR [esp+0x4],edx
0x080484c2 <+70>: mov DWORD PTR [esp],eax
0x080484c5 <+73>: call 0x8048340 <strcpy@plt>
0x080484ca <+78>: mov eax,DWORD PTR [esp+0x18]
0x080484ce <+82>: mov eax,DWORD PTR [eax]
0x080484d0 <+84>: call eax
0x080484d2 <+86>: leave
0x080484d3 <+87>: ret
你能帮我找到如何执行 main + 41 行吗:)?
谢谢
最佳答案
0x8048468
可能是基于数字的指针值。也许是一个函数指针,因为它位于 0x8048350
上面的页面(malloc 的 PLT 条目)。但也许只是一个指向静态缓冲区的指针(可能是只读缓冲区,如字符串文字)。
所以也许void *edx = "hello world";
或void *edx = &some_function
,然后以某种方式使用它。 C 语句不会映射到单个 asm 指令,但对于未优化的输出 (gcc -O0
),每个 C 语句确实会映射到一个连续的指令 block ,该指令 block 以内存中的所有值结束。 (这意味着您可以使用调试器修改 C 变量,并且仍然可以在未优化的代码中“工作”。)
我没有追踪看起来像未优化代码的存储/重新加载的困惑,所以我不确定在 mov- 之后的下一条指令中将该值存储到内存中之后到底做了什么立即。
如果您有源代码,请查看编译器的 asm 输出(gcc -S
而不是一直编译为二进制文件然后反汇编),或者使用 objdump -drwC -Mintel
获取该值的重定位信息(如果有)。或者使用nm
在符号表中查找它。
如果它是函数指针,则该地址的反汇编应该有意义。
关于c - GDB disass main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47748323/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我是一名优秀的程序员,十分优秀!