好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 Charlie 于 2012-3-29 18:17 编辑
【文章标题】: Safengine Licensor Demo v1.8.0.0 脱壳
【文章作者】: Charlie
【软件名称】: 起凡可乐0329
【软件大小】: 3.94 MB
【下载地址】: 自己搜索下载
【加壳方式】: Safengine Licensor Demo v1.8.0.0
【保护方式】: 应该是Licensor Demo 初级吧
【编写语言】: VC++
【使用工具】: peid od lordPE importrec Uif
【操作平台】: xp
【软件介绍】: 游戏辅助
【作者声明】: 作者的不认真 让偶这小菜有出头之日!
--------------------------------------------------------------------------------
【详细过程】
PEID查壳
区段显示为text se se se se
初步判断为safengine加壳保护
载入OD 看到字符串
00B06826 > $ E8 21000000 call 起凡可乐.00B0684C ; PUSH ASCII "Safengine Licensor Demo v1.8.0.0"
00B0682B . 53 61 66 65 6>ascii "Safengine Licens"
00B0683B . 6F 72 20 44 6>ascii "or Demo v1.8.0.0"
00B0684B . 00 ascii 0
开始F7 停在这里
00B0684C > \8D6424 04 lea esp,dword ptr ss:[esp+0x4]
00B06850 . 60 pushad
00B06851 . 64:8B05 30000>mov eax,dword ptr fs:[0x30] 2次F8来到这里 我们进行hr esp
00B06858 . 8B40 0C mov eax,dword ptr ds:[eax+0xC]
00B0685B . 8B40 1C mov eax,dword ptr ds:[eax+0x1C]
00B0685E . 8B00 mov eax,dword ptr ds:[eax]
00B06860 . 8B40 08 mov eax,dword ptr ds:[eax+0x8]
00B06863 . 50 push eax
00B06864 .^ E9 79FFFFFF jmp 起凡可乐.00B067E2
数据窗口显示为
0012FFA4 7C930228 ntdll.7C930228
0012FFA8 FFFFFFFF
0012FFAC 0012FFF0
0012FFB0 0012FFC4
0012FFB4 7FFD3000
0012FFB8 7C92E514 ntdll.KiFastSystemCallRet
我们继续F9运行
00B069A5 .^\E9 1AACFFFF jmp 起凡可乐.00B015C4 停在这里
00B069AA 4D db 4D
00B069AB > C9 leave
00B069AC . 59 pop ecx
00B069AD . 38CB cmp bl,cl
00B069AF . 2022 and byte ptr ds:[edx],ah
00B069B1 . AB stos dword ptr es:[edi]
00B069B2 . 3B5E AD cmp ebx,dword ptr ds:[esi-0x53]
00B069B5 . 4B dec ebx
00B069B6 . 97 xchg eax,edi
00B069B7 . 1181 E013FF71 adc dword ptr ds:[ecx+0x71FF13E0],eax
00B069BD . F4 hlt
00B069BE . 6A 0D push 0xD
00B069AA F4来到
00A22433 9C pushfd
00A22434 ^ EB D6 jmp X起凡可乐.00A2240C
00A22436 81EC C0000000 sub esp,0xC0
00A2243C ^ EB D7 jmp X起凡可乐.00A22415
00A2243E 30BB 2B4EBD52 xor byte ptr ds:[ebx+0x52BD4E2B],bh
00A22444 CC int3
00A22445 46 inc esi
00A22446 D4 B3 aam 0xB3
00A22448 4E dec esi
00A22449 AC lods byte ptr ds:[esi]
00A2244A CB retf
00A2244B 40 inc eax
00A2244C D6 salc
00A2244D B1 40 mov cl,0x40
00A2244F E7 06 out 0x6,eax
00A22451 F4 hlt
00A22452 AA stos byte ptr es:[edi]
00A22453 894424 24 mov dword ptr ss:[esp+0x24],eax
00A22457 61 popad
00A22458 FF4424 08 inc dword ptr ss:[esp+0x8]
00A2245C 9D popfd
00A2245D C3 retn
00A2245E F2: prefix repne:
我们可以看到这一段为壳的虚拟机代码
A22433出开始压栈
A22457到A2245D开始出栈 这里需要注意
我们继续F8来到
00A22434 ^\EB D6 jmp X起凡可乐.00A2240C
00A22436 81EC C0000000 sub esp,0xC0 F4
00A2243C ^ EB D7 jmp X起凡可乐.00A22415
00A2243E 30BB 2B4EBD52 xor byte ptr ds:[ebx+0x52BD4E2B],bh F4
00A22444 CC int3
00A22445 46 inc esi
00A22446 D4 B3 aam 0xB3
00A22448 4E dec esi
00A22449 AC lods byte ptr ds:[esi]
2次F4后来到
00A225D3 ^\EB 9E jmp X起凡可乐.00A22573
00A225D5 37 aaa
00A225D6 B5 25 mov ch,0x25
00A225D8 4C dec esp
00A225D9 BF 5C57D644 mov edi,0x44D6575C
00A225DE 23DE and ebx,esi
00A225E0 3C 01 cmp al,0x1
00A225E2 8515 7C8F64BD test dword ptr ds:[0xBD648F7C],edx
00A225E8 3AA8 CF3ADA7D cmp ch,byte ptr ds:[eax+0x7DDA3ACF]
00A225EE FF6F 0A jmp Xfword ptr ds:[edi+0xA]
00A225F1 F9 stc
00A225F2 - E9 0D881E79 jmp 79C0AE04
A225F2继续无条件跳转到系统领空 我们在A225D3出F8 使其顺着流程走
00A22573 83C5 04 add ebp,0x4
00A22576 ^ E9 36FFFFFF jmp 起凡可乐.00A224B1
00A2257B C2 5DCD retn 0xCD5D F4
跟着流程走
00A2248E /E9 B0000000 jmp 起凡可乐.00A22543
00A22493 |2E:A7 cmps dword ptr cs:[esi],dword ptr es:[ed>
00A22495 |37 aaa
00A22496 |52 push edx
00A22497 |A1 4D019303 mov eax,dword ptr ds:[0x393014D]
00A2249C |66:95 xchg ax,bp
00A2249E |7A EE jpe X起凡可乐.00A2248E
00A224A0 |61 popad
00A224A1 |F1 int1
00A224A2 |90 nop
00A224A3 |6395 152DBEAE arpl word ptr ss:[ebp+0xAEBE2D15],dx
00A224A9 |8BDE mov ebx,esi
00A224AB |81C6 00004000 add esi,起凡可乐.00400000
00A224B1 |0FB646 FF movzx eax,byte ptr ds:[esi-0x1]
00A224B5 ^|EB BB jmp X起凡可乐.00A22472
00A224B7 ^|73 E7 jnb X起凡可乐.00A224A0
00A224B9 |77 12 ja X起凡可乐.00A224CD
00A224BB |E1 07 loopde X起凡可乐.00A224C4
00A224BD ^|78 E9 js X起凡可乐.00A224A8
00A224BF |79 18 jns X起凡可乐.00A224D9
00A224C1 |EB 1C jmp X起凡可乐.00A224DF
来到这里
00A22548 ^\EB BE jmp X起凡可乐.00A22508
00A2254A 198B 1B7E8D22 sbb dword ptr ds:[ebx+0x228D7E1B],ecx
00A22550 F3: prefix rep:
00A22551 F756 8B not dword ptr ds:[esi-0x75]
00A22554 F2: prefix repne:
A2254A处打断跳转来到
00A30F42 9D popfd
00A30F43 61 popad
00A30F44 C3 retn 不难看出壳区段已经解码 跟进去
00A30F45 E8 E814FFFF call 起凡可乐.00A22432
00A30F4A E8 E314FFFF call 起凡可乐.00A22432
在47395D 处新建EIP
记住OEP地址为7395D
我们开始Lord pe抓取映像文件
未命名的窗口, 条目 21
进程=00000DFC
名称=起凡可乐0329
路径=C:\Documents and Settings\Administrator\桌面\临时程序\起凡可乐0329\起凡可乐0329.exe
查看调试程序进程为0DFC
此时用到我们强大到UIF输入表修复工具
进程ID填写 0DFC 其他为默认
修复数据如下
修复成功!
已修复模块: 起凡可乐0329.exe
映像的基址: 00400000
IAT RVA:00D00170
IAT 大小: 000000B8
正常的输入: 86
直接的输入: 0
所有的输入: 86
我们其次修改下程序RVA的偏移地址 这里就不说了 相信大家都会
此时用到我们的 importrec
OEP填写7395D
rva D00170
IAT 0B8
直接获取输入表 转储
打开程序可以正常运行 查壳为
Microsoft Visual C++ 6.0
脱壳修复完毕 木有什么技术含量 让老师们见笑了
--------------------------------------------------------------------------------
【版权声明】: 本文原创于Charlie, 转载请注明作者并保持文章的完整, 谢谢!
只是感兴趣 无其他目的 失误之处请诸位大虾见谅。
2012年03月29日 18:09:51
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|