这几天用到一个软件,未注册版有100条的限制。根据About信息里提供的信息联系原作者,没有任何回应。无奈之下尝试自行 Crack 。现将过程摘录如下:
原则:
1、Crack 版本不外传
2、不涉及具体的软件名称
3、不对外承接 Crack 类工作
首先用 ollydbg 打开主程序,搜索达到100条后, MessageBox的提示的字符串。找到的结果为:
0041F260
之后,找到调用这一字符串的位置(共有三处): 0040DBC0 PUSH XXXXXXXX.0041F260
0040F317 PUSH XXXXXXXX.0041F260
004101B7 PUSH XXXXXXXX.0041F260
之后分别对三处代码进行观察,发现基本的过程极为相似:
; 以 0040DBC0 这一处为例:
0040DBAE MOV ECX, XXXXXXXX.0047B290
0040DBB3 CALL XXXXXXXX.0040ACD00040DBB8 TEST EAX, EAX
0040DBBA JE SHORT XXXXXXXX.0040DBD6; 估计 0040DBD6 是正常处理的部分,代码很长,很复杂。
0040DBBC PUSH 0
0040DBBE PUSH 0
0040DBC0 PUSH XXXXXXXX.0041F260
0040DBC5 CALL <jmp.&MFC42.#1200>
; 0040F317 :
0040F2FE mov edx,dword ptr ds:[edi+7A]
0040F301 mov ecx,XXXXXXXX.0047B290
0040F306 inc edx
0040F307 mov dword ptr ds:[edi+7A],edx
0040F30A call XXXXXXXX.0040ACD0
0040F30F test eax,eax
0040F311 je short XXXXXXXX.0040F32D
0040F313 push 0
0040F315 push 0
0040F317 push XXXXXXXX.0041F260
0040F31C call <jmp.&MFC42.#1200>
; 004101B7 :
0041019E mov edx,dword ptr ds:[edi+7A]
004101A1 mov ecx,XXXXXXXX.0047B290
004101A6 inc edx
004101A7 mov dword ptr ds:[edi+7A],edx
004101AA call XXXXXXXX.0040ACD0
004101AF test eax,eax
004101B1 je short XXXXXXXX.004101CD
004101B3 push 0
004101B5 push 0
004101B7 push XXXXXXXX.0041F260
004101BC call <jmp.&MFC42.#1200>
由于整个过程很简单,JE之前只涉及到一个 CALL XXXXXXXX.0040ACD0,因此观察这处代码:
0040ACD0 MOV EAX, DWORD PTR DS:[ECX+1E4]
0040ACD6 XOR EAX, EAX
0040ACD8 CMP EDX, 64H
0040ACDB SETGE AL
0040ACD8 RETN
将 0040ACDB 这里的 SETGE 语句改为 NOP ,Crack 完成。