飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8311|回复: 23

[原创] 菜鸟也脱Armadillo的Code Splicing和Import Table Elimination

[复制链接]
  • TA的每日心情
    开心
    2021-10-9 19:49
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-2-16 21:39:06 | 显示全部楼层 |阅读模式
    【文章标题】: 菜鸟也脱Armadillo的Code Splicing和Import Table Elimination
    【文章作者】: 寂寞的季节
    【作者邮箱】: runle@163.com
    【作者主页】: www.TheJiMo.cn
    【软件名称】: 《侠义道II·侠义菜鸟辅助》
    【下载地址】: 看雪论坛求助贴
    【保护方式】: Armadillo的Code Splicing和Import Table Elimination
    【使用工具】: OllyDBD、PEiD、LordPE、ImportREC、ArmInline
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------

      先八卦一下:
        假期快结束了,又懒散过了一个月.啥也没学,就老想女生了....俺真失败.总要找点东西去做,否则会更颓废的.神啊 救救我吧
      长期潜水来,第一次写脱文,因为俺很懒.
      
      _____________________________________________________________
      【大概流程】:
      
       1.寻找OEP
       2.IAT大小
       3.ArmInline解决Code Splicing和Import Table Elimination
       4.修复
      _____________________________________________________________
      !- Protected Armadillo
      Protection system (Professional)
      !- <Protection Options>
      Standard protection or Minimum protection
      Enable Import Table Elimination
      Enable Strategic Code Splicing
      !- <Backup Key Options>
      Fixed Backup Keys
      !- <Compression Options>
      Best/Slowest Compression
      !- <Other Options>
      !- Version 4.40 31October2005
      标准版的保护方式,不是很麻烦.
      _____________________________________________________________
      一.OEP
      1.寻找Magic Jump返回的时机
      
      忽略所有异常,隐藏OD
    1.   0051BC43 >  55                  push ebp
    2.   0051BC44    8BEC                mov ebp,esp
    3.   0051BC46    6A FF               push -1
    4.   0051BC48    68 904F5400         push Loader.00544F90
    5.   0051BC4D    68 80B95100         push Loader.0051B980
    6.   0051BC52    64:A1 00000000      mov eax,dword ptr fs:[0]
    7.   0051BC58    50                  push eax
    8.   0051BC59    64:8925 00000000    mov dword ptr fs:[0],esp
    9.   0051BC60    83EC 58             sub esp,58
    10.   0051BC63    53                  push ebx
    11.   0051BC64    56                  push esi
    复制代码
    下断:he GetModuleHandleA+5  Shift+F9 观察堆栈
    1. 0012FF34  /0012FFC0
    2.   0012FF38  |0051BD0B  返回到 Loader.0051BD0B 来自 kernel32.GetModuleHandleA
    复制代码
    1. 0012EE60  /0012EE98
    2.   0012EE64  |5D175324  返回到 5D175324 来自 kernel32.GetModuleHandleA
    3.   0012EE68  |5D175370  ASCII "kernel32.dll"
    复制代码
    1. 0012EF20  /0012EF3C
    2.   0012EF24  |77F45BD8  返回到 SHLWAPI.77F45BD8 来自 kernel32.GetModuleHandleA
    3.   0012EF28  |77F4501C  ASCII "KERNEL32.DLL"
    复制代码
    1. 0012F738  /0012F7A0
    2.   0012F73C  |005068F3  返回到 Loader.005068F3 来自 kernel32.GetModuleHandleA
    复制代码
    1.   00129524  /0012EC6C
    2.   00129528  |00C27105  返回到 00C27105 来自 kernel32.GetModuleHandleA
    3.   0012952C  |00C3BC1C  ASCII "kernel32.dll"
    4.   00129530  |00C3CEC4  ASCII "VirtualAlloc"
    复制代码
    1. 00129524  /0012EC6C
    2.   00129528  |00C27122  返回到 00C27122 来自 kernel32.GetModuleHandleA
    3.   0012952C  |00C3BC1C  ASCII "kernel32.dll"
    4.   00129530  |00C3CEB8  ASCII "VirtualFree"
    5.   
    复制代码
    1. 00129288  /00129528
    2.   0012928C  |00C15FC9  返回到 00C15FC9 来自 kernel32.GetModuleHandleA
    3.   00129290  |001293DC  ASCII "kernel32.dll"
    复制代码
    删除断点 ALT+F9返回
    1.   00C15FE3    FF15 BC62C300       call dword ptr ds:[C362BC]                   ; kernel32.LoadLibraryA
    2.   00C15FE9    8B0D AC40C400       mov ecx,dword ptr ds:[C440AC]
    3.   00C15FEF    89040E              mov dword ptr ds:[esi+ecx],eax
    4.   00C15FF2    A1 AC40C400         mov eax,dword ptr ds:[C440AC]
    5.   00C15FF7    391C06              cmp dword ptr ds:[esi+eax],ebx
    6.   00C15FFA    0F84 2F010000       je 00C1612F
    7.   00C16000    33C9                xor ecx,ecx
    8.   00C16002    8B07                mov eax,dword ptr ds:[edi]
    9.   00C16004    3918                cmp dword ptr ds:[eax],ebx
    复制代码
    je 00C1612F修改jmp 00C1612F 回车跟到下面
    1.   00C1612F    83C7 0C             add edi,0C
    2.   00C16132    89BD 78FDFFFF       mov dword ptr ss:[ebp-288],edi
    3.   00C16138    83C6 04             add esi,4
    4.   00C1613B    395F FC             cmp dword ptr ds:[edi-4],ebx
    5.   00C1613E  ^ 0F85 49FEFFFF       jnz 00C15F8D
    6.   00C16144    EB 03               jmp short 00C16149
    7.   00C16146    D6                  salc
    8.   00C16147    D6                  salc
    复制代码
    jmp short 00C16149 下硬件断点  Shift+F9 断下 删除断点
      向上找回原来的Magic Jump撤销选择
      
      下断:BP CreateThread
    1. 7C810637 >  8BFF                mov edi,edi
    2.   7C810639    55                  push ebp
    3.   7C81063A    8BEC                mov ebp,esp
    4.   7C81063C    FF75 1C             push dword ptr ss:[ebp+1C]
    5.   7C81063F    FF75 18             push dword ptr ss:[ebp+18]
    6.   7C810642    FF75 14             push dword ptr ss:[ebp+14]
    7.   7C810645    FF75 10             push dword ptr ss:[ebp+10]
    8.   7C810648    FF75 0C             push dword ptr ss:[ebp+C]
    9.   7C81064B    FF75 08             push dword ptr ss:[ebp+8]
    复制代码
    取消断点 ALT+F9
    1. 00C1C51E    50                  push eax
    2.   00C1C51F    FF15 4C62C300       call dword ptr ds:[C3624C]                   ; kernel32.CloseHandle
    3.   00C1C525    5F                  pop edi
    4.   00C1C526    5E                  pop esi
    5.   00C1C527    C9                  leave
    6.   00C1C528    C3                  retn
    复制代码
    F8一路向下
    1. 00C2F9CC   /75 1B               jnz short 00C2F9E9
    2.   00C2F9CE   |FF77 04             push dword ptr ds:[edi+4]
    3.   00C2F9D1   |FF77 08             push dword ptr ds:[edi+8]
    4.   00C2F9D4   |6A 00               push 0
    5.   00C2F9D6   |FF77 0C             push dword ptr ds:[edi+C]
    6.   00C2F9D9   |8B50 60             mov edx,dword ptr ds:[eax+60]
    7.   00C2F9DC   |3350 44             xor edx,dword ptr ds:[eax+44]
    8.   00C2F9DF   |3350 1C             xor edx,dword ptr ds:[eax+1C]
    9.   00C2F9E2   |2BCA                sub ecx,edx
    10.   00C2F9E4   |FFD1                call ecx                                     ; F7跟进去
    复制代码
    1. 004C5324    55                  push ebp                                      OEP
    2.   004C5325    8BEC                mov ebp,esp
    3.   004C5327    83C4 F0             add esp,-10
    4.   004C532A    B8 A44E4C00         mov eax,Loader.004C4EA4
    5.   004C532F    E8 DC17F4FF         call Loader.00406B10
    6.   004C5334    A1 8C9C4C00         mov eax,dword ptr ds:[4C9C8C]
    7.   004C5339    8B00                mov eax,dword ptr ds:[eax]
    8.   004C533B    E8 94FDF9FF         call Loader.004650D4
    复制代码
    _____________________________________________________________
      二.寻找IAT大小
      Ctrl+b 搜索 FF 25
    1. 004012FC  - FF25 E81BE400       jmp dword ptr ds:[E41BE8]                    ; ntdll.RtlUnwind
    2.   00401302    8BC0                mov eax,eax
    3.   00401304  - FF25 1C16E400       jmp dword ptr ds:[E4161C]                    ; kernel32.UnhandledExceptionFilter
    4.   0040130A    8BC0                mov eax,eax
    5.   0040130C  - FF25 D018E400       jmp dword ptr ds:[E418D0]                    ; kernel32.WriteFile
    6.   00401312    8BC0                mov eax,eax
    7.   00401314  - FF25 AC1BE400       jmp dword ptr ds:[E41BAC]                    ; USER32.CharNextA
    8.   0040131A    8BC0                mov eax,eax
    9.   0040131C  - FF25 8014E400       jmp dword ptr ds:[E41480]                    ; kernel32.CreateThread
    复制代码
    jmp dword ptr ds:[E4161C]  
      数据窗口中跟随 内存地址
    1. 00E413B8  0006012C
    2.   00E413BC  021C0756
    3.   00E413C0  77D2F8EA  USER32.FrameRect
    4.   00E413C4  77D18E28  USER32.RegisterWindowMessageA
    5.   
    6.   
    7.   00E41D68  76B10000  winmm.76B10000
    8.   00E41D6C  BAADF00D
    复制代码
    IAT头  00E413BC
      IAT大小00E41D6C-00E413BC=9B0
      
      _____________________________________________________________
      三.ArmInline解决Code Splicing和Import Table Elimination
      打开ArmInline选择进程Loader.exe[468]
      Code Splicing选项中将代码长度改为20000
      
      Import Table输入自己记录数据 IAT头00E413BC 大小9B0 新建的IAT它提供的信息是4CC000 我们到内存窗口看下
      内存映射,项目 26
       地址=004CC000
       大小=00003000 (12288.)
       物主=Loader   00400000
       区段=.idata
       类型=Imag 01001002
       访问=R
       初始访问=RWE
      正好不用修改了 删除拼接和变基IAT
      

      _____________________________________________________________
      四.修复
      ArmInline修复完毕后就可以用LordPE来dump进程了
      ImportREC载入修复,全是有效的,保存吧
      
      可以运行了  Borland Delphi 6.0 - 7.0


    --------------------------------------------------------------------------------
    【经验总结】
      标准版的没啥难度,非标准版就麻烦许多,而且没有CC保护更容易了. 感谢观赏
      
    --------------------------------------------------------------------------------
    【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!

                                                           2008年02月16日 下午 07:46:04

    [ 本帖最后由 寂寞的季节 于 2008-2-16 22:30 编辑 ]

    本帖子中包含更多资源

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

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-3 23:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-2-16 21:59:19 | 显示全部楼层
    好啊,谢谢分享,顶一个先啊,写得很详细,学习了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-16 23:19:37 | 显示全部楼层
    十分工整!
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2018-6-6 15:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-2-16 23:19:49 | 显示全部楼层
    /:good 非常工整,很好!贴子排得很整齐.
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-10-9 19:49
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2008-2-16 23:34:55 | 显示全部楼层
    几位客气了,也见笑了.
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-10-13 19:52
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2008-2-16 23:34:55 | 显示全部楼层
    xuexi排版技术
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-17 00:05:05 | 显示全部楼层
    学习一下,谢谢发文
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-24 09:30:41 | 显示全部楼层
    学习下 好文 谢谢
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-1-27 00:17
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2008-2-26 22:00:38 | 显示全部楼层
    请吧 连接地址贴出来 下来练练手
    谢谢楼主的强文
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-27 19:25:25 | 显示全部楼层
    好东西,就该多支持
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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