首页
社区
课程
招聘
[求助]CopyMem-II,Armadillo V4.X CopyMem-II脱壳
发表于: 2009-5-21 11:04 2358

[求助]CopyMem-II,Armadillo V4.X CopyMem-II脱壳

2009-5-21 11:04
2358
试着学习脱Armadillo的壳
(CopyMem-II,Armadillo V4.X CopyMem-II脱壳 -魔法转换(Magic Converter) V4.0正式版)

按照FLY大侠文字和Reg killer录像对着来脱,到下面解压完毕,可以用LORDPE去Dump 子进程,但是LORDPE 提示无法抓取内存,但是大侠的录像和文字显示都可以抓取,即是选择修正了内存大小选项后,也无法抓取内存。

请大侠指点一二。

附无法抓取的内存的代码位置:(原大侠的代码现在不在手)

先找oep,在OD中重开程序,下bp WaitForDebugEvent,F9运行

77E7A6CF K> 55             push ebp   //来到这里,F2清除断点
77E7A6D0   8BEC           mov ebp,esp
77E7A6D2   81EC 9C000000     sub esp,9C
77E7A6D8   53             push ebx
77E7A6D9   56             push esi
77E7A6DA   57             push edi

看堆栈窗口

0012DA98   0046AD67 /CALL 到 WaitForDebugEvent 来自 按键精灵.0046AD61
0012DA9C   0012EB5C |pDebugEvent = 0012EB5C
0012DAA0   000003E8 \Timeout = 1000. ms

在0012EB5C上下转存中跟随

在下bp WriteProcessMemory,F9运行

77E7ADB9 K> 55             push ebp   //来到这里
77E7ADBA   8BEC           mov ebp,esp
77E7ADBC   51             push ecx
77E7ADBD   51             push ecx
77E7ADBE   8B45 0C         mov eax,dword ptr ss:[ebp+C]
77E7ADC1   53             push ebx
77E7ADC2   8945 F8         mov dword ptr ss:[ebp-8],eax

看数据转存窗口

0012EB5C 01 00 00 00 68 03 00 00 ...h..
0012EB64 C4 00 00 00 01 00 00 80 ?....€
0012EB6C 00 00 00 00 00 00 00 00 ........
0012EB74 00 CC 43 00 02 00 00 00 .藽.... //大家看到没有43CC00就是OEP

再在OD中重开程序,下硬件断点:he WaitForDebugEvent,运行停住。回到壳空间,查找常数FFFFFFF8,得到结果:

0046B3D6   OR EAX, FFFFFFF8
0046B3F1   OR EDX, FFFFFFF8
0046B41A   OR ECX, FFFFFFF8
0046B8F0   OR EDX, FFFFFFF8
0046B90B   OR ECX, FFFFFFF8
0046B933   OR EAX, FFFFFFF8

在0046B3D6上双击,来到这代码处,朝上几行看:

0046B38A   83BD D0F5FFFF 00   cmp dword ptr ss:[ebp-A30],0 //这就是tDasm大侠文中提到的关键代码。

0046B391   0F8C A9020000     jl 按键精灵.0046B640
0046B397   8B8D D0F5FFFF     mov ecx,dword ptr ss:[ebp-A30]
0046B39D   3B0D E4B54900     cmp ecx,dword ptr ds:[49B5E4]
0046B3A3   0F8D 97020000     jge 按键精灵.0046B640
0046B3A9   8B95 44F6FFFF     mov edx,dword ptr ss:[ebp-9BC]
0046B3AF   81E2 FF000000     and edx,0FF
0046B3B5   85D2           test edx,edx
0046B3B7   0F84 AD000000     je 按键精灵.0046B46A
0046B3BD   6A 00           push 0
0046B3BF   8BB5 D0F5FFFF     mov esi,dword ptr ss:[ebp-A30]
0046B3C5   C1E6 04         shl esi,4
0046B3C8   8B85 D0F5FFFF     mov eax,dword ptr ss:[ebp-A30]
0046B3CE   25 07000080       and eax,80000007
0046B3D3   79 05           jns short 按键精灵.0046B3DA
0046B3D5   48             dec eax
0046B3D6   83C8 F8         or eax,FFFFFFF8           //断在这里向上看
0046B3D9   40             inc eax
0046B3DA   33C9           xor ecx,ecx
0046B3DC   8A88 809A4900     mov cl,byte ptr ds:[eax+499A80]
0046B3E2   8B95 D0F5FFFF     mov edx,dword ptr ss:[ebp-A30]
0046B3E8   81E2 07000080     and edx,80000007
0046B3EE   79 05           jns short 按键精灵.0046B3F5
0046B3F0   4A             dec edx
0046B3F1   83CA F8         or edx,FFFFFFF8
0046B3F4   42             inc edx
0046B3F5   33C0           xor eax,eax
0046B3F7   8A82 819A4900     mov al,byte ptr ds:[edx+499A81]
0046B3FD   8B3C8D 60524900     mov edi,dword ptr ds:[ecx*4+495260]
0046B404   333C85 60524900     xor edi,dword ptr ds:[eax*4+495260]
0046B40B   8B8D D0F5FFFF     mov ecx,dword ptr ss:[ebp-A30]
0046B411   81E1 07000080     and ecx,80000007
0046B417   79 05           jns short 按键精灵.0046B41E
0046B419   49             dec ecx
0046B41A   83C9 F8         or ecx,FFFFFFF8
0046B41D   41             inc ecx
0046B41E   33D2           xor edx,edx
0046B420   8A91 829A4900     mov dl,byte ptr ds:[ecx+499A82]
0046B426   333C95 60524900     xor edi,dword ptr ds:[edx*4+495260]
0046B42D   8B85 D0F5FFFF     mov eax,dword ptr ss:[ebp-A30]
0046B433   99             cdq
0046B434   B9 1C000000       mov ecx,1C
0046B439   F7F9           idiv ecx
0046B43B   8BCA           mov ecx,edx
0046B43D   D3EF           shr edi,cl
0046B43F   83E7 0F         and edi,0F
0046B442   03F7           add esi,edi
0046B444   8B15 D4B54900     mov edx,dword ptr ds:[49B5D4]
0046B44A   8D04B2           lea eax,dword ptr ds:[edx+esi*4]
0046B44D   50             push eax
0046B44E   8B8D D0F5FFFF     mov ecx,dword ptr ss:[ebp-A30]
0046B454   51             push ecx
0046B455   E8 FF1F0000       call 按键精灵.0046D459
0046B45A   83C4 0C         add esp,0C
0046B45D   25 FF000000       and eax,0FF         《--- 修改此处
0046B462   85C0           test eax,eax

在0046B38A处下一硬件执行断点,运行停住。 按照tDasm的方法,修改代码为:

0046B45D   FF05 48EB1200     inc dword ptr ds:[12EB48]
0046B463   C705 E8B54900 010000>mov dword ptr ds:[49B5E8],1
0046B46D   ^ E9 18FFFFFF       jmp 按键精灵.0046B38A

把12EB48处置0,去掉所有硬件断点,并在0046b640处下断,运行,停住。好,所有代码都强制解压完成。

运行LordPE,选择第2个进程(有2个同名进程),即可完全dump出来了

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 58782
活跃值: (21961)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
OD里,Alt+M,目标程序相应的区块上,右键 设置访问/所有访问
2009-5-21 21:13
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢版主指点。是为好方法。
而是这次双进程试过未见效,估计是国外的防火墙设计的牛,影响脱壳,卸载后DUMP成功。
2009-5-21 22:53
0
雪    币: 338
活跃值: (100)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
脱壳时,尤其是对穿山甲这种猛壳,最好不要开启杀毒软件的监视功能,或者干脆卸载不用,比如瑞星,对Trial-Reset的注册表操作特别敏感
2009-5-23 21:30
0
游客
登录 | 注册 方可回帖
返回