首页
社区
课程
招聘
求教:双进程Armadillo 3.78脱壳遇到的问题
发表于: 2006-3-1 09:12 3705

求教:双进程Armadillo 3.78脱壳遇到的问题

2006-3-1 09:12
3705
Peid测壳为:Armadillo 3.78
按论坛教程方法:
插件隐藏OD,BP OpenMutexA,401000处新建起源,改代码,
00401000     60                 pushad
00401001     9C                 pushfd
00401002     68 B8DD1200        push 12DDB8   --->堆栈中看到的值
00401007     33C0               xor eax,eax
00401009     50                 push eax
0040100A     50                 push eax
0040100B     E8 2FDB407C        call kernel32.CreateMutexA
00401010     9D                 popfd
00401011     61                 popad
00401012   - E9 04DC407C        jmp kernel32.OpenMutexA
再次中断后撤消刚才修改,
he GetModuleHandleA+5,多次后返回到这,我认为已经找到Magic Jump,如下:
00AF9900     8B0D 0881B200      mov ecx,dword ptr ds:[B28108]
00AF9906     89040E             mov dword ptr ds:[esi+ecx],eax
00AF9909     A1 0881B200        mov eax,dword ptr ds:[B28108]
00AF990E     393C06             cmp dword ptr ds:[esi+eax],edi
00AF9911     75 16              jnz short 00AF9929
00AF9913     8D85 B4FEFFFF      lea eax,dword ptr ss:[ebp-14C]
00AF9919     50                 push eax
00AF991A     FF15 D4D0B100      call near dword ptr ds:[B1D0D4]   ; kernel32.LoadLibraryA
00AF9920     8B0D 0881B200      mov ecx,dword ptr ds:[B28108]
00AF9926     89040E             mov dword ptr ds:[esi+ecx],eax
00AF9929     A1 0881B200        mov eax,dword ptr ds:[B28108]
00AF992E     393C06             cmp dword ptr ds:[esi+eax],edi
00AF9931   - 0F84 AD000090      je 90AF99E4   --->Magic Jump,改JMP

取消断点,bp GetCurrentThreadId,SHIFT + F9继续运行,没有到达预期的程序入口。到这程序退出:
00B1468A     8B04B0             mov eax,dword ptr ds:[eax+esi*4]   --->程序出现异常,退出
00B1468D     3341 3C            xor eax,dword ptr ds:[ecx+3C]
00B14690     8B0D 78C5B200      mov ecx,dword ptr ds:[B2C578]
00B14696     3341 44            xor eax,dword ptr ds:[ecx+44]
数据窗口显示:ds:[00000020]=???  eax=00000000

请指点是什么原因?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
双进程?
CopyMem-II吧
2006-3-1 09:24
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
3
确实双进程,但不知是不是CopyMem-II。请问如何判断?
论坛有相似教程吗?我也是按教程脱的,但在这一步就是过不去。请推荐一篇最相似的文章。
2006-3-1 10:31
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
CopyMem-II 作为关键字论坛内搜索一下
2006-3-1 10:39
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
看了几篇脱壳文章,不知我的理解对不对:
Armadillo 3.78 标准壳好像解开双进程和跳过Magic Jump就可以直接在OEP处Dump,修复IAT即可,一次完成脱壳。
CopyMem-II 好像Dump和修复分两次完成,不能直接剥离子进程然后Dump和修复IAT?看得有电晕。
2006-3-1 19:32
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
脱这个程序有一下几个比较重要的步骤
1、堆栈中找到OEP!
2、patch代码并在合适的部位dump!
3、把dump出的程序用LORDPE修正其OEP
4、通过OD载入dump确定IAT表的启示位置!
5、附加进程找到并修改magic jmp!
6、让程序跑飞!及出现异常无法执行不管它,因为此时IAT已经全部清晰!
7、此时利用4步骤找的IAT的位置使用ImportREC找到IAT表剪切无效指针!修复dump文件!
8、执行修复文件,发现脱壳成功!
2006-3-2 14:20
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
7
谢谢,解释的很清楚,好好学习。
2006-3-2 22:48
0
游客
登录 | 注册 方可回帖
返回
//