萬能五筆2002分析筆記!
萬能五筆2002這個軟體好像已經有人分析了,不過我沒看到!我是昨天下午從作者主頁下載的,拿回來後就開始分析了,如果一定要說我是抄回來的我也沒辦法! (不過下面的東西絕對是我自己在家花了一晚時間整理的,絕對沒有抄襲!!!)
第一次做這麼詳細的分析,可能有很多地方錯誤,請大哥哥\大姐姐指正和支援!
【軟體簡介】:本系統的目的在於提供一種萬能的多元漢字輸入法,透過這種輸入法,可以克服現有技術的缺點,以多重(多元)漢字編碼代替傳統的單一編碼。具體地說,就是要設計並實現一種包含多種互不衝突、相輔相成、相互取長補短的漢字編碼方案的萬能漢字輸入法,即:在一種漢字編碼輸入狀態下,對任一個漢字或片語短語,同時存在多種編碼輸入途徑,從而提供更便利、更高效的編碼輸入。
【下載頁面】:http://www.tt98.com/wnwb2002/wnwb_rjxz.htm
【軟體大小】:1556K
【軟體限制】:試用200次...還有就是不知道了!呵呵...
【作者宣告】:只是個人興趣,讀者看後所做出的一切事情與我無關,我也不負責,希望讀者能三思再後行!
【破解工具】:w32Dasm TRW2K PEid
―――――――――――――――――――――――――――――――――
【過 程】:先用w32Dasm反它,根據參考很快就找到關鍵!下斷bpx 40EB98 F5返回,輸入假的註冊碼7878787878787878
一定要大於16位,按OK攔下來到下面:
:0040EB98 8B742474 mov esi, dword ptr [esp+74]
*
Reference To: USER32.GetDlgItemTextA, Ord:0104h
|
:0040EB9C 8B3D40524200 mov
edi, dword ptr [00425240]
:0040EBA2 8D4C243C
lea ecx, dword ptr [esp+3C]
:0040EBA6 6A32
push 00000032
:0040EBA8
51 push
ecx
:0040EBA9 68F7030000 push
000003F7
:0040EBAE 56
push esi
:0040EBAF FFD7
call edi
:0040EBB1 8D542428
lea edx, dword ptr [esp+28]
:0040EBB5
6A11 push
00000011
:0040EBB7 52
push edx
:0040EBB8 68F8030000
push 000003F8
:0040EBBD 56
push esi
:0040EBBE FFD7
call edi
:0040EBC0 6A04
push 00000004
:0040EBC2 56
push esi
*
Reference To: USER32.ShowWindow, Ord:026Ah
|
:0040EBC3
FF15E8514200 Call dword ptr [004251E8]
:0040EBC9
8D7C243C lea edi, dword
ptr [esp+3C] \\取得釋出網站的名稱
:0040EBCD 83C9FF
or ecx, FFFFFFFF
:0040EBD0 33C0
xor eax, eax
:0040EBD2 F2
repnz
\\這個是什麼用的就不清楚了!
:0040EBD3
AE scasb
\\這個是什麼用的就不清楚了!
:0040EBD4
F7D1 not
ecx \\取反
:0040EBD6
49 dec
ecx \\減一
:0040EBD7
83F904 cmp ecx,
00000004 \\?!比較釋出網站是否小於4個位元組,我真搞不懂,那個筐裡的東西是灰色的根本填不了東西可,就是小於四個位元組也不關我事啊!!暈哦...
:0040EBDA
7342 jnb
0040EC1E \\小於就不跳,死掉!不小於就跳到下面!
:0040EBDC
A1F08F4300 mov eax, dword ptr
[00438FF0]
:0040EBE1 6A10
push 00000010
:0040EBE3 85C0
test eax, eax
*
Possible StringData Ref from Data Obj ->"Error"
|
:0040EBE5 6800804200
push 00428000
:0040EBEA 7519
jne 0040EC05
*
Possible StringData Ref from Data Obj ->"釋出網站名不能小於4個位元組!"
|
:0040EBEC 686CA74200
push 0042A76C
:0040EBF1 56
push esi
--------------------------------------------------------------------
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040EBDA(C)
|
:0040EC1E
8D7C2428 lea edi, dword
ptr [esp+28] \\從0040EBDA跳到這裡!EDI裡是我輸入的註冊碼!
:0040EC22 83C9FF
or ecx, FFFFFFFF
:0040EC25
33C0 xor
eax, eax
:0040EC27 F2
repnz
\\?????????
:0040EC28 AE
scasb
\\?????????
:0040EC29
F7D1 not
ecx
\\取反
:0040EC2B 49
dec ecx
\\減一
:0040EC2C 83F910
cmp ecx, 00000010
\\比較註冊碼是否大於16位!不明白的是怎麼取得註冊碼的位數的!可能是我太菜了...
:0040EC2F 7442
je 0040EC73
\\大於就跳到下面,否則就死掉!
:0040EC31
A1F08F4300 mov eax, dword ptr
[00438FF0]
* Referenced by a (U)nconditional or (C)onditional
Jump at Address:
|:0040EC91(C)
|
:0040EC36 85C0
test eax, eax
:0040EC38 6A10
push 00000010
*
Possible StringData Ref from Data Obj ->"Error"
|
:0040EC3A 6800804200
push 00428000
:0040EC3F 7519
jne 0040EC5A
*
Possible StringData Ref from Data Obj ->"解碼失敗!"
|
:0040EC41 6844A74200
push 0042A744
:0040EC46 56
push esi
------------------------------------------------------------------
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040EC2F(C)
|
:0040EC73
8D442428 lea eax, dword
ptr [esp+28] \\從0040EC2F跳到這裡!EAX裝的是我輸入的註冊碼!
:0040EC77 6800994300
push 00439900
\\這裡是機器碼壓入堆疊!
:0040EC7C 8D4C2440
lea ecx, dword ptr [esp+40] \\ECX裝的是釋出網站WWW.TT98.COM!
:0040EC80
50 push
eax \\我輸入的註冊碼壓棧
:0040EC81
51 push
ecx \\www.TT98.COM壓棧
:0040EC82
E8D925FFFF call 00401260
\\關鍵CALL F8追進去!好眼熟啊,經典比較!!
:0040EC87
83C40C add esp,
0000000C
:0040EC8A 85C0
test eax, eax
\\註冊碼是否正確
:0040EC8C A1F08F4300 mov
eax, dword ptr [00438FF0]
:0040EC91 74A3
je 0040EC36
\\不正確就跳回去死掉!!!
:0040EC93 85C0
test eax, eax
:0040EC95 6A40
push 00000040
*
Possible StringData Ref from Data Obj ->"Success"
|
:0040EC97 68909F4200
push 00429F90
:0040EC9C 7507
jne 0040ECA5
*
Possible StringData Ref from Data Obj ->"解碼成功,感謝您對國產共享軟體的支援!"
|
:0040EC9E 6810A74200
push 0042A710
:0040ECA3 EB05
jmp 0040ECAA
------------------------------------------------------------------
上面F8到這裡:
:00401260
83EC14 sub esp,
00000014
:00401263 53
push ebx
:00401264 55
push ebp
:00401265 8B6C2420
mov ebp, dword ptr [esp+20]
\\這裡是www.TT98.com
:00401269 56
push esi
:0040126A 57
push edi
:0040126B C644242000
mov [esp+20], 00
*
Possible StringData Ref from Data Obj ->"www.TT98.net"
|
:00401270 BE40794200
mov esi, 00427940
\\這裡是www.TT98.net
:00401275 8BC5
mov eax, ebp
\\這裡是www.TT98.com
* Referenced
by a (U)nconditional or (C)onditional Jump at Address:
|:00401299(C)
|
:00401277
8A10 mov
dl, byte ptr [eax] \\把www.TT98.com的第一個字元的ASCII碼放入EDX的低位!
:00401279
8A1E mov
bl, byte ptr [esi] \\把www.TT98.net的第一個字元的ASCII碼放入EBX的低位!
:0040127B
8ACA mov
cl, dl
:0040127D 3AD3
cmp dl, bl
\\比較
:0040127F 751E
jne 0040129F
\\不等於就跳下去死
:00401281 84C9
test cl, cl
\\是否為零
:00401283 7416
je 0040129B
\\是就跳下去死
:00401285 8A5001
mov dl, byte ptr
[eax+01] \\把www.TT98.com的第二個字元的ASCII碼放入EDX的低位!
:00401288
8A5E01 mov bl, byte
ptr [esi+01] \\把www.TT98.net的第二個字元的ASCII碼放入EBX的低位!
:0040128B
8ACA mov
cl, dl
:0040128D 3AD3
cmp dl, bl
\\比較
:0040128F 750E
jne 0040129F
\\不等於就跳下去死
:00401291 83C002
add eax, 00000002
\\EAX加二之後就變成w.TT98.com
:00401294 83C602
add esi, 00000002
\\ESI加二之後就變成w.TT98.net
:00401297 84C9
test cl, cl
\\是否取完
:00401299 75DC
jne 00401277
\\沒有取完就跳上去繼續↑
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401283(C)
|
:0040129B
33C0 xor
eax, eax \\清零
:0040129D
EB05 jmp
004012A4 \\跳去死!
*
Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040127F(C),
:0040128F(C)
|
:0040129F 1BC0
sbb eax, eax
:004012A1 83D8FF
sbb eax, FFFFFFFF
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040129D(U)
|
:004012A4
85C0 test
eax, eax
:004012A6 750D
jne 004012B5
\\這裡不跳的話就死得好慘...
:004012A8 5F
pop edi
:004012A9 5E
pop esi
:004012AA 5D
pop
ebp
:004012AB B801000000 mov
eax, 00000001
:004012B0 5B
pop ebx
:004012B1 83C414
add esp, 00000014
:004012B4 C3
ret
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004012A6(C)
|
:004012B5
8BFD mov
edi, ebp \\這裡是釋出網站的名稱www.TT98.com
:004012B7
83C9FF or ecx, FFFFFFFF
:004012BA
33C0 xor
eax, eax
:004012BC F2
repnz
:004012BD AE
scasb
:004012BE F7D1
not ecx
:004012C0 49
dec ecx
:004012C1
83F904 cmp ecx,
00000004 \\釋出網站得名稱是否大於四個位元組!它是怎麼取得釋出網站的位元組的我搞不懂,可能是我太菜了吧!
:004012C4
0F82C0000000 jb 0040138A
\\不大於就跳去死掉!
:004012CA 8B5C242C
mov ebx, dword ptr [esp+2C] \\我輸入的註冊碼
:004012CE
83C9FF or ecx, FFFFFFFF
:004012D1
8BFB mov
edi, ebx \\我輸入的註冊碼
:004012D3 F2
repnz
:004012D4
AE scasb
:004012D5
F7D1 not
ecx
:004012D7 49
dec ecx
:004012D8 83F910
cmp ecx, 00000010 \\比較註冊碼是否大於16位!它是怎麼取得我輸入註冊碼的位元組的我搞不懂,可能是我太菜了吧!
:004012DB
0F85A9000000 jne 0040138A
\\不大於得話就跳去死!
:004012E1 8B542430
mov edx, dword ptr [esp+30]
:004012E5 83C9FF
or ecx, FFFFFFFF
:004012E8
8BFA mov
edi, edx
:004012EA F2
repnz
:004012EB AE
scasb
:004012EC F7D1
not ecx
:004012EE 2BF9
sub edi, ecx
:004012F0
8BC1 mov
eax, ecx
:004012F2 8BF7
mov esi, edi
:004012F4 8BFD
mov edi, ebp
:004012F6 C1E902
shr ecx, 02
:004012F9 F3
repz
:004012FA
A5 movsd
:004012FB
8BC8 mov
ecx, eax
:004012FD 33C0
xor eax, eax
:004012FF 83E103
and ecx, 00000003
:00401302 F3
repz
:00401303 A4
movsb
:00401304
8BFA mov
edi, edx
:00401306 83C9FF
or ecx, FFFFFFFF
:00401309 F2
repnz
:0040130A AE
scasb
:0040130B F7D1
not ecx
:0040130D
2BF9 sub
edi, ecx
:0040130F 8BC1
mov eax, ecx
:00401311 8BF7
mov esi, edi
:00401313 8944242C
mov dword ptr [esp+2C], eax
:00401317
8BFD mov
edi, ebp
:00401319 83C9FF
or ecx, FFFFFFFF
:0040131C 33C0
xor eax, eax
:0040131E F2
repnz
:0040131F AE
scasb
:00401320
8B44242C mov eax, dword
ptr [esp+2C]
:00401324 4F
dec edi
:00401325 8BC8
mov ecx, eax
:00401327 C1E902
shr ecx, 02
:0040132A
F3 repz
:0040132B
A5 movsd
:0040132C
8BC8 mov
ecx, eax
:0040132E 8B442428
mov eax, dword ptr [esp+28]
:00401332 83E103
and ecx, 00000003
:00401335 F3
repz
:00401336
A4 movsb
:00401337
8D4C2410 lea ecx, dword
ptr [esp+10]
:0040133B 51
push ecx
\\這個不知道是什麼.可能是C盤或者是密匙!
:0040133C 50
push eax
\\這裡是兩個機器碼連在一起,也是註冊標誌!
:0040133D
52 push
edx \\這裡是機器碼
:0040133E
E8ADFEFFFF call 004011F0
\\這個CALL就是註冊演算法!
\\想知道演算法的話就追進去!
\\我追了一會兒,頭暈了就沒追了!
\\其實是我的彙編太差,看得不太明白!
\\但有一些地方還是看得懂的,一會總結分析!
:00401343 83C40C
add esp, 0000000C
:00401346 8D742410
lea esi, dword ptr [esp+10] \\這裡就是真的註冊碼了!
:0040134A
8BC3 mov
eax, ebx \\我輸入的假註冊碼!下面是比較!
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040136E(C)
|
:0040134C
8A10 mov
dl, byte ptr [eax] \\假碼的第一位的ASCII碼放入EDX的低位!
:0040134E
8A1E mov
bl, byte ptr [esi] \\真碼的第一位的ASCII碼放入EBX的低位!
:00401350
8ACA mov
cl, dl \\CL=DL
:00401352
3AD3 cmp
dl, bl \\比較
:00401354
751E jne
00401374 \\不等於就跳去死!
:00401356
84C9 test
cl, cl \\註冊碼第一位是否為零!
:00401358
7416 je 00401370
\\是零的話就跳去死!
:0040135A
8A5001 mov dl, byte
ptr [eax+01] \\假碼的第二位的ASCII碼放入EDX的低位!
:0040135D 8A5E01
mov bl, byte ptr [esi+01]
\\真碼的第二位的ASCII碼放入EBX的低位!
:00401360 8ACA
mov cl, dl
\\CL=DL
:00401362 3AD3
cmp dl, bl
\\比較第二位是否相等!
:00401364 750E
jne 00401374
\\不相等就跳去死!
:00401366 83C002
add eax, 00000002
\\假碼加二(這裡和上面00401291道理相同)
:00401369
83C602 add esi,
00000002 \\真碼加二(這裡和上面00401292道理相同)
:0040136C
84C9 test
cl, cl \\註冊碼第二位是否為零!
:0040136E
75DC jne
0040134C \\不為零的話就跳回去繼續比較!
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401358(C)
|
:00401370
33C0 xor
eax, eax \\清零
:00401372
EB05 jmp
00401379 \\跳去死!
*
Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401354(C),
:00401364(C)
|
:00401374 1BC0
sbb eax, eax
:00401376 83D8FF
sbb eax, FFFFFFFF
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401372(U)
|
:00401379
85C0 test
eax, eax
:0040137B 750D
jne 0040138A
:0040137D 5F
pop edi
:0040137E 5E
pop esi
:0040137F 5D
pop
ebp
:00401380 B801000000 mov
eax, 00000001
:00401385 5B
pop ebx
:00401386 83C414
add esp, 00000014
:00401389 C3
ret
------------------------------------------------------------------------
記憶體序號產生器:
中斷地址:40134A
中斷次數:1
第一位元組:8B
指令長度:2
記憶體方式:暫存器 ESI
註冊碼是XXXX-XXXXXX-XXXXX形式的!
-----------------------------------------------------------------------
註冊資訊儲存在同目錄下的wnb.ini檔案的最下面那一行serialno=XXXX-XXXXXX-XXXX
把這一行刪掉就又變成未註冊版本了!
------------------------------------------------------------------------
我曾經追進:
:0040133E
E8ADFEFFFF call 004011F0
後發現程式是把機器碼(我的機器碼是527901190)的ASCII的和X與某個數Y運算後得出一個數Z的十進位制就十註冊碼的前面部分!再把Z這個數的十進位制乘以二就十後面部分,中間部分是怎麼來的我就真的搞不懂了!唉........
我的機器碼的ASCII和是1D2再與某個數運算後得出CFC
CFC轉為十進位制是3324
我的註冊碼是3324-594401-6648
整個分析就到此結束了!謝謝您的觀賞!
2003.05.11 晚於清遠
相關文章
- 萬能五筆的破解 (6千字)2001-07-09
- WIN10裝了萬能五筆無法使用怎麼辦 WIN10裝了萬能五筆不能使用解決方法2020-09-08Win10
- 萬能五筆2000a+破解《作者:BanhouseMaster》 (3千字)2000-09-12AST
- 筆記五:倒排索引2019-10-14筆記索引
- SpringMVC筆記(五)2021-04-30SpringMVC筆記
- JVM 學習筆記(五)2020-07-11JVM筆記
- ES 筆記五:倒排索引2019-10-14筆記索引
- cmake學習筆記(五)2018-12-07筆記
- Javascript 學習 筆記五2015-12-05JavaScript筆記
- 讀書筆記之五2016-03-24筆記
- 好程式設計師教程分析Vue學習筆記五2019-06-10程式設計師Vue筆記
- java進階筆記Day(五)2020-12-22Java筆記
- 哲學筆記——叔本華《續五》2020-11-12筆記
- 陰陽五行筆記二十2016-11-28筆記
- Java IO學習筆記五2017-05-25Java筆記
- android學習筆記五2013-08-09Android筆記
- Spss 學習筆記(五)2004-12-13SPSS筆記
- 基督教筆記(五):新教2006-09-30筆記
- c++學習筆記(五)2024-07-25C++筆記
- 萬能五筆2001註冊碼分析及暴力破解 ---可憐的思考者 (27千字)2002-04-15
- 自學PHP筆記(五) PHP運算子2021-04-18PHP筆記
- 字典--Python學習筆記(五)2020-11-29Python筆記
- 五月的讀書筆記2018-06-04筆記
- 區塊鏈技術筆記五2018-02-24區塊鏈筆記
- 大資料學習筆記(五)2018-01-27大資料筆記
- Android學習筆記(五)——Fragment2016-09-04Android筆記Fragment
- 《機器學習》西瓜書學習筆記(五)2017-10-24機器學習筆記
- 《WEB應用測試》筆記(五)2006-11-16Web筆記
- 第五章(backup and recovery 筆記)2013-02-21筆記
- FutureTask原始碼分析筆記2019-01-19原始碼筆記
- 原始碼分析筆記——OkHttp2018-04-02原始碼筆記HTTP
- 萬物互聯課程筆記2018-08-17筆記
- 《卸甲筆記》-PostgreSQL和Oracle的SQL差異分析之五:函式的差異(五)2016-08-18筆記SQLOracle函式
- 【筆記】傳統勢能線段樹2024-08-13筆記
- 五筆打字2024-09-14
- Kubernetes學習筆記(五):卷2020-05-24筆記
- 從零開始學Electron筆記(五)2020-07-13筆記
- hive學習筆記之五:分桶2021-07-03Hive筆記