658 发表于 2011-1-29 22:14

菜鸟起步四 手脱Armadillo 3.78 - 4.xx笔记

泪牛满面那。。。终于给我脱下来了。。。穿山甲真变态呀。。

Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks

程序:FlyWoool.exe(吉祥天传世外挂 1.0.0.1)
原教程地址:无

脱壳前的准备:
1、OD设置忽略所有的异常,用隐藏插件隐藏OD
2、思想准备:Armadillo对断点的检测非常严格,所以我们在设置断点的时候要尽量去使用“硬件执行”
3、概念准备:使用PEID的Armadillo的版本检测一般没那么准确,我倒是发现fi的版本检测还是要强一些
4、Magic Jump:跳转的跨越段一般比较大!(返回时机一定要对!)
5:返回的时机:1、返回的地址是系统领空 2、Shift+F9过程当中,时间缓冲比较大才停下

总分四步
一、双变单(使程序把自己当成子进程运行)bp OpenMutexA
二、避开Anti (手动避免OD BUG )               he OutputDebugStringA
三、Magic Jump,避开IAT加密                     he GetModuleHandleA+5
四、LoadPE脱壳 IR修复

具体步骤

一、双变单(使程序把自己当成子进程运行)
bp OpenMutexA
F9(左下角 提示异常)

选项调试 异常 添加最近的异常

Shift+F9(断下后不要取消断点)

Ctrl+G 00401000

依次输入***注意第三句的地址出处
00401000      60                     pushad
00401001      9C                     pushfd
00401002      68 A0FD1200    push 12FDA0********      ; ASCII "44C::DA47D45903"
00401007      33C0                   xor eax,eax
00401009      50                     push eax
0040100A      50                     push eax
0040100B      E8 E694A677      call KERNEL32.CreateMutexA
00401010      9D                     popfd
00401011      61                     popad
00401012    - E9 8F9FA777      jmp KERNEL32.OpenMutexA


选上变红的这一段 右键 此处新建EIP

F9
F2取消断点
ctrl+G 00401000
选上红的一段 撤销


二、避开Anti
he OutputDebugStringA回车F9   

选中%s%之类的字符,点右键 数据窗口跟随 第一行右键 二进制 使用00填充


F9
选中%s%之类的字符,点右键 数据窗口跟随 第一行右键 二进制 使用00填充
删除硬件断点

三、Magic Jump,避开IAT加密
he GetModuleHandleA+5 回车
Shift+F9
堆栈窗口
SHIF+F9
出现
001292A8    |01066AC2    返回到 01066AC2 来自 KERNEL32.GetModuleHandleA
001292AC    |0107BD6C    ASCII "kernel32.dll"
001292B0    |0107DDAC    ASCII "VirtualAlloc"***
001292A4    /0012EBB0
001292A8    |01066ADF    返回到 01066ADF 来自 KERNEL32.GetModuleHandleA
001292AC    |0107BD6C    ASCII "kernel32.dll"
001292B0    |0107DDA0    ASCII "VirtualFree"****


下个SHIft+F9 便可删除硬件断点
Alt+F9

寻找Magic Jump一般在call dword ptr ds:      ; KERNEL32.LoadLibraryA***** 下面的je

01055A99      8B0D 6C500801    mov ecx,dword ptr ds://返回到这里!
01055A9F      89040E         mov dword ptr ds:,eax
01055AA2      A1 6C500801      mov eax,dword ptr ds:
01055AA7      391C06         cmp dword ptr ds:,ebx
01055AAA      75 16            jnz short 01055AC2
01055AAC      8D85 B4FEFFFF    lea eax,dword ptr ss:
01055AB2      50               push eax
01055AB3      FF15 B8620701    call dword ptr ds:      ; KERNEL32.LoadLibraryA*****
01055AB9      8B0D 6C500801    mov ecx,dword ptr ds:
01055ABF      89040E         mov dword ptr ds:,eax
01055AC2      A1 6C500801      mov eax,dword ptr ds:
01055AC7      391C06         cmp dword ptr ds:,ebx
01055ACA      0F84 2F010000    je 01055BFF //Magic Jump,改jmp
01055AD0      33C9             xor ecx,ecx
01055AD2      8B07             mov eax,dword ptr ds:
01055AD4      3918             cmp dword ptr ds:,ebx
01055AD6      74 06            je short 01055ADE
01055AD8      41               inc ecx
01055AD9      83C0 0C          add eax,0C

往下拉,找如此类似的序列(一个jnz,一个jmp,两个salc//Magic Jump)

01055C0E    ^\0F85 49FEFFFF    jnz 01055A5D
01055C14      EB 03                  jmp short 01055C19//F2下断,Shift+F9,断下!取消断点!
01055C16      D6                         salc(其上下断)
01055C17      D6                         salc
往上拉 撤消Magic Jump处的修改!

Alt+M打开内存镜像,在00401000段下断,Shift+F9

7C94AB4F    55            push ebp//跳转后的出口
7C94AB50    8BEC            mov ebp,esp
7C94AB52    51            push ecx
7C94AB53    FF75 08         push dword ptr ss:
7C94AB56    E8 DE57FEFF   call ntdll.RtlImageNtHead>
7C94AB5B    F640 5F 04      test byte ptr ds:>
7C94AB5F    0F85 EE610200   jnz ntdll.7C970D53
7C94AB65    8D45 FC         lea eax,dword ptr ss:[ebp>
7C94AB68    50            push eax
7C94AB69    6A 0A         push 0A
7C94AB6B    6A 01         push 1

单步F8

010D038C    3350 40         xor edx,dword ptr ds:
010D038F    6A 00         push 0
010D0391    FF76 0C         push dword ptr ds:
010D0394    2BCA            sub ecx,edx
010D0396    FFD1            call ecx    //OEP F7跟进                   ; FlyWoool.004B79A6
010D0398    8945 FC         mov dword ptr ss:,eax
010D039B    8B45 FC         mov eax,dword ptr ss:
010D039E    5F            pop edi
010D039F    5E            pop esi

到达OEP

脱壳 直接剪切无效指针


658 发表于 2011-1-29 22:15

斑竹 转下到脱壳破解版本吧在那编辑帖子不让编

cbh352933721 发表于 2011-1-30 23:42

本来不想说的你真无耻剽窃“天草”的作品 连破文都一摸一样加上几张图片 就变你的作品!!!!
哎 你这个人啊。。。
版主你有没有搞错这种剽窃别人的作品也放出来我靠
我用我的ID担保   这绝对是“剽窃”天草的赶紧封杀 免得毁了论坛荣誉!!!!!!!!!!!!!!!!!!

658 发表于 2011-1-31 11:45

回复 cbh352933721 的帖子

纯粹的笔记。

105165 发表于 2011-2-1 19:15

很详细的教教程

HMPT 发表于 2011-2-5 10:23

支持一下!学习了!

dhzs 发表于 2011-7-21 21:39

很详细啊

geryjun 发表于 2012-2-4 23:09

支持学习一下。

kflyc 发表于 2012-2-21 21:32

好难。。。现在没有人能做得出来自动脱的吗!

garycui 发表于 2012-10-4 13:28

哦,我遇到了个程序是双进程Armadillo 3.78 - 4.xx的,到了找magic jump我就找不到了。按照楼主的说法“寻找Magic Jump一般在call dword ptr ds:      ; KERNEL32.LoadLibraryA***** 下面的je
可我的KERNEL32.LoadLibraryA下面不是je啊,望高手指点下magic jump的找法。
页: [1] 2
查看完整版本: 菜鸟起步四 手脱Armadillo 3.78 - 4.xx笔记