飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2004|回复: 3

用OD手脱 Armadillo v4.40 DLL壳到重定位信息这里就卡啦!高手帮忙看看!

[复制链接]
  • TA的每日心情
    开心
    2022-10-17 10:10
  • 签到天数: 131 天

    [LV.7]常住居民III

    发表于 2008-7-9 11:46:25 | 显示全部楼层 |阅读模式
    脱壳内容】


    一、准备工作

    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

    高手看看正确吗?小弟这里先谢谢啦!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-10-9 19:49
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-7-11 22:30:01 | 显示全部楼层
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-10-17 10:10
  • 签到天数: 131 天

    [LV.7]常住居民III

     楼主| 发表于 2008-7-12 09:10:12 | 显示全部楼层
    谢谢楼上的,嘿嘿!
    有你像我这样的菜鸟才有进步!
    用脚本脱我的这个DLL是错误
    我用ArmaFP检测DLL是这样的信息!
    ======== 12-07-2008 09:07:50 ========
    D:\网络下\外挂制作学习\QQ华夏\zs\zs\QQHXDll.dll
    ★ 目标是Armadillo保护

    是不是作者压缩的时候什么都没有选呀!
    还有“寂寞的季节” 可以留下你的联系方式吗?
    俺想找**学习!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-10-9 19:49
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-7-12 19:20:51 | 显示全部楼层
    先试试fly的脱文 有天草的教程吗? 没有去下载那个看看。 我还是给你那个建议 先学C
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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