飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3466|回复: 5

关于Armadillo 1.xx - 2.xx脱壳的问题

[复制链接]

该用户从未签到

发表于 2006-6-30 10:48:57 | 显示全部楼层 |阅读模式
【软件名称】:PowerPoint to Flash 1.6.7
【下载地址】:http://www.dreamingsoft.com/download/pfsetup.exe
【加密保护】:Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks(双线程)

1.分离父进程,使程序把自己当成子进程运行

设置Ollydbg忽略所有其它异常选项。老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。

Ollydbg载入主程序:

00483914 >  55                  push ebp                             // OD载入后停在这里
00483915    8BEC                mov ebp,esp
00483917    6A FF               push -1
00483919    68 D0D54800         push pptFlash.0048D5D0
0048391E    68 34344800         push pptFlash.00483434
00483923    64:A1 00000000      mov eax,dword ptr fs:[0]
00483929    50                  push eax
0048392A    64:8925 00000000    mov dword ptr fs:[0],esp
00483931    83EC 58             sub esp,58
00483934    53                  push ebx
00483935    56                  push esi
00483936    57                  push edi
00483937    8965 E8             mov dword ptr ss:[ebp-18],esp
0048393A    FF15 68A14800       call dword ptr ds:[<&KERNEL32.GetVersion>]         ; kernel32.GetVersion
00483940    33D2                xor edx,edx

命令行下断:BP OpenMutexA 然后F9运行:

77E62391 >  55                  push ebp                             // 注意观察堆栈
77E62392    8BEC                mov ebp,esp
77E62394    51                  push ecx
77E62395    51                  push ecx
77E62396    837D 10 00          cmp dword ptr ss:[ebp+10],0
77E6239A    56                  push esi
77E6239B    0F84 C2E30100       je kernel32.77E80763
77E623A1    64:A1 18000000      mov eax,dword ptr fs:[18]
77E623A7    FF75 10             push dword ptr ss:[ebp+10]

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

注意看BP OpenMutexA 时的堆栈:

0012F5B8   0047E85D  /CALL 到 OpenMutexA 来自 pptFlash.0047E857
0012F5BC   001F0001  |Access = 1F0001
0012F5C0   00000000  |Inheritable = FALSE
0012F5C4   0012FBF8  \MutexName = "7A4::DA3935EA83"                  ★注意这个地址:0012FBF8

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

Ctrl+G:401000  键入以下代码:

00401000    60                  pushad
00401001    9C                  pushfd
00401002    68 F8FB1200         push 12FBF8                          ★ 堆栈里看到的值
00401007    33C0                xor eax,eax
00401009    50                  push eax
0040100A    50                  push eax
0040100B    E8 B5A6A577         call kernel32.CreateMutexA
00401010    9D                  popfd
00401011    61                  popad
00401012  - E9 7A13A677         jmp kernel32.OpenMutexA

在401000处新建起源,F9运行,再次中断在OpenMutexA处,此时Ctrl+G:401000 撤销刚才的修改的代码,使代码还原。OK,父进程分离完毕!把这段代码以二进制保存起来,下次用时直接粘贴,修改00401002处push的值就OK了。

二进制代码:60 9C 68 F8 FB 12 00 33 C0 50 50 E8 B5 A6 A5 77 9D 61 E9 7A 13 A6 77

—————————————————————————————————
2、寻找Magic Jump,避开IAT加密


取消以前所有的断点,下断:BP GetModuleHandleA 然后F9运行:

77E5AD86 >  837C24 04 00        cmp dword ptr ss:[esp+4],0           // 断在这,注意看堆栈
77E5AD8B    0F84 37010000       je kernel32.77E5AEC8
77E5AD91    FF7424 04           push dword ptr ss:[esp+4]
77E5AD95    E8 F8050000         call kernel32.77E5B392
77E5AD9A    85C0                test eax,eax
77E5AD9C    74 08               je short kernel32.77E5ADA6
77E5AD9E    FF70 04             push dword ptr ds:[eax+4]
77E5ADA1    E8 27060000         call kernel32.GetModuleHandleW
77E5ADA6    C2 0400             retn 4
......


我按照这个方法脱,但到了这一步:
2、寻找Magic Jump,避开IAT加密
取消以前所有的断点,下断:BP GetModuleHandleA 然后F9运行:

我按F9运行后却跳到了
77E80B1A >  55              PUSH EBP
77E80B1B    8BEC            MOV EBP,ESP
77E80B1D    837D 08 00      CMP DWORD PTR SS:[EBP+8],0
77E80B21    75 0E           JNZ SHORT KERNEL32.77E80B31
77E80B23    64:A1 18000000  MOV EAX,DWORD PTR FS:[18]
77E80B29    8B40 30         MOV EAX,DWORD PTR DS:[EAX+30]
77E80B2C    8B40 08         MOV EAX,DWORD PTR DS:[EAX+8]

请问出错是什么原因?

[ 本帖最后由 淡淡的冰 于 2006-6-30 10:51 编辑 ]
PYG19周年生日快乐!

该用户从未签到

发表于 2006-6-30 16:01:04 | 显示全部楼层
注意堆栈,寻找返回时机~
PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2006-6-30 17:01:25 | 显示全部楼层
    这个在看雪论坛已有教程,请自行去查找!

    作者是老K~
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2006-7-1 00:15:07 | 显示全部楼层
    谢谢楼上的两位.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-27 17:16:00 | 显示全部楼层
    学习了,多谢分享.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-1-26 07:13:27 | 显示全部楼层
    先查准版本,用ARMFP,应该不是1.X-2.X的
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表