【文章标题】: 一种破解思路
【软件名称】: 国产某游戏平台
【软件大小】: 2544KB
【下载地址】: 无
【加壳方式】: 无
【保护方式】: 无
【编写语言】: Microsoft Visual C++ 6.0 [Overlay]
【使用工具】: OD
【操作平台】: WinXP
【软件介绍】: 游戏平台
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
一种简易下断方法
1、Peid检测为Microsoft Visual C++ 6.0 [Overlay],查区段存在.ecode
2、OD载入运行,Alt+E模块中含E语言模块,常规方法容易迷失在E语言模块空间中,故另寻它路
3、点注册,输入假码,Alt+M打开内存空间,在.ecode区段下访问中断,点注册程序中断如下
004615CC 55 push ebp ; OD中断于此
004615CD 8BEC mov ebp, esp
004615CF 81EC 10000000 sub esp, 10
004615D5 C745 FC 0000000>mov dword ptr [ebp-4], 0
004615DC C745 F8 0000000>mov dword ptr [ebp-8], 0
004615E3 6A FF push -1
004615E5 6A 08 push 8
004615E7 68 D30A0116 push 16010AD3
004615EC 68 30020152 push 52010230
004615F1 E8 B77D0000 call 004693AD ; 取假码
004615F6 83C4 10 add esp, 10
004615F9 8945 F4 mov dword ptr [ebp-C], eax
004615FC 68 66944000 push 00409466
00461601 FF75 F4 push dword ptr [ebp-C]
00461604 E8 F637FFFF call 00454DFF
00461609 83C4 08 add esp, 8
0046160C 83F8 00 cmp eax, 0
0046160F B8 00000000 mov eax, 0
00461614 0F95C0 setne al
00461617 8945 F0 mov dword ptr [ebp-10], eax
0046161A 8B5D F4 mov ebx, dword ptr [ebp-C]
0046161D 85DB test ebx, ebx
0046161F 74 09 je short 0046162A
00461621 53 push ebx
00461622 E8 6E7D0000 call 00469395
00461627 83C4 04 add esp, 4
0046162A 837D F0 00 cmp dword ptr [ebp-10], 0
0046162E 0F84 58030000 je 0046198C
00461634 68 00000000 push 0
00461639 BB C4060000 mov ebx, 6C4
0046163E E8 5E7D0000 call 004693A1 ; 计算机器码
00461643 83C4 04 add esp, 4
00461646 8945 FC mov dword ptr [ebp-4], eax
00461649 837D FC 00 cmp dword ptr [ebp-4], 0
0046164D 0F84 94010000 je 004617E7
00461653 68 01030080 push 80000301
00461658 6A 00 push 0
0046165A 68 AF727B0C push 0C7B72AF
0046165F 68 01030080 push 80000301
00461664 6A 00 push 0
00461666 FF75 FC push dword ptr [ebp-4]
00461669 68 02000000 push 2
0046166E BB CC000000 mov ebx, 0CC
00461673 E8 297D0000 call 004693A1 ; 关键call,计算真码
00461678 83C4 1C add esp, 1C
0046167B 68 01030080 push 80000301
00461680 6A 00 push 0
00461682 50 push eax
00461683 68 01000000 push 1
00461688 BB 68010000 mov ebx, 168
0046168D E8 0F7D0000 call 004693A1
00461692 83C4 10 add esp, 10 ; 此处可作内存注册机
00461695 8945 F0 mov dword ptr [ebp-10], eax
00461698 8B45 F0 mov eax, dword ptr [ebp-10]
0046169B 50 push eax
0046169C 8B5D F8 mov ebx, dword ptr [ebp-8]
0046169F 85DB test ebx, ebx
004616A1 74 09 je short 004616AC
004616A3 53 push ebx
004616A4 E8 EC7C0000 call 00469395
004616A9 83C4 04 add esp, 4
004616AC 58 pop eax
004616AD 8945 F8 mov dword ptr [ebp-8], eax
004616B0 6A FF push -1
004616B2 6A 08 push 8
004616B4 68 D30A0116 push 16010AD3
004616B9 68 30020152 push 52010230
004616BE E8 EA7C0000 call 004693AD
004616C3 83C4 10 add esp, 10
004616C6 8945 F4 mov dword ptr [ebp-C], eax
004616C9 8B45 F8 mov eax, dword ptr [ebp-8]
004616CC 50 push eax
004616CD FF75 F4 push dword ptr [ebp-C]
004616D0 E8 2A37FFFF call 00454DFF ; 真假码比较
004616D5 83C4 08 add esp, 8
004616D8 83F8 00 cmp eax, 0
004616DB B8 00000000 mov eax, 0
004616E0 0F94C0 sete al
004616E3 8945 F0 mov dword ptr [ebp-10], eax
004616E6 8B5D F4 mov ebx, dword ptr [ebp-C]
004616E9 85DB test ebx, ebx
004616EB 74 09 je short 004616F6
004616ED 53 push ebx
004616EE E8 A27C0000 call 00469395
004616F3 83C4 04 add esp, 4
004616F6 837D F0 00 cmp dword ptr [ebp-10], 0
004616FA 0F84 A4000000 je 004617A4 ; 关键跳
00461700 68 04000080 push 80000004
00461705 6A 00 push 0
00461707 8B45 F8 mov eax, dword ptr [ebp-8]
0046170A 85C0 test eax, eax
--------------------------------------------------------------------------------
【经验总结】
1、VC++与E语言混合编程,直接在相应区段下断能快速定位到注册算法处
2、此方法是否可推而广之,未及测试,还请各位大侠多多指教:)
--------------------------------------------------------------------------------
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!