lchhome 发表于 2017-4-26 00:13

脱Armadillo 3.78 - 4.xx的壳(我原来写的一篇文章)

本帖最后由 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 返回在此
01C759E9    89040E          mov   dword ptr , eax
01C759EC    A1 6C50CA01   mov    eax, dword ptr
01C759F1    391C06          cmp   dword ptr , ebx
01C759F4    75 16         jnz   short 01C75A
0C01C759F6    8D85 B4FEFFFF   lea    eax, dword ptr
01C759FC    50            push    eax
01C759FD    FF15 B862C901   call   dword ptr             ;kernel32.LoadLibraryA
01C75A03    8B0D 6C50CA01   mov    ecx, dword ptr
01C75A09    89040E          mov   dword ptr , eax
01C75A0C    A1 6C50CA01   mov    eax, dword ptr
01C75A11    391C06          cmp   dword ptr , ebx
01C75A14    0F84 2F010000   je   01C75B49         单步走到这,修改JMP,跳走
01C75A1A    33C9            xor   ecx, ecx

01C75B49    83C7 0C    add    edi, 0C   跳到这里
01C75B4C    89BD 78FDFFFF   mov    dword ptr , edi
01C75B52    83C6 04         add    esi, 4
01C75B55    395F FC         cmp    dword ptr , ebx
01C75B58^ 0F85 49FEFFFF   jnz    01C759A7
01C75B5E    EB 03         jmp   short 01C75B63
先把01C75A4句撤销选择处修改,然后Alt+M,打开内存镜像在00401000处F2下断,F9运行断下, 我们单步走 如下
01C9026B   8B0C3A          mov   ecx, dword ptr 断在这里
01C9026E    5B            pop   ebx
01C9026F    03D7            add   edx, edi
01C902C9    FF76 08         push   dword ptr
01C902CC    3310            xor   edx, dword ptr
01C902D3    2BCA            sub   ecx, edx
01C902D5    FFD1            call    ecx一直F8单步走到这里,F7跟进,
01C902D7    8945 FC         mov    dword ptr , eax



0093411E >55            push ebp            就是OEP
0093411F    8BEC            mov ebp,esp
00934121    6A FF         push -0x1
此时,载入LordPE,找到此软件进程,点键“完整转存”,脱壳完毕,载入ImportREC V1.6F 汉化版,找到进程,OEP填入53411E,“IAT自动搜索”——“获取输入信息”,出现假指针,剪切掉,然后修复抓取文件。

luohui 发表于 2017-4-26 17:45

谢谢大神分享

ugvnui 发表于 2017-4-26 17:47

这么好的文章不给加分天理何在!!呵呵。。支持啦大神!

klise 发表于 2017-4-26 18:17

虽然还没看懂,还是非常谢谢,Armadillo 好像已经结业了吧?

shijie52013 发表于 2017-4-27 14:58

楼主能帮忙一起研究个软件吗

lchhome 发表于 2017-4-27 16:04

shijie52013 发表于 2017-4-27 14:58
楼主能帮忙一起研究个软件吗

什么软件

abcdk10 发表于 2018-8-13 23:24

能帮忙脱下吗,初学脱了N久都没用
页: [1]
查看完整版本: 脱Armadillo 3.78 - 4.xx的壳(我原来写的一篇文章)