岁月联盟 - 技术社区 - BBS.SYUE.COM's Archiver

猪猪 发表于 2007-4-25 19:50

Armadillo3.60 加壳的EXE文件脱壳全过程

文章来源:黑海文库

【目标软件】WINME下的记事本

【加壳方式】Armadillo3.60 CopyMem-ll +Debug-Blocker

【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6F

1.前言

  为了练习脱壳,前一段时间从网上下了一个Armadillo3.60,然后给记事本加壳,当然本人初学破解,参考了很多大虾们的文章,然后自己模仿脱壳,可是当我修改了Magic Jump后,用401000段“内存断点”大法想到达那个盼望已久的OEP的时候,意外出现了:程序终止,退出!是我做法错误,然后我又实验了N遍,依然如此,为什么?随后又在论坛不停的搜索着,想找一些有关的知识,终于找到了(抱歉,忘记了作者是谁),而且解决了这个问题,为了使象我一样初学者不要重蹈覆辙,我决定详细的写一写,也许你认为很简单,那么请略过。

2.脱壳过程(分以下几步进行)

设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。

(1)查找OEP

用OD中载入程序,下bp WaitForDebugEvent,F9运行,中断如下:

77E93A07 k> 55 push ebp       <====中断在此处,清除断点
77E93A08 8BEC mov ebp,esp
77E93A0A 83EC 68 sub esp,68
77E93A0D 56 push esi
77E93A0E FF75 0C push dword ptr ss:[ebp+C]

查看堆栈窗口:

0012DAC0 00423D67 /CALL 到 WaitForDebugEvent 来自 NOTEPAD.00423D61
0012DAC4 0012EB84 |pDebugEvent = 0012EB84 <====注意这里
0012DAC8 000003E8 \Timeout = 1000. ms


在0012EB84所在的行上点击右键选“转存中跟随”。

然后再下bp WriteProcessMemory,F9运行

77E41A90 k> 55 push ebp   <====中断在此处
77E41A91 8BEC mov ebp,esp
77E41A93 51 push ecx
77E41A94 51 push ecx
77E41A95 8B45 0C mov eax,dword ptr ss:[ebp+C]

看数据转存窗口:

0012EB84 01 00 00 00 40 07 00 00 ...@..
0012EB8C 5C 01 00 00 01 00 00 80 \....

明少 发表于 2008-2-11 10:38

我脱壳时程序走到CALL这在向下走!~!~ 程序就终止了!~

magic659117852 发表于 2008-2-26 12:38

穿山甲不是那么容易的哦

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.