飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3132|回复: 7

[原创] 脱ARM+ASPACK双层壳

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

    [LV.1]初来乍到

    发表于 2007-6-8 13:09:17 | 显示全部楼层 |阅读模式
    【文章标题】: 龙行天下双层壳脱壳
    【文章作者】: glts
    【软件名称】: 龙行天下
    【下载地址】: 自己搜索下载
    【加壳方式】: ARM+ASPACK
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      ★ 目标为Armadillo保护
      保护系统级别为 (标准版)
      ◆所用到的保护模式有◆
      标准保护 或 最小保护模式
      【备份密钥设置】
      无任何注册表操作
      【程序压缩设置】
      较好/较慢地压缩方式
      【其它保护设置】
      ------------------------------------------
      此程序采用的是外壳ARM单进程+ASPACK加壳方式,较简单。OD载入来到入口:
      004C7379 >/$  55                 push ebp
      004C737A  |.  8BEC               mov ebp,esp
      004C737C  |.  6A FF              push -1
      004C737E  |.  68 78C24E00        push AutoXYDE.004EC278
      004C7383  |.  68 606D4C00        push AutoXYDE.004C6D60      ;  SE 句柄安装
      004C7388  |.  64:A1 00000000     mov eax,dword ptr fs:[0]
      004C738E  |.  50                 push eax
      004C738F  |.  64:8925 00000000   mov dword ptr fs:[0],esp
      
      一、GetModuleHandleA寻找返回时机,找到MaGic跳
      7C80B6A1 >  8BFF                 mov edi,edi
      7C80B6A3    55                   push ebp
      7C80B6A4    8BEC                 mov ebp,esp
      7C80B6A6    837D 08 00           cmp dword ptr ss:[ebp+8],0
      7C80B6AA    74 18                je short kernel32.7C80B6C4        ;在此硬件执行断点
      7C80B6AC    FF75 08              push dword ptr ss:[ebp+8]
      7C80B6AF    E8 C0290000          call kernel32.7C80E074
      7C80B6B4    85C0                 test eax,eax
      7C80B6B6    74 08                je short kernel32.7C80B6C0
      7C80B6B8    FF70 04              push dword ptr ds:[eax+4]
      7C80B6BB    E8 7D2D0000          call kernel32.GetModuleHand>
      7C80B6C0    5D                   pop ebp
      7C80B6C1    C2 0400              retn 4
      
      F9五次之后来到返回时机:
      0012C27C  /0012C508
      0012C280  |00B75331  返回到 00B75331 来自 kernel32.GetModuleHandleA
      0012C284  |0012C3BC  ASCII "kernel32.dll"
      0012C288  |00000002
      0012C28C  |00BD1958
      
      取消硬件断点 ALT+F9返回来到:
      
      00B75342   /75 16                jnz short 00B7535A
      00B75344   |8D85 B4FEFFFF        lea eax,dword ptr ss:[ebp-1>
      00B7534A   |50                   push eax
      00B7534B   |FF15 B850B900        call dword ptr ds:[B950B8]  ; kernel32.LoadLibraryA
      00B75351   |8B0D 60D8B900        mov ecx,dword ptr ds:[B9D86>
      00B75357   |89040E               mov dword ptr ds:[esi+ecx],>
      00B7535A   \A1 60D8B900          mov eax,dword ptr ds:[B9D86>
      00B7535F    393C06               cmp dword ptr ds:[esi+eax],>
      00B75362    0F84 AD000000        je 00B75415                          ;MaGic跳改JE为JMP
      00B75368    33C9                 xor ecx,ecx
      00B7536A    8B03                 mov eax,dword ptr ds:[ebx]
      00B7536C    3938                 cmp dword ptr ds:[eax],edi
      00B7536E    74 06                je short 00B75376
      
      在00B75362此行按回车来到:
      00B75415    83C3 0C              add ebx,0C
      00B75418    83C6 04              add esi,4
      00B7541B    397B FC              cmp dword ptr ds:[ebx-4],ed>
      00B7541E  ^ 0F85 CCFEFFFF        jnz 00B752F0
      00B75424    EB 03                jmp short 00B75429                   ;在此F2下断F9运行
      
      在00B7541E此行回车向上把上面修改的 jmp 00B75415复原成je 00B75415以防止壳检测到修改
      
    二、CreateThread找OEP来到:
      7C810637 >  8BFF                 mov edi,edi                    ;F2下断SHIFT+F9运行,取消断点ALT+F9返回
      7C810639    55                   push ebp
      7C81063A    8BEC                 mov ebp,esp
      7C81063C    FF75 1C              push dword ptr ss:[ebp+1C]
      7C81063F    FF75 18              push dword ptr ss:[ebp+18]
      7C810642    FF75 14              push dword ptr ss:[ebp+14]
      7C810645    FF75 10              push dword ptr ss:[ebp+10]
      7C810648    FF75 0C              push dword ptr ss:[ebp+C]
      7C81064B    FF75 08              push dword ptr ss:[ebp+8]
      7C81064E    6A FF                push -1
      7C810650    E8 D7FDFFFF          call kernel32.CreateRemoteT>
      
      返回到这里:
      00B7A8E6    5E                   pop esi                     ; AutoXYDE.004EC718
      00B7A8E7    C9                   leave
      00B7A8E8    C3                   retn
      
      接下来我们F8单步走...走几步后来到:
      00B8CF89    83F9 01              cmp ecx,1
      00B8CF8C    75 22                jnz short 00B8CFB0
      00B8CF8E    FF76 04              push dword ptr ds:[esi+4]
      00B8CF91    FF76 08              push dword ptr ds:[esi+8]
      00B8CF94    6A 00                push 0
      00B8CF96    E8 2639FFFF          call 00B808C1
      00B8CF9B    50                   push eax
      00B8CF9C    A1 E018BA00          mov eax,dword ptr ds:[BA18E>
      00B8CFA1    8B48 78              mov ecx,dword ptr ds:[eax+7>
      00B8CFA4    3348 5C              xor ecx,dword ptr ds:[eax+5>
      00B8CFA7    3348 14              xor ecx,dword ptr ds:[eax+1>
      00B8CFAA    2BF9                 sub edi,ecx
      00B8CFAC    FFD7                 call edi                            ;F7进入后就过了第一层壳
      00B8CFAE    8BD8                 mov ebx,eax
      00B8CFB0    5F                   pop edi
      00B8CFB1    8BC3                 mov eax,ebx
      00B8CFB3    5E                   pop esi
      00B8CFB4    5B                   pop ebx
      00B8CFB5    C3                   retn
      
      //00B8CFAC    FFD7                 call edi   ;F7跟进后来到第二层壳的入口
      
      004B6001    60                   pushad
      004B6002    E8 03000000          call AutoXYDE.004B600A
      004B6007  - E9 EB045D45          jmp 45A864F7
      004B600C    55                   push ebp
      004B600D    C3                   retn
      004B600E    E8 01000000          call AutoXYDE.004B6014
      004B6013    EB 5D                jmp short AutoXYDE.004B6072
      004B6015    BB EDFFFFFF          mov ebx,-13
      004B601A    03DD                 add ebx,ebp
      004B601C    81EB 00600B00        sub ebx,0B6000
      004B6022    83BD 22040000 00     cmp dword ptr ss:[ebp+422],>
      004B6029    899D 22040000        mov dword ptr ss:[ebp+422],>
      004B602F    0F85 65030000        jnz AutoXYDE.004B639A
      
      三、第二层壳就非常简单了,此程序我放在硬盘里好久好久以前不会脱,主要原因是对壳不了解
          所以学东西还是不能急于求成,得把基础的学好了才能四半攻倍,接下来ESP定律就可以过第二层壳了
      004B6001    60                   pushad
      004B6002    E8 03000000          call AutoXYDE.004B600A                 ;F8单步到此行
      
      在命令行HR 0012F578(寄存器esp的值)回车,F9运行:
      
      004B63B0   /75 08                jnz short AutoXYDE.004B63BA
      004B63B2   |B8 01000000          mov eax,1
      004B63B7   |C2 0C00              retn 0C
      004B63BA   \68 B4204900          push AutoXYDE.004920B4
      004B63BF    C3                   retn
      
      F8单步来到程序的OEP:
      004920B4    55                   push ebp
      004920B5    8BEC                 mov ebp,esp
      004920B7    83C4 F4              add esp,-0C
      004920BA    53                   push ebx
      004920BB    B8 941E4900          mov eax,AutoXYDE.00491E94
      004920C0    E8 4F47F7FF          call AutoXYDE.00406814
      004920C5    8B1D 98574900        mov ebx,dword ptr ds:[49579>; AutoXYDE.004967D0
      
      用LordPE,DUMP程序,ImportREC修复IAT程序运行正常
      
      四、优化区段,加壳的原程序556KB,脱壳修复后的程序1.48M接下来把一些没用的区段删除
          优化是为了让程序运行速度更快,但也不能优化过度否则可能会造成只能在自己的机器上可以运行
          最后区段减肥成,其它的可以删除掉,优化后的文件大小680K ^_^
      
      CODE
      DATA
      .IDATA
      .RDATA
      .RSRC
      .ASPACK
      .MACKT
      
      
    --------------------------------------------------------------------------------
    【版权声明】: 本文原创于PYG技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                           2007年06月08日 下午 01:06:43

    [ 本帖最后由 glts 于 2007-6-8 13:12 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-10-10 17:24
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2007-6-8 15:26:50 | 显示全部楼层
    支持,顺便下载来练手/:09

    [ 本帖最后由 a__p 于 2007-6-8 15:30 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2007-6-8 15:32:42 | 显示全部楼层
    跟着来学习,支持!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-12-5 12:36
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-6-8 20:31:53 | 显示全部楼层
    跟着一步一步学!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-3 21:34:13 | 显示全部楼层
    我也下下来试试,呵呵
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-6-14 12:09
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-9-7 15:46:13 | 显示全部楼层
    顺便下载来练手跟着一步一步学
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-1-5 13:26
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2007-9-7 22:47:12 | 显示全部楼层
    优化区段能不能写详细点?这个我还不会.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-8 10:02:01 | 显示全部楼层
    太好了,我正要这方面的资料
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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