好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 lchhome 于 2017-4-26 00:24 编辑
目标软件:ql.exe
加壳工具:Armadillo 3.78 - 4.xx
脱壳工具:OD、IRC、LordPE
方法:用内存断点法
首先用PEID查壳为Armadillo 3.78 - 4.xx的壳,而且是双进程壳。
2、用OD忽略所有异常,隐藏OD,载入程序 在命令行下bp OpenMutexA 断点,Shift+ F9中断如下:
7C80EABB> 8BFF mov edi, edi 中断在这里
7C80EABD 55 push ebp
7C80EABE 8BEC mov ebp, esp
我们再CTRL+G 输入00401000,来到这里然后我们在下面的空白地址填入下面的数值
00401000 60 pushad
00401001 9C pushfd
00401002 68A0FD1200 push 12FDA0 注意 ; ASCII " 8DC::DA985B82BD"
00401007 33C0 xoreax,eax
00401009 50 pusheax
0040100A 50 pusheax
0040100B E8CFD9407C call KERNEL32.CreateMutexA
00401010 9D popfd
00401011 61 popad
00401012 - E9A4DA407C jmp KERNEL32.OpenMutexA
然后全选上在 此处新建EIP F9 中断后取消断点 在CTRL+G输入00401000,然后就撤销选择处修改,此时我们的双变单就完成了。
3、避开Anti (Armadillo到了4X以后 OD多了一个漏洞 )heOutputDebugStringA,中断2次!,选中%s%之类的字符,点右键“数据窗口中跟随”->二进制->使用00填充,然后在”调试”工具栏中删除此硬件断点!
4、 下heGetModuleHandleA 断点,F9运行,中断三次,当出现"VirtualAlloc""VirtualFree"后,再出现"kernel32.dll",在”调试”工具栏中删除此硬件断点,Alt+F9返回以下程序
01C759E3 8B0D 6C50CA01 mov ecx, dword ptr [1CA506C] 返回在此
01C759E9 89040E mov dword ptr [esi+ecx], eax
01C759EC A1 6C50CA01 mov eax, dword ptr [1CA506C]
01C759F1 391C06 cmp dword ptr [esi+eax], ebx
01C759F4 75 16 jnz short 01C75A
0C01C759F6 8D85 B4FEFFFF lea eax, dword ptr [ebp-14C]
01C759FC 50 push eax
01C759FD FF15 B862C901 call dword ptr [1C962B8] ;kernel32.LoadLibraryA
01C75A03 8B0D 6C50CA01 mov ecx, dword ptr [1CA506C]
01C75A09 89040E mov dword ptr [esi+ecx], eax
01C75A0C A1 6C50CA01 mov eax, dword ptr [1CA506C]
01C75A11 391C06 cmp dword ptr [esi+eax], ebx
01C75A14 0F84 2F010000 je 01C75B49 单步走到这,修改JMP,跳走
01C75A1A 33C9 xor ecx, ecx
01C75B49 83C7 0C add edi, 0C 跳到这里
01C75B4C 89BD 78FDFFFF mov dword ptr [ebp-288], edi
01C75B52 83C6 04 add esi, 4
01C75B55 395F FC cmp dword ptr [edi-4], ebx
01C75B58 ^ 0F85 49FEFFFF jnz 01C759A7
01C75B5E EB 03 jmp short 01C75B63
先把01C75A4句撤销选择处修改,然后Alt+M,打开内存镜像在00401000处F2下断,F9运行断下, 我们单步走 如下
01C9026B 8B0C3A mov ecx, dword ptr [edx+edi] 断在这里
01C9026E 5B pop ebx
01C9026F 03D7 add edx, edi
01C902C9 FF76 08 push dword ptr [esi+8]
01C902CC 3310 xor edx, dword ptr [eax]
01C902D3 2BCA sub ecx, edx
01C902D5 FFD1 call ecx 一直F8单步走到这里,F7跟进,
01C902D7 8945 FC mov dword ptr [ebp-4], eax
0093411E > 55 push ebp 就是OEP
0093411F 8BEC mov ebp,esp
00934121 6A FF push -0x1
此时,载入LordPE,找到此软件进程,点键“完整转存”,脱壳完毕,载入ImportREC V1.6F 汉化版,找到进程,OEP填入53411E,“IAT自动搜索”——“获取输入信息”,出现假指针,剪切掉,然后修复抓取文件。 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|