首页
社区
课程
招聘
穿山甲壳,求脱壳步骤
发表于: 2011-1-15 13:18 4467

穿山甲壳,求脱壳步骤

2011-1-15 13:18
4467
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你先斷在GetModuleHandleA
/*7C80B736*/  cmp dword ptr ss:[ebp+8],0
/*7C80B73A*/  je short 7C80B754
/*7C80B73C*/  push dword ptr ss:[ebp+8]
我是都斷在je short 7C80B754這個地方
然後看堆棧,直到出現VirtualAlloc,在一次F9應該是Virtual Free,在一次就會沒有標誌,到這裡之後按alt+F9

你應該會到一個類似

/*119F457*/  call dword ptr ds:[124B090]
/*119F45D*/  mov edx,dword ptr ss:[ebp-8]
/*119F460*/  mov ecx,dword ptr ds:[1272C0C]
/*119F466*/  mov dword ptr ds:[ecx+edx*4],eax
/*119F469*/  mov edx,dword ptr ss:[ebp-8]
/*119F46C*/  mov eax,dword ptr ds:[1272C0C]
/*119F471*/  cmp dword ptr ds:[eax+edx*4],0
/*119F475*/  jnz short 0119F4D6
/*119F477*/  mov ecx,dword ptr ss:[ebp-4]
/*119F47A*/  mov edx,dword ptr ds:[ecx+8]
/*119F47D*/  and edx,2
/*119F480*/  je short 0119F4BD
/*119F482*/  mov eax,9
/*119F487*/  shl eax,2
/*119F48A*/  mov ecx,dword ptr ds:[126FF4C]
/*119F490*/  mov edx,dword ptr ds:[126FF4C]
/*119F496*/  mov esi,dword ptr ds:[126FF4C]
/*119F49C*/  mov ebx,dword ptr ds:[esi+10]
/*119F49F*/  xor ebx,dword ptr ds:[edx+88]
/*119F4A5*/  xor ebx,dword ptr ds:[ecx+eax]
/*119F4A8*/  and ebx,10
/*119F4AB*/  neg ebx
/*119F4AD*/  sbb ebx,ebx
/*119F4AF*/  neg ebx
/*119F4B1*/  movzx eax,bl
/*119F4B4*/  test eax,eax
/*119F4B6*/  jnz short 0119F4BD
/*119F4B8*/  jmp 0119F3D2
/*119F4BD*/  lea ecx,dword ptr ss:[ebp-110]
/*119F4C3*/  push ecx
/*119F4C4*/  call dword ptr ds:[124B098]
/*119F4CA*/  mov edx,dword ptr ss:[ebp-8]
/*119F4CD*/  mov ecx,dword ptr ds:[1272C0C]
/*119F4D3*/  mov dword ptr ds:[ecx+edx*4],eax
/*119F4D6*/  mov edx,dword ptr ss:[ebp-8]
/*119F4D9*/  mov eax,dword ptr ds:[1272C0C]
/*119F4DE*/  cmp dword ptr ds:[eax+edx*4],0
/*119F4E2*/  jnz short 0119F4E9
/*119F4E4*/  jmp 0119F3D2

這樣子的代碼段

接著我們要找magic jump,也就是加密iat的關鍵jmp

/*119F4C4*/  call dword ptr ds:[124B098]
/*119F4CA*/  mov edx,dword ptr ss:[ebp-8]
/*119F4CD*/  mov ecx,dword ptr ds:[1272C0C]
/*119F4D3*/  mov dword ptr ds:[ecx+edx*4],eax
/*119F4D6*/  mov edx,dword ptr ss:[ebp-8]
/*119F4D9*/  mov eax,dword ptr ds:[1272C0C]
/*119F4DE*/  cmp dword ptr ds:[eax+edx*4],0
/*119F4E2*/  jnz short 0119F4E9                  ;這個就是magic jmp,我們把它改成nop
/*119F4E4*/  jmp 0119F3D2

接著 斷在 CreateThread
或者輸入bp CreateThread也可以

小弟都是斷在CreateThread的末端

然後alt+f9應該會回到程式領空
接著就慢慢單步走

retn之後,應該會看到這樣的代碼

/*11BCFB2*/  jnz short 011BCFF7
/*11BCFB4*/  mov ecx,dword ptr ds:[126FF4C]
/*11BCFBA*/  mov edx,dword ptr ds:[126FF4C]
/*11BCFC0*/  mov eax,dword ptr ds:[ecx+2C]
/*11BCFC3*/  xor eax,dword ptr ds:[edx+88]
/*11BCFC9*/  mov ecx,dword ptr ds:[126FF4C]
/*11BCFCF*/  xor eax,dword ptr ds:[ecx+60]
/*11BCFD2*/  mov dword ptr ss:[ebp-20],eax
/*11BCFD5*/  mov edx,dword ptr ss:[ebp+8]
/*11BCFD8*/  mov eax,dword ptr ds:[edx+18]
/*11BCFDB*/  push eax
/*11BCFDC*/  mov ecx,dword ptr ss:[ebp+8]
/*11BCFDF*/  mov edx,dword ptr ds:[ecx+14]
/*11BCFE2*/  push edx
/*11BCFE3*/  mov eax,dword ptr ss:[ebp+8]
/*11BCFE6*/  mov ecx,dword ptr ds:[eax+10]
/*11BCFE9*/  push ecx
/*11BCFEA*/  mov edx,dword ptr ss:[ebp-C]
/*11BCFED*/  sub edx,dword ptr ss:[ebp-20]
/*11BCFF0*/  call edx
/*11BCFF2*/  mov dword ptr ss:[ebp-4],eax
/*11BCFF5*/  jmp short 011BD042
/*11BCFF7*/  mov eax,dword ptr ss:[ebp+8]
/*11BCFFA*/  cmp dword ptr ds:[eax],1
/*11BCFFD*/  jnz short 011BD042
/*11BCFFF*/  mov ecx,dword ptr ds:[126FF4C]
/*11BD005*/  mov edx,dword ptr ds:[126FF4C]
/*11BD00B*/  mov eax,dword ptr ds:[ecx+2C]
/*11BD00E*/  xor eax,dword ptr ds:[edx+88]
/*11BD014*/  mov ecx,dword ptr ds:[126FF4C]
/*11BD01A*/  xor eax,dword ptr ds:[ecx+60]
/*11BD01D*/  mov dword ptr ss:[ebp-24],eax
/*11BD020*/  mov edx,dword ptr ss:[ebp+8]
/*11BD023*/  mov eax,dword ptr ds:[edx+4]
/*11BD026*/  push eax
/*11BD027*/  mov ecx,dword ptr ss:[ebp+8]
/*11BD02A*/  mov edx,dword ptr ds:[ecx+8]
/*11BD02D*/  push edx
/*11BD02E*/  push 0
/*11BD030*/  mov eax,dword ptr ss:[ebp+8]
/*11BD033*/  mov ecx,dword ptr ds:[eax+C]
/*11BD036*/  push ecx
/*11BD037*/  mov edx,dword ptr ss:[ebp-C]
/*11BD03A*/  sub edx,dword ptr ss:[ebp-24]
/*11BD03D*/  call edx                                   ;OEP

接著就單步走,走道11bd03d的call edx,第一個call edx會跳過,就到OEP了

之後就是修復IAT,這個程序沒有其他的加密方式,所以直接dump,然後修復IAT即可
IAT有無效的就直接cut
2011-1-17 21:25
0
雪    币: 104
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上是个高手啊,侠义!
2011-1-17 22:09
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习学习
2011-4-20 20:19
0
游客
登录 | 注册 方可回帖
返回
//