论坛: 编程破解 标题: [转帖]易语言程序的一种破解思路 复制本贴地址    
作者: yongmin [yongmin]    论坛用户   登录
作者:maomaoma

【文章标题】: 一种破解思路
【软件名称】: 国产某游戏平台
【软件大小】: 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、此方法是否可推而广之,未及测试,还请各位大侠多多指教:)

地主 发表时间: 07-04-07 23:01

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号