首页
社区
课程
招聘
[求助]用汇编实现ExitThread(0)语句的问题!
发表于: 2007-8-6 11:48 5206

[求助]用汇编实现ExitThread(0)语句的问题!

2007-8-6 11:48
5206
可否给个思路啊!我用VSS编写后调试反汇编,不同的地方不汇编代码居然不一样,汇编代码中一共有两个CALL指令,两处代码的CALL指令后的操作数都不一样,是怎么回事啊?高人可否帮忙解释一下。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
两处代码的Call指令后的操作数都不一样?什么意思???你是说这两Call都Call同一个函数,但机器码不一样?如果是这样,那是正常的,Call指令后的机器码是Call函数的偏移地址,Call在不同的位置,偏移地址自然也就不会相同,虽然是Call同一个函数
2007-8-6 12:07
0
雪    币: 80
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
那么如果我想在别人写的DLL链接库内,加入一段汇编指令以达到调用ExitThread(0)的效果的话,那CALL后面的操作数是怎么算出来的呢?
2007-8-6 17:56
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
最简单的方法是你可以先在OD里修改,然后记下机器码,再在程序里将这些机器码修改即可。
2007-8-6 18:34
0
雪    币: 80
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
您讲的我有点不太懂,OD没有接触过。可否讲详细一些啊?在OD里修改什么啊?

另外,我在visual studio 2005中,用Release模式编译后反汇编调试,发现如果调用ExitThread(0),反汇编就两条汇指令,第一条pop指令把0这个参数作为立即数压入栈,第二条就是call指令,用单步执行,进行到call指令后就直接跳转到kernel.dll的代码里的某一段了。我很纳闷的是,call指令位于地址400000几的,大概是这个量级,call指令后的参数也是400000几的这个量级,怎么执行以后一下子就跳到700000几的代码里了啊?这个跳转地址是怎么算出来的实在不明白。

如果用Debug模式编译,则ExitThread(0)反汇编出来后,除了pop和call指令外又多了三条指令,当然现在已经证明这三条指令是不需要的了。
2007-8-10 16:32
0
游客
登录 | 注册 方可回帖
返回
//