再请教一段反汇编代码

knddlsrz 2017-11-06 09:55:59
push ebp # 0005 _ 55
mov ebp, esp # 0006 _ 89. E5
sub esp, 104 # 0008 _ 83. EC, 68
mov eax, dword [ebp+0x10] # 000B _ 8B. 45, 10
mov edx, dword [ebp+0x1C] # 000E _ 8B. 55, 1C
mov ecx, dword [ebp+0x20] # 0011 _ 8B. 4D, 20
mov word [ebp-0x44], ax # 0014 _ 66: 89. 45, BC
mov word [ebp-0x48], dx # 0018 _ 66: 89. 55, B8
mov word [ebp-0x4C], cx # 001C _ 66: 89. 4D, B4
mov eax, offset aaaaaa+0x274 # 0020 _ B8, 00000274(d)
mov edx, dword [eax+0x14] # 0025 _ 8B. 50, 14
lea eax, [ebp-0x8] # 0028 _ 8D. 45, F8
mov dword [esp+0xC], eax # 002B _ 89. 44 24, 0C
mov dword [esp+0x8], 12 # 002F _ C7. 44 24, 08, 0000000C
mov dword [esp+0x4], 0 # 0037 _ C7. 44 24, 04, 00000000
mov dword [esp], 0 # 003F _ C7. 04 24, 00000000
call edx # 0046 _ FF. D2
这是一个函数的前面一部分,这里面的 call edx是个什么用法?看起来好像和那个aaaaaa有关系,可是没搞明白这是一种什么样的调用方式,如何去寻找这个call的函数到底是什么?
...全文
483 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
linux可以用gdb调试,静态分析不知道call edx时edx的值,也就不知道调用的函数在哪里了。或者你可以用IDA Pro试试,这个反汇编更高级一些。
knddlsrz 2017-11-09
  • 打赏
  • 举报
回复
引用 1 楼 DelphiGuy 的回复:
最好调试一下,断点在call edx这就知道位置了。
调试不了,不是pc的平台. 这段在汇编应该怎么写呢?
  • 打赏
  • 举报
回复
就在寄存器里装入地址,然后call寄存器就可以了。 比如: lea eax proc1 call eax ... proc1: push ebp ... ret
knddlsrz 2017-11-09
  • 打赏
  • 举报
回复
引用 4 楼 DelphiGuy 的回复:
linux可以用gdb调试,静态分析不知道call edx时edx的值,也就不知道调用的函数在哪里了。或者你可以用IDA Pro试试,这个反汇编更高级一些。
我大概知道这是个系统内置的函数,不过这种调用方法我不太理解。搜了半天有点像虚函数表似的,但这个应该是C而不是C++的。 我最想知道的就是应该怎么在汇编里写做同样的调用。
  • 打赏
  • 举报
回复
最好调试一下,断点在call edx这就知道位置了。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧