对chap532程序时间限制的破解分析

//以后不会写这样的文章了,截图太麻烦了

程序下载: http://115.com/file/belwaox2

打开程序,明显有限制

对chap532程序时间限制的破解分析_第1张图片

 

首先 Peid 检测程序编程语言是Borland C++,运行程序。

对chap532程序时间限制的破解分析_第2张图片

 

程序调用了系统时间函数 GetLocalTime,这样才能判断当前时间是否过期

GetLocalTime 函数原型

VOID GetLocalTime(

    LPSYSTEMTIME lpSystemTime         // 存放系统时间结构的地址
   );     


OD载入程序

对chap532程序时间限制的破解分析_第3张图片

 

命令行下断点

bp GetLocalTime

 

 

F9运行立即中断

注意它是cw3220.dll的调用,点右键-反汇编中跟随。


对chap532程序时间限制的破解分析_第4张图片

 

 

来到

对chap532程序时间限制的破解分析_第5张图片

因为不是程序领空,所以Ctrl+F9根据 OD信息框提示返回程序领空。

0040108A  |.  E8 3F040000   CALL <JMP.&cw3220._getdate> //调用运行库中的GetLocalTime函数。
0040108F  |.  59            POP ECX                                  ;  0012FD98
00401090  |.  817D F8 CD070>CMP DWORD PTR SS:[EBP-8],7CD  //比较7D4(2004)和7CD9(1997)
00401097  |.  7F 0F         JG SHORT chap532.004010A8  //大于则跳到错误提示处。
00401099  |.  68 74204000   PUSH chap532.00402074                    ; /Text = "Within Demonstration Time"
0040109E  |.  6A 65         PUSH 65                                  ; |ControlID = 65 (101.)
004010A0  |.  53            PUSH EBX                                 ; |hWnd
004010A1  |.  E8 5E040000   CALL <JMP.&USER32.SetDlgItemTextA>       ; \SetDlgItemTextA
004010A6  |.  EB 23         JMP SHORT chap532.004010CB
004010A8  |>  68 00100000   PUSH 1000  //错误提示。                  ; /Style = MB_OK|MB_SYSTEMMODAL
004010AD  |.  68 CA204000   PUSH chap532.004020CA                    ; |Title = "Bad Luck"
004010B2  |.  68 8E204000   PUSH chap532.0040208E                    ; |Text = "The demonstration period for this program has been exceeded"
004010B7  |.  6A 00         PUSH 0                                   ; |hOwner = NULL
004010B9  |.  E8 52040000   CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA
004010BE  |.  68 D3204000   PUSH chap532.004020D3                    ; /Text = "Demonstration Period Exceeded"
004010C3  |.  6A 65         PUSH 65                                  ; |ControlID = 65 (101.)
004010C5  |.  53            PUSH EBX                                 ; |hWnd
004010C6  |.  E8 39040000   CALL <JMP.&USER32.SetDlgItemTextA>       ; \SetDlgItemTextA


00401097  |.  7F 0F         JG SHORT chap532.004010A8  //大于则跳到错误提示处。

修改为

00401097      90            NOP
00401098      90            NOP


对chap532程序时间限制的破解分析_第6张图片

 

成功对chap532程序时间限制的破解分析_第7张图片

你可能感兴趣的:(对chap532程序时间限制的破解分析)