拉登o睡觉 发表于 2012-10-25 19:03:14

关于函数指针的反汇编 求解???

int main()
{
      void (int *p)()=show;//show 是已经定义过的函数
   p();

}
部分反汇编源码:
mov dword ptr ,offset @ILT+20(show)
Mov eax,dword ptr
mov dword ptr,eax

为什么要这样啊,用mov换来换去 给没换有什么区别啊 直接只要第一句为什么不行啊???

玩酷子弟lv 发表于 2012-10-25 22:29:37

只看这几句看不出来,可能下面这个地址会有用,下面有没有CALL EAX这句哪?或者
这个作为返回值?

丿夏夜灬彬刂 发表于 2012-10-25 22:33:43

:shutup:还没学汇编了

拉登o睡觉 发表于 2012-10-26 16:52:26

玩酷子弟lv 发表于 2012-10-25 22:29 static/image/common/back.gif
只看这几句看不出来,可能下面这个地址会有用,下面有没有CALL EAX这句哪?或者
这个作为返回值?

没有哦即使用到 为什么不能直接用第一句话 调用呢

090704020006 发表于 2012-10-26 22:39:52

拉登o睡觉 发表于 2012-10-26 16:52 static/image/common/back.gif
没有哦即使用到 为什么不能直接用第一句话 调用呢

如果我没猜错的话,你想要第一句也行,你尝试下把p();这句代码删除试试,看看是不是只有第一句汇编代码了,我估计p()对应的汇编代码就是第二和第三句吧,我不知道我说的对不对,你上机试试吧,然后告诉我结果。谢谢了

青云 发表于 2012-10-26 22:52:16

void (int *p)()=show; //这是什么意思啊? 我这里编译不过这句啊...
试了试void (*p)()=show;和void (*p)(int (*)())=show;   都没出现lz发的那三行汇编啊...

拉登o睡觉 发表于 2012-10-27 08:52:51

090704020006 发表于 2012-10-26 22:39 static/image/common/back.gif
如果我没猜错的话,你想要第一句也行,你尝试下把p();这句代码删除试试,看看是不是只有第一句汇编代码了 ...

p() 对应的是call 那个地址 我没有写完

拉登o睡觉 发表于 2012-10-27 08:54:17

青云 发表于 2012-10-26 22:52 static/image/common/back.gif
void (int *p)()=show; //这是什么意思啊? 我这里编译不过这句啊...
试了试void (*p)()=show;和void (*p) ...

这是c++反汇编与逆向分析 那本书上的例子 我没搞懂 拿来请叫一下大家??

阔怀 发表于 2015-8-27 16:09:03

看看
页: [1]
查看完整版本: 关于函数指针的反汇编 求解???