- UID
- 20304
注册时间2006-8-11
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 开心 2021-10-9 19:49 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
|
【文章标题】: 菜鸟也脱Armadillo的Code Splicing和Import Table Elimination
【文章作者】: 寂寞的季节
【作者邮箱】: [email protected]
【作者主页】: 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
[ 本帖最后由 寂寞的季节 于 2008-2-16 22:30 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|