首页
社区
课程
招聘
[求助]穿山甲壳的一些困惑。
发表于: 2011-8-15 02:51 7613

[求助]穿山甲壳的一些困惑。

2011-8-15 02:51
7613
这几天新买了一个苹果机,想往里面传点电子书,找到了一个电子书制作软件,epubBuilder。
软件是免费的,但是必须定期强制更新,很烦,打算过掉。
PEID查了一下
Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks
双进程,
看了RegKiller 的穿山甲教程以后 拉开工具就开干。

下面是脱壳过程。

00AABC43 >/$  55            push ebp
00AABC44  |.  8BEC          mov ebp,esp
00AABC46  |.  6A FF         push -1
00AABC48  |.  68 904FAD00   push epubBuil.00AD4F90
00AABC4D  |.  68 80B9AA00   push epubBuil.00AAB980                   ;  SE 处理程序安装
00AABC52  |.  64:A1 0000000>mov eax,dword ptr fs:[0]
00AABC58  |.  50            push eax
00AABC59  |.  64:8925 00000>mov dword ptr fs:[0],esp
00AABC60  |.  83EC 58       sub esp,58
00AABC63  |.  53            push ebx
00AABC64  |.  56            push esi

开头是00A  根据某个大佬的意见,等下分离进程的时候要用到

下bp OpenMutexA

断在
7C80EABB >  8BFF            mov edi,edi                              ; ntdll.7C930228
7C80EABD    55              push ebp
7C80EABE    8BEC            mov ebp,esp
7C80EAC0    51              push ecx
7C80EAC1    51              push ecx
7C80EAC2    837D 10 00      cmp dword ptr ss:[ebp+10],0
7C80EAC6    56              push esi
7C80EAC7    0F84 A7550300   je kernel32.7C844074
7C80EACD    64:A1 18000000  mov eax,dword ptr fs:[18]

跳到00A01000  记下堆栈里的数据

0012F7A4   0012FDD8  \MutexName = "E8::DA08782BAD"

然后修改
00A01000    60              pushad
00A01001    9C              pushfd
00A01002    68 D8FD1200     push 12FDD8                              ; ASCII "E8::DA08782BAD"
00A01007    33C0            xor eax,eax
00A01009    50              push eax
00A0100A    50              push eax
00A0100B    E8 CFD9E07B     call kernel32.CreateMutexA
00A01010    9D              popfd
00A01011    61              popad
00A01012  - E9 A4DAE07B     jmp kernel32.OpenMutexA
00A01017    90              nop

对PUSHAD 新建EIP

F9
然后删除断点  返回到00A01000
撤销修改
分离父子进程完毕。

然后是魔法跳

下硬断后
多次F9
来到
00129528   01877122  /CALL 到 GetModuleHandleA 来自 0187711C
0012952C   0188BC1C  \pModule = "kernel32.dll"
00129530   0188CEB8  ASCII "VirtualFree"

再一次,F9  返回···

01865FDA   /75 16           jnz short 01865FF2
01865FDC   |8D85 B4FEFFFF   lea eax,dword ptr ss:[ebp-14C]
01865FE2   |50              push eax
01865FE3   |FF15 BC628801   call dword ptr ds:[18862BC]              ; kernel32.LoadLibraryA
01865FE9   |8B0D AC408901   mov ecx,dword ptr ds:[18940AC]
01865FEF   |89040E          mov dword ptr ds:[esi+ecx],eax
01865FF2   \A1 AC408901     mov eax,dword ptr ds:[18940AC]
01865FF7    391C06          cmp dword ptr ds:[esi+eax],ebx
01865FFA    0F84 2F010000   je 0186612F       /////魔法跳  修改成JMP
01866000    33C9            xor ecx,ecx
01866002    8B07            mov eax,dword ptr ds:[edi]
01866004    3918            cmp dword ptr ds:[eax],ebx
01866006    74 06           je short 0186600E

修改后,清除硬件断点

然后就是寻找入口点了,这也是我困惑的地方
首先
bp GetCurrentThreadId
F9

REG的原话是“这里说下我判断返回的经验,我的经验是 00C060E6 跟上面跨段很大。前面都是7开头的,而这个是00C 开始的。”

然后我这边的情况是

堆栈一开始是
00128B4C   73391E46  /CALL 到 GetCurrentThreadId 来自 msvbvm60.73391E40

多次F9后 突然就是
00128DD8   4AF09A8A  /CALL 到 GetCurrentThreadId 来自 GdiPlus.4AF09A84

我个人觉得这里跨度也是蛮大的,果断返回,
4AF09A8A    33F0            xor esi,eax
4AF09A8C    FF15 F411E94A   call dword ptr ds:[<&KERNEL32.GetTickCou>; kernel32.GetTickCount
4AF09A92    33F0            xor esi,eax
4AF09A94    8D45 F0         lea eax,dword ptr ss:[ebp-10]
4AF09A97    50              push eax
4AF09A98    FF15 3C11E94A   call dword ptr ds:[<&KERNEL32.QueryPerfo>; kernel32.QueryPerformanceCounter
4AF09A9E    8B45 F4         mov eax,dword ptr ss:[ebp-C]

就到这里了
和REG大大说的
00C060EC    50              PUSH EAX                                 ; 返回到这里。我们F8单步向下下走
00C060ED    FF75 FC         PUSH DWORD PTR SS:[EBP-4]
00C060F0    E8 05000000     CALL 00C060FA
00C060F5    83C4 0C         ADD ESP,0C
00C060F8    C9              LEAVE
00C060F9    C3              RETN  
有很大区别,
整个脱壳过程到这里就无法继续下去了,希望对穿山甲有研究的大大们指教一下。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 414
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这里bp CreateThread试试~或者直接到内存映射对代码段下断~运行之前记得把magic跳改回去~
2011-8-15 04:32
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有程序嗎,來玩看看。
2011-8-15 09:14
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
用脚本
2011-9-23 22:08
0
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
能把东西发上来看下么?
2011-10-6 11:44
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
为何不试试脱壳机呢
2011-10-19 16:38
0
游客
登录 | 注册 方可回帖
返回
//