用OllyDbg脱ASPR 1.3x的壳
2007-01-13 20:12:43 来源:WEB开发网核心提示: Stolen_Bytes_1Stolen_Bytes_2Stolen_Bytes_3PUSH EBXPUSH ESIPUSH EDI..................REPZ STOSB 〈-还原字节POPFDPOPADJMP_TO_OEP3. 没有抽掉的字节时,只执行PopAD指令和跳
Stolen_Bytes_1
Stolen_Bytes_2
Stolen_Bytes_3
PUSH EBX
PUSH ESI
PUSH EDI
......
......
......
REPZ STOSB 〈-还原字节
POPFD
POPAD
JMP_TO_OEP
3. 没有抽掉的字节时,只执行PopAD指令和跳转到OEP。
那么我们怎么处理它呢?
看看ASPR在跳转到OEP前的最后几步是什么。这需要查看跟踪日记。
太好了!Olly可以使用"Run Trace"功能来得到一个 跟踪日记。
这样…选择菜单: View->Run trace
现在我们看见一个新窗口…跳转到最后一行的前一行,你会看到CPU窗口也变为同样的地址,象下面这样:
017F5779 F3:AA REP STOS BYTE PTR ES:[EDI]
017F577B 9D POPFD
017F577C 61 POPAD
017F577D -E9 D992D8FE JMP SYSTEMCL.0057EA5B 〈-OEP的地址
我们用第二种方法对付它!!
上面的内容我是在 winXP下发现的,不是 win98::
在CPU窗口里按 Ctrl+S(搜索命令的次序)
写入下面的:
PUSH EBX
PUSH ESI
PUSH EDI
你会发现:
01029227 0055 8B ADD BYTE PTR SS:[EBP-75],DL
0102922A EC IN AL,DX ; I/O命令
0102922B 83EC 54 SUB ESP,54
0102922E 53 PUSH EBX
0102922F 56 PUSH ESI
01029230 57 PUSH EDI
01029231 6A 11 PUSH 11
忽略 "00",你会找到抽掉的字节:55,8b,ec,83,ec,54
更多精彩
赞助商链接