分析破解數字五筆3.0
軟體簡介:這是一個五筆輸入法,提供漢字的五筆輸入。
軟體下載:http://www.szwb.com
破解工具:TRW 2000
破解過程:
首先要注意的是,因為某些程式的特殊性,TRW並不能夠直接載入這些程式然後再進行跟蹤。但TRW並不是一定要載入程式才能夠跟蹤該程式。這個事例就是這樣的。
(1)先執行TRW,然後執行數字五筆,提示註冊是,填入註冊碼“12345678”(先隨便填)。
(2)按下CTR+N回到TRW中。在命令列,
輸入:bpx hmemcpy 回車 (用記憶體複製函式給它下斷點。)
按下:CTR+N
(返回數字五筆3.0註冊提示框,進行跟蹤函式的呼叫)
(4)按下注冊面版“OK”鍵。
在命令列,
輸入:bd 回車
(禁止斷點)
然後按F10單步從第一條執行起。(這裡不能用pmodule命令直接跳到數字五筆3.0程式的領空,是因為開始時我們並不是直接載入數字五筆3.0,然後再進行跟蹤的。)
(5)來到SZWB程式領空後,大家會看到一段如下的匯篇程式碼:
017F:014E6E0B 8D542428
LEA EDX,[ESP+28] (把你填入的註冊碼放到暫存器DX中)
017F:014E6E0F
52 PUSH EDX
(放入棧中)
017F:014E6E10 E8238A0000
CALL 014EF838
017F:014E6E15 8B0D08A74F01
MOV ECX,[014FA708] (把你的機器碼放到放到暫存器CX中)
017F:014E6E1B
A30CA74F01 MOV [014FA70C],EAX
017F:014E6E20
351A968DE5 XOR EAX,E58D961A (把填入的註冊碼與常數A進行異或運算)
017F:014E6E25 81F1F4EDDCAE XOR ECX,AEDCEDF4
(把你的機器碼與常數B進行異或運算)
017F:014E6E2B 83C404
ADD ESP,BYTE +04
017F:014E6E2E 3BC1
CMP EAX,ECX
(比較兩個表示式的值,來做判斷條件)
017F:014E6E30 0F85C4000000 JNZ
NEAR 014E6EFA (相同則不跳)
017F:014E6E36 6A00
PUSH BYTE +00
017F:014E6E38 68748E4F01
PUSH DWORD 014F8E74
017F:014E6E3D 68608E4F01
PUSH DWORD 014F8E60
017F:014E6E42 6A00
PUSH BYTE +00
到這裡,大家因該知道註冊碼了吧!
我的機器碼是:-1547960322;透過運算得到的註冊碼是:3907683344。
本人用VC寫的序號產生器原始碼如下:
#include <iostream.h>
void main()
{
unsigned long int a,b,c;
b=1263631342;
cout<<"請輸入你的機器碼! "<<endl;
cin>>a;
c=b^a;
cout<<"你的註冊碼是:"<<c<<endl;
cout<<"謝謝使用
!"<<'\n'<<endl;
}
菜鳥之作,讓高手見笑了!
(這是作者第二次寫破解文章,作者學破解時間也不長,不足處還望各位朋友給予指導和幫助,
在此,作者先先謝謝大家了!我的Emial:tianrongfeng@yahoo.com 我的QQ號碼:32069691)
風塵(長沙)
2002年4月16日