【文章标题】: 巧脱Themida/WinLicense Delphi +OEP修复
【文章作者】: 夜凉如水
【作者邮箱】: Estelle@yeah.net
【作者QQ号】: 272227777
【软件名称】: 某游戏修改器
【下载地址】: 自己搜索下载
【加壳方式】: 代码变形 iat加密 oep偷取
【保护方式】: Themida/WinLicense
【编写语言】: Delphi6.0
【使用工具】: 脱壳机 +Ollydbg修改版
【操作平台】: 电脑疯子
【软件介绍】: 某游戏修改器
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
最新玩Themida/WinLicense的人越来越多 ,呵呵我也来热闹下
首先PEID查壳为Themida/WinLicense 第一个想到的就是脱壳机 脱壳以后运行无果,发现程序无法运行 引出下面的脱壳过程
该工具检测几乎所有的crack工具和工具目录名称进程 所以只能使用修改版了
运行fxyang的ThemidaScript.for.V1.9.10+.0.4.oSc 运行lordpe dump程序 嘿嘿前人的经验到底不懂
00406380 53 push ebx //伪oep eax=004e7974 call 00406380 ★
00406381 8BD8 mov ebx,eax ; un.004E7974
00406383 33C0 xor eax,eax ; un.004E7974
00406385 A3 A0804E00 mov dword ptr ds:[4E80A0],eax ; un.004E7974
0040638A 6A 00 push 0
0040638C E8 2BFFFFFF call 004062BC ; <jmp.&kernel32.GetModuleHandleA>
00406391 A3 68D64E00 mov dword ptr ds:[4ED668],eax ; un.004E7974
00406396 A1 68D64E00 mov eax,dword ptr ds:[4ED668]
0040639B A3 AC804E00 mov dword ptr ds:[4E80AC],eax ; un.004E7974
004063A0 33C0 xor eax,eax ; un.004E7974
004063A2 A3 B0804E00 mov dword ptr ds:[4E80B0],eax ; un.004E7974
004063A7 33C0 xor eax,eax ; un.004E7974
004063A9 A3 B4804E00 mov dword ptr ds:[4E80B4],eax ; un.004E7974
004063AE E8 C1FFFFFF call 00406374 ; un.00406374
004063B3 BA A8804E00 mov edx,4E80A8
004063B8 8BC3 mov eax,ebx
004063BA E8 E5DBFFFF call 00403FA4 ; un.00403FA4
004063BF 5B pop ebx ; un.004E7CF4
004063C0 C3 retn //f8运行到此 F4程序就运行 所以只能F8 返回VM
code断下F2断点Shift+F9 2次
0046B540 53 push ebx // call 46b540 ★
0046B541 A1 60C34E00 mov eax,dword ptr ds:[4EC360]
0046B546 8338 00 cmp dword ptr ds:[eax],0
0046B549 74 0A je short 0046B555 ; 1.0046B555
0046B54B 8B1D 60C34E00 mov ebx,dword ptr ds:[4EC360] ; 1.004ED044
0046B551 8B1B mov ebx,dword ptr ds:[ebx]
0046B553 FFD3 call ebx
0046B555 5B pop ebx ; 1.007EDF09
0046B556 C3 retn //f8运行到此返回vm
code断下F2断点Shift+F9第一次
00E00818 FF30 push dword ptr ds:[eax] ; 1.004EDDF0
00E0081A 8B0424 mov eax,dword ptr ss:[esp] ; 1.004EC320
00E0081D 53 push ebx
00E0081E 89E3 mov ebx,esp
00E00820 81C3 04000000 add ebx,4
00E00826 51 push ecx
00E00827 B9 04000000 mov ecx,4
00E0082C 01CB add ebx,ecx
00E0082E 59 pop ecx ; 1.004EC320
00E0082F 871C24 xchg dword ptr ss:[esp],ebx
00E00832 5C pop esp ; 1.004EC320
// eax=004ec320 ★
第二次
00E00818 FF30 push dword ptr ds:[eax] ; 1.004EDBE8
00E0081A 8B0424 mov eax,dword ptr ss:[esp] ; 1.004EC454
00E0081D 53 push ebx
00E0081E 89E3 mov ebx,esp
00E00820 81C3 04000000 add ebx,4
00E00826 51 push ecx
00E00827 B9 04000000 mov ecx,4
00E0082C 01CB add ebx,ecx
00E0082E 59 pop ecx ; 1.004EC454
00E0082F 871C24 xchg dword ptr ss:[esp],ebx
00E00832 5C pop esp ; 1.004EC454
//eax=004ec454 ★
第3次
00DBF602 FF30 push dword ptr ds:[eax]
00DBF604 8B0424 mov eax,dword ptr ss:[esp] ; 1.004EDBE8
00DBF607 ^ E9 130EF7FF jmp 00D3041F
第4次
00D92AB6 FF33 push dword ptr ds:[ebx] ; 1.004BF81C
00D92AB8 50 push eax
00D92AB9 B8 21224E5E mov eax,5E4E2221
00D92ABE 014424 04 add dword ptr ss:[esp+4],eax
00D92AC2 58 pop eax ; 1.004BF7D0
00D92AC3 FF3424 push dword ptr ss:[esp] ; 1.004BF7D0
00D92AC6 5B pop ebx ; 1.004BF7D0
00D92AC7 83C4 04 add esp,4
00D92ACA 81EB 21224E5E sub ebx,5E4E2221
//ebx= 004bf7d0 ★
第5次
0046B558 55 push ebp //call 0046b558 ★
0046B559 8BEC mov ebp,esp
0046B55B 51 push ecx ; 1.004EDDF0
0046B55C 53 push ebx
0046B55D 56 push esi
0046B55E 57 push edi
0046B55F 894D FC mov dword ptr ss:[ebp-4],ecx ; 1.004EDDF0
0046B562 8BDA mov ebx,edx ; 1.004BF81C
0046B564 8BF0 mov esi,eax
0046B566 8BC3 mov eax,ebx
0046B568 FF50 F4 call dword ptr ds:[eax-C]
//EIP ==0046B558 ★ |