首页
社区
课程
招聘
脱arm壳,用GetModuleHandleA做硬件断点的返回时机究竟是怎么确定的??
发表于: 2007-3-26 16:26 4540

脱arm壳,用GetModuleHandleA做硬件断点的返回时机究竟是怎么确定的??

2007-3-26 16:26
4540
很多文章中提到用He GetModuleHandleA下断点,然后看堆栈的情况,在某个时候返回。可是我始终不明白是什么时候返回的,有的说看时间缓冲,有的说看ASC2的是不是virtualfree等等。这些都没有说明是什么原理和原因进行的返回,搞的一头雾水。请高手解释一下。

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
论坛里己有许多文章,如:
http://bbs.pediy.com/showthread.php?threadid=14753

常见的:
00BB6798    FF15 C860BD00   call    dword ptr [BD60C8]               ; kernel32.GetModuleHandleA,中断后你就返回壳中看看
00BB679E    8B0D 1C42BE00   mov     ecx, dword ptr [BE421C]
00BB67A4    89040E          mov     dword ptr [esi+ecx], eax
00BB67A7    A1 1C42BE00     mov     eax, dword ptr [BE421C]
00BB67AC    391C06          cmp     dword ptr [esi+eax], ebx
00BB67AF    75 16           jnz     short 00BB67C7
00BB67B1    8D85 B4FEFFFF   lea     eax, dword ptr [ebp-14C]
00BB67B7    50              push    eax
00BB67B8    FF15 9060BD00   call    dword ptr [BD6090]               ; kernel32.LoadLibraryA//注意这个LoadLibraryA标记
00BB67BE    8B0D 1C42BE00   mov     ecx, dword ptr [BE421C]
00BB67C4    89040E          mov     dword ptr [esi+ecx], eax
00BB67C7    A1 1C42BE00     mov     eax, dword ptr [BE421C]
00BB67CC    391C06          cmp     dword ptr [esi+eax], ebx
00BB67CF    0F84 2F010000   je      00BB6904                     //一个长跳转,Magic Jump
2007-3-26 16:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
明白了,继续研究。
另外问一个,返回程序空间,用alt+F9不好么?为什么都用ctrl+f9 ??
2007-3-26 17:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
按照论坛的帖子找到magic jump 和oep了,但是当我用BP GetCurrentThreadId下断点,找oep的中断,用ctrl+F9返回后,找到call edi这行,无论是我用F7跟进去,还是直接F9让程序继续运行,都会出错。我试了很多次了,不改magic jump也是一样。如果不返回,就可以,但是后面的中断就再找不到这个call edi了。
请高手再指点一下啊。我这个壳是arm 3.5a单进程标准保护的,应该很简单才对。
2007-3-27 16:28
0
游客
登录 | 注册 方可回帖
返回
//