首页
社区
课程
招聘
[原创]菜鸟也脱Armadillo的Code Splicing和Import Table Elimination
发表于: 2008-2-16 20:08 3866

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

2008-2-16 20:08
3866
【文章标题】: 菜鸟也脱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
  0051BC43 >  55                  push ebp
  0051BC44    8BEC                mov ebp,esp
  0051BC46    6A FF               push -1
  0051BC48    68 904F5400         push Loader.00544F90
  0051BC4D    68 80B95100         push Loader.0051B980
  0051BC52    64:A1 00000000      mov eax,dword ptr fs:[0]
  0051BC58    50                  push eax
  0051BC59    64:8925 00000000    mov dword ptr fs:[0],esp
  0051BC60    83EC 58             sub esp,58
  0051BC63    53                  push ebx
  0051BC64    56                  push esi
下断:he GetModuleHandleA+5  Shift+F9 观察堆栈
0012FF34  /0012FFC0
  0012FF38  |0051BD0B  返回到 Loader.0051BD0B 来自 kernel32.GetModuleHandleA
0012EE60  /0012EE98
  0012EE64  |5D175324  返回到 5D175324 来自 kernel32.GetModuleHandleA
  0012EE68  |5D175370  ASCII "kernel32.dll"
 0012EF20  /0012EF3C
  0012EF24  |77F45BD8  返回到 SHLWAPI.77F45BD8 来自 kernel32.GetModuleHandleA
  0012EF28  |77F4501C  ASCII "KERNEL32.DLL"
 0012F738  /0012F7A0
  0012F73C  |005068F3  返回到 Loader.005068F3 来自 kernel32.GetModuleHandleA
  00129524  /0012EC6C
  00129528  |00C27105  返回到 00C27105 来自 kernel32.GetModuleHandleA
  0012952C  |00C3BC1C  ASCII "kernel32.dll"
  00129530  |00C3CEC4  ASCII "VirtualAlloc"
 00129524  /0012EC6C
  00129528  |00C27122  返回到 00C27122 来自 kernel32.GetModuleHandleA
  0012952C  |00C3BC1C  ASCII "kernel32.dll"
  00129530  |00C3CEB8  ASCII "VirtualFree"
  
 00129288  /00129528
  0012928C  |00C15FC9  返回到 00C15FC9 来自 kernel32.GetModuleHandleA
  00129290  |001293DC  ASCII "kernel32.dll"
删除断点 ALT+F9返回
  00C15FE3    FF15 BC62C300       call dword ptr ds:[C362BC]                   ; kernel32.LoadLibraryA
  00C15FE9    8B0D AC40C400       mov ecx,dword ptr ds:[C440AC]
  00C15FEF    89040E              mov dword ptr ds:[esi+ecx],eax
  00C15FF2    A1 AC40C400         mov eax,dword ptr ds:[C440AC]
  00C15FF7    391C06              cmp dword ptr ds:[esi+eax],ebx
  00C15FFA    0F84 2F010000       je 00C1612F
  00C16000    33C9                xor ecx,ecx
  00C16002    8B07                mov eax,dword ptr ds:[edi]
  00C16004    3918                cmp dword ptr ds:[eax],ebx
je 00C1612F修改jmp 00C1612F 回车跟到下面
  00C1612F    83C7 0C             add edi,0C
  00C16132    89BD 78FDFFFF       mov dword ptr ss:[ebp-288],edi
  00C16138    83C6 04             add esi,4
  00C1613B    395F FC             cmp dword ptr ds:[edi-4],ebx
  00C1613E  ^ 0F85 49FEFFFF       jnz 00C15F8D
  00C16144    EB 03               jmp short 00C16149
  00C16146    D6                  salc
  00C16147    D6                  salc
jmp short 00C16149 下硬件断点  Shift+F9 断下 删除断点
  向上找回原来的Magic Jump撤销选择
  
  下断:BP CreateThread
7C810637 >  8BFF                mov edi,edi
  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]
取消断点 ALT+F9
00C1C51E    50                  push eax
  00C1C51F    FF15 4C62C300       call dword ptr ds:[C3624C]                   ; kernel32.CloseHandle
  00C1C525    5F                  pop edi
  00C1C526    5E                  pop esi
  00C1C527    C9                  leave
  00C1C528    C3                  retn
F8一路向下
 00C2F9CC   /75 1B               jnz short 00C2F9E9
  00C2F9CE   |FF77 04             push dword ptr ds:[edi+4]
  00C2F9D1   |FF77 08             push dword ptr ds:[edi+8]
  00C2F9D4   |6A 00               push 0
  00C2F9D6   |FF77 0C             push dword ptr ds:[edi+C]
  00C2F9D9   |8B50 60             mov edx,dword ptr ds:[eax+60]
  00C2F9DC   |3350 44             xor edx,dword ptr ds:[eax+44]
  00C2F9DF   |3350 1C             xor edx,dword ptr ds:[eax+1C]
  00C2F9E2   |2BCA                sub ecx,edx
  00C2F9E4   |FFD1                call ecx                                     ; F7跟进去
004C5324    55                  push ebp                                      OEP
  004C5325    8BEC                mov ebp,esp
  004C5327    83C4 F0             add esp,-10
  004C532A    B8 A44E4C00         mov eax,Loader.004C4EA4
  004C532F    E8 DC17F4FF         call Loader.00406B10
  004C5334    A1 8C9C4C00         mov eax,dword ptr ds:[4C9C8C]
  004C5339    8B00                mov eax,dword ptr ds:[eax]
  004C533B    E8 94FDF9FF         call Loader.004650D4
_____________________________________________________________
  二.寻找IAT大小
  Ctrl+b 搜索 FF 25
004012FC  - FF25 E81BE400       jmp dword ptr ds:[E41BE8]                    ; ntdll.RtlUnwind
  00401302    8BC0                mov eax,eax
  00401304  - FF25 1C16E400       jmp dword ptr ds:[E4161C]                    ; kernel32.UnhandledExceptionFilter
  0040130A    8BC0                mov eax,eax
  0040130C  - FF25 D018E400       jmp dword ptr ds:[E418D0]                    ; kernel32.WriteFile
  00401312    8BC0                mov eax,eax
  00401314  - FF25 AC1BE400       jmp dword ptr ds:[E41BAC]                    ; USER32.CharNextA
  0040131A    8BC0                mov eax,eax
  0040131C  - FF25 8014E400       jmp dword ptr ds:[E41480]                    ; kernel32.CreateThread
jmp dword ptr ds:[E4161C]  
  数据窗口中跟随 内存地址
00E413B8  0006012C
  00E413BC  021C0756
  00E413C0  77D2F8EA  USER32.FrameRect
  00E413C4  77D18E28  USER32.RegisterWindowMessageA
  
  
  00E41D68  76B10000  winmm.76B10000
  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

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
对你的学习态度鼓励一下。
2008-2-16 20:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习一下你的学习态度。
2008-2-16 22:14
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
兄弟有没有遇见过脱壳时候都显示正常,就是脱出来不能运行的情况?
2008-2-16 22:20
0
游客
登录 | 注册 方可回帖
返回
//