首页
社区
课程
招聘
[旧帖] [求助]用OD手脱 Armadillo v4.40 DLL壳到重定位信息这里就卡啦!高手帮忙看看! 0.00雪花
发表于: 2008-7-9 19:24 2865

[旧帖] [求助]用OD手脱 Armadillo v4.40 DLL壳到重定位信息这里就卡啦!高手帮忙看看! 0.00雪花

2008-7-9 19:24
2865
【脱壳内容】

一、准备工作

1 侦壳:用PEiD查壳 Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks

这里如何判断Arm的版本呢?记得FLY大狭说过Armadillo V4.0新增的反跟踪手段:

OllyDbg在处理调式包含格式串的消息时存在问题,被跟踪的应用程序可以使OllyDbg崩溃,或可能以进程权限执行任意指令。OutputDebugString函数可发送字符串到调试器上,然后OllyDbg会在底端显示相关状态消息,但是如果包含格式串消息,就可能使OllyDbg崩溃。Armadillo以前的版本没有此种Anti,自V4.0始才有。

2 判断进程:DLL文件加壳应该是不可以双进程,所以这里是单进程方式。

二 、脱壳
设置OD忽略全部

1 寻找 Magic Jump

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

清除断点后OD 重新载入

1001A000    55              push ebp          ;  停在这里
1001A001    8BEC            mov ebp,esp
1001A003    53              push ebx
1001A004    56              push esi
1001A005    57              push edi

前往反汇编地址里输入GetModuleHandleA

下硬件断点
Shift+F9 运行中断后,注意看堆栈:
0006C308  /0006C594
0006C30C  |00975331  返回到 00975331 来自 kernel32.GetModuleHandleA
0006C310  |0006C448  ASCII "kernel32.dll"

0006C308  /0006C594
0006C30C  |00975331  返回到 00975331 来自 kernel32.GetModuleHandleA
0006C310  |0006C448  ASCII "user32.dll"

0006C308  /0006C594
0006C30C  |00975331  返回到 00975331 来自 kernel32.GetModuleHandleA
0006C310  |0006C448  ASCII "advapi32.dll"             ; ★  注意这句

00975331    8B0D 60D89900   mov ecx,dword ptr ds:[99D860]          ;//返回到这里
00975337    89040E          mov dword ptr ds:[esi+ecx],eax
0097533A    A1 60D89900     mov eax,dword ptr ds:[99D860]
0097533F    393C06          cmp dword ptr ds:[esi+eax],edi
00975342    75 16           jnz short 0097535A
00975344    8D85 B4FEFFFF   lea eax,dword ptr ss:[ebp-14C]
0097534A    50              push eax
0097534B    FF15 B8509900   call dword ptr ds:[9950B8]          ; kernel32.LoadLibraryA
00975351    8B0D 60D89900   mov ecx,dword ptr ds:[99D860]
00975357    89040E          mov dword ptr ds:[esi+ecx],eax
0097535A    A1 60D89900     mov eax,dword ptr ds:[99D860]
0097535F    393C06          cmp dword ptr ds:[esi+eax],edi
00975362    0F84 AD000000   je 00975415                            ;//这里改JMP
00975368    33C9            xor ecx,ecx
0097536A    8B03            mov eax,dword ptr ds:[ebx]
0097536C    3938            cmp dword ptr ds:[eax],edi
0097536E    74 06           je short 00975376
00975370    41              inc ecx
00975371    83C0 0C         add eax,0C
00975374  ^ EB F6           jmp short 0097536C

改好的!
0097535F    393C06          cmp dword ptr ds:[esi+eax],edi
00975362    E9 AE000000     jmp 00975415
00975367    90              nop
00975368    33C9            xor ecx,ecx

然后往下
00975418    83C6 04         add esi,4
0097541B    397B FC         cmp dword ptr ds:[ebx-4],edi
0097541E  ^ 0F85 CCFEFFFF   jnz 009752F0
00975424    EB 03           jmp short 00975429                  ;//到这里下F2断点

F9运行,断下后,返回,把这里改回来!

0097535F    393C06          cmp dword ptr ds:[esi+eax],edi
00975362    0F84 AD000000   je 00975415
00975368    33C9            xor ecx,ecx

取消断点!

2 获得重定位信息

前往反汇编地址里输入GetTickCount

7C80932E >  BA 0000FE7F     mov edx,7FFE0000                   ;//这里F2
7C809333    8B02            mov eax,dword ptr ds:[edx]
7C809335    F762 04         mul dword ptr ds:[edx+4]
7C809338    0FACD0 18       shrd eax,edx,18

F9 运行中断后,注意看堆栈:

0006BE00   76B144E7  /CALL 到 GetTickCount 来自 76B144E5

0006BE00   76B144FE  /CALL 到 GetTickCount 来自 76B144FC   ; ★ 注意!在这里清除断点后Alt+F9返回程序

返回的和刹那恍惚动画中的不对呀!
在 CPU 窗口按 Ctrl+S 查找如下代码

PUSH EAX
XCHG CX,CX
POP EAX
STC

也无代码!

另:我用OD脱Armadillo1.xx-2.xx单线程标准壳修护好以后运行没问题,关闭的时候弹出很多错误的提示框,怎么回事?

因为是BC++,在查打RVA和 SIZE时会比较麻烦。随便找个已知的API,Enter 跟随进去,向上向下找到开始和结束的地方:
004D9108  00000000
004D910C  1000E3A5  offset QQHXDLL.HookOn
004D9110  00BD6315
004D9114  000DA082
004D9118  000DA090
004D911C  000DA0A0
004D9120  00000000
004D9124  77DA6BF0  ADVAPI32.RegCloseKey
004D9128  77DA761B  ADVAPI32.RegOpenKeyExA
004D912C  77DA7883  ADVAPI32.RegQueryValueExA
……
004D9FE4  770F4D6B  OLEAUT32.VariantCopy
004D9FE8  770F4E1E  OLEAUT32.VariantCopyInd
004D9FEC  770F4980  OLEAUT32.VariantInit
004D9FF0  00BD6315
004D9FF4  58485151
004D9FF8  2E4C4C44
004D9FFC  004C4C44  zs.004C4C44
004DA000  41564441
004DA004  32334950
004DA008  4C4C442E

OEP:14C4
RVA:D9124
RVA SIZE:9FEC-9124=ec8

高手看看正确吗?小弟这里先谢谢啦!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//