鱼C论坛

 找回密码
 立即注册
查看: 2806|回复: 8

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

[复制链接]
发表于 2012-10-25 19:03:14 | 显示全部楼层 |阅读模式
1鱼币
int main()
{
      void (int *p)()=show;//show 是已经定义过的函数
     p();

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-10-25 22:29:37 | 显示全部楼层
只看这几句看不出来,可能下面这个地址会有用,下面有没有CALL EAX这句哪?或者
这个作为返回值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-10-25 22:33:43 | 显示全部楼层
:shutup:还没学汇编了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-26 16:52:26 | 显示全部楼层

没有哦  即使用到 为什么不能直接用第一句话 调用呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-10-26 22:39:52 | 显示全部楼层
拉登o睡觉 发表于 2012-10-26 16:52
没有哦  即使用到 为什么不能直接用第一句话 调用呢

如果我没猜错的话,你想要第一句也行,你尝试下把p();这句代码删除试试,看看是不是只有第一句汇编代码了,我估计p()对应的汇编代码就是第二和第三句吧,我不知道我说的对不对,你上机试试吧,然后告诉我结果。谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-10-26 22:52:16 | 显示全部楼层
void (int *p)()=show; //这是什么意思啊? 我这里编译不过这句啊...
试了试void (*p)()=show;和void (*p)(int (*)())=show;   都没出现lz发的那三行汇编啊...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-27 08:52:51 | 显示全部楼层
090704020006 发表于 2012-10-26 22:39
如果我没猜错的话,你想要第一句也行,你尝试下把p();这句代码删除试试,看看是不是只有第一句汇编代码了 ...

p() 对应的是call 那个地址 我没有写完  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-27 08:54:17 | 显示全部楼层
青云 发表于 2012-10-26 22:52
void (int *p)()=show; //这是什么意思啊? 我这里编译不过这句啊...
试了试void (*p)()=show;和void (*p) ...

这是c++反汇编与逆向分析 那本书上的例子 我没搞懂 拿来请叫一下大家??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-27 16:09:03 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 10:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表