首页
社区
课程
招聘
[求助]指令相同执行结果不同
发表于: 2014-12-13 11:11 3456

[求助]指令相同执行结果不同

2014-12-13 11:11
3456
用C32Asm打开某DLL发现代码:
::10026C30::  68 E8030000              PUSH 3E8                                
::10026C35::  FF15 40100010            CALL [10001040]                             >>>: KERNEL32.DLL:Sleep
意思是Sleep一秒。

于是我在空白处加入如下代码:
::1002A189::  68 10270000              PUSH 2710                               \:BYJMP JmpBy:10026FBF,
::1002A18E::  FF15 40100010            CALL [10001040]                             >>>: KERNEL32.DLL:Sleep
这里新加的代码,我想Sleep十秒。保存后运行程序,程序崩溃。

用OD打开我改写过的DLL。
10026C30处被解释成这样:
61EC6C30  |.  68 E8030000        |push 0x3E8                              ; /Timeout = 1000. ms
61EC6C35  |.  FF15 4010EA61      |call dword ptr ds:[<&KERNEL32.Sleep>]   ; \Sleep
而我自己新加的1002A189处是这样:
61ECA189      68 10270000        push 0x2710
61ECA18E      FF15 40100010      call dword ptr ds:[0x10001040]
对比发现原程序CALL地址被转换成FF15 4010EA61,而自己填加的CALL没有转换,还是FF15 40100010。我考虑FF15 4010EA61里面的EA61是程序的基地址。

为什么一模一样的汇编代码,一个在OD里可以自动转换加上基地址,一个不可以?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 166
活跃值: (1397)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
重定位???
2014-12-13 12:13
0
雪    币: 817
活跃值: (2073)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对于dll来说,输入表重定位那是必须的。
2014-12-13 13:08
0
游客
登录 | 注册 方可回帖
返回
//