飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2538|回复: 1

[07版] ARM dll脱壳修复及修复

[复制链接]
  • TA的每日心情
    慵懒
    2018-6-6 15:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-4-24 13:24:14 | 显示全部楼层 |阅读模式
    【文章标题】: ARM dll脱壳修复及修复
    【文章作者】: glts
    【作者邮箱】: glts@163.com
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    ---------------------------------------------------------------------------

    -----
    【详细过程】
      查知为Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks
      一、OD载入入口
      10062E97 >  55              push ebp
      10062E98    8BEC            mov ebp,esp
      10062E9A    53              push ebx
      10062E9B    8B5D 08         mov ebx,dword ptr ss:[ebp+8]
      10062E9E    56              push esi
      10062E9F    8B75 0C         mov esi,dword ptr ss:[ebp+C]
      10062EA2    57              push edi
      10062EA3    8B7D 10         mov edi,dword ptr ss:[ebp+10]
      10062EA6    85F6            test esi,esi
      
      二、BP GetModuleHadnleA 处理Magic jump
      
      00B75D12   /0F84 2F010000   je 00B75E47    ; Magic jump
      
      三、BP GetTickCount 处理重定位RVA和SIZE
      
      7C80929C >  BA 0000FE7F     mov edx,7FFE0000             SHIT+F9 断下后返

    回 出现一片红海
      7C8092A1    8B02            mov eax,dword ptr ds:[edx]
      7C8092A3    F762 04         mul dword ptr ds:[edx+4]
      7C8092A6    0FACD0 18       shrd eax,edx,18
      7C8092AA    C3              retn
      -------------------------
      搜索“全部顺序”
      
      PUSH EAX
      XCHG CX,CX
      POP EAX
      STC
      
      查找所有序列,项目 1 地址=00B8CF54 反汇编=push eax /找到此行双击来到代码



      00B8CF54    50              push eax      /此处下断SHIT+F9 断

    下后因为解码也出现小红海
      00B8CF55    66:87C9         xchg cx,cx
      00B8CF58    58              pop eax
      00B8CF59    F9              stc
      --------------------
      00B8CF54    50              push eax
      00B8CF55    66:87C9         xchg cx,cx
      00B8CF58    58              pop eax
      00B8CF59    C705 E0C0B900 6>mov dword ptr ds:[B9C0E0],0B9CB60
      00B8CF63    A1 E49FBA00     mov eax,dword ptr ds:[BA9FE4]
      00B8CF68    8B00            mov eax,dword ptr ds:[eax]         ; 重定位R

    VA /F2下断看RVA地址为
      00B8CF6A    8985 3CD9FFFF   mov dword ptr ss:[ebp-26C4],eax
      00B8CF70    A1 E49FBA00     mov eax,dword ptr ds:[BA9FE4]
      00B8CF75    83C0 04         add eax,4
      00B8CF78    A3 E49FBA00     mov dword ptr ds:[BA9FE4],eax
      00B8CF7D    A1 E49FBA00     mov eax,dword ptr ds:[BA9FE4]
      00B8CF82    8B00            mov eax,dword ptr ds:[eax]        ; 重定位SI

    ZE /F2下断看SIZE
      00B8CF84    8985 78D9FFFF   mov dword ptr ss:[ebp-2688],eax
      00B8CF8A    A1 E49FBA00     mov eax,dword ptr ds:[BA9FE4]
      00B8CF8F    83C0 04         add eax,4
      00B8CF92    A3 E49FBA00     mov dword ptr ds:[BA9FE4],eax
      00B8CF97    83BD 3CD9FFFF 0>cmp dword ptr ss:[ebp-26C4],0
      00B8CF9E    74 6F           je short 00B8D00F
      00B8CFA0    83BD 78D9FFFF 0>cmp dword ptr ss:[ebp-2688],0
      00B8CFA7    74 66           je short 00B8D00F
      00B8CFA9    8B85 FCD7FFFF   mov eax,dword ptr ss:[ebp-2804]
      00B8CFAF    8B8D 0CD8FFFF   mov ecx,dword ptr ss:[ebp-27F4]
      00B8CFB5    3B48 34         cmp ecx,dword ptr ds:[eax+34]
      00B8CFB8    74 55           je short 00B8D00F                  ; 重定位

    Magic jump 改为JMP这样就不用脱下后手工修正基础
      -------------------------------------

    ------
      在三处下好断后停下来时看值得出
      RVA=00026000
      SIZE=00001F24
      -------------------------------------

    ------
      取消断点打开内存镜像在
      
      内存映射,项目 58 地址=10001000 大小=00017000 (94208.) 物主=qqmgr   

    10000000 区段=.text 类型=Imag 01001002
      
      此处下断SHIT+F9 断在OEP处
      
      10004845    55              push ebp
      10004846    8BEC            mov ebp,esp
      10004848    53              push ebx
      10004849    8B5D 08         mov ebx,dword ptr ss:[ebp+8]
      1000484C    56              push esi
      1000484D    8B75 0C         mov esi,dword ptr ss:[ebp+C]
      10004850    57              push edi
      10004851    8B7D 10         mov edi,dword ptr ss:[ebp+10]
      10004854    85F6            test esi,esi
      -------------------------------------

    -------
      此时 CTRL+B 搜索 ff 15找iat起始位置,得到起始位置为:10018000减

    去基址后为:1800
      -------------------------------------

    -------
      此时脱壳 脱下来后 打开LordPE先修正重定位输入我们上面找到的rva(00026000)

    size(00001F24)修正重定位后
      打开Imporrec进行修复无效的减切掉 然后把OEP改为4845抓取修复即可
      
    ---------------------------------------------------------------------------

    --------------------------------------------------------------------------

    【版权声明】: 本文原创于PYG技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                           2007年04月18日 下午 11:53:43
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-4-25 10:50:06 | 显示全部楼层
    有附件提供的话最好~~
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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