我以winhex9.9為例.請使用TRW,因為要用suspend.
啟動winhex前,偽造user.txt。要留意偽造的user.txt的格式,User: ADDR1: ADDR2: 英文、中文可任意輸入.但是,code1、code2的數必須是0-f且必須有32個.code1的第21到24位數,假設它為A(1)A(2)A(3)A(4),那麼A(3)A(4)A(1)A(2)應小於0370,或者大於03A2.
打bpx 417dbd
啟動winhex,開啟記憶體修改,存檔.中斷在下面:
:00417DBD B9BC060000 mov ecx,
000006BC
:00417DC2 8B1578ED4500 mov edx, dword
ptr [0045ED78]
:00417DC8 E823D3FEFF call 004050F0
:00417DCD E826FEFFFF call 00417BF8
<---進入
:00417DD2 BAB8654600 mov edx,
004665B8
:00417DD7 8D442428 lea
eax, dword ptr [esp+28]
* Possible Ref to Menu: MenuID_0001, Item: "Sicherung laden..."
|
:00417DDB B910000000 mov ecx,
00000010
進入417dcd: call 417bf8中:
:00417D27 E8CCDCFEFF call 004059F8
:00417D2C 8BD8
mov ebx, eax
:00417D2E 6A00
push 00000000
:00417D30 BAB8654600 mov edx,
004665B8
:00417D35 8BC3
mov eax, ebx
* Possible Ref to Menu: MenuID_0001, Item: "Sicherung laden..."
|
:00417D37 B910000000 mov ecx,
00000010
:00417D3C E8A3DDFEFF call 00405AE4
<----進入
* Possible Ref to Menu: MenuID_0001, Item: "Hex-Werte Strg+Shift+C"
|
:00417D41 BA2C000000 mov edx,
0000002C
:00417D46 8BC3
mov eax, ebx
進入417d3c:call 405ae4中:
:00405B2A 8B45FC
mov eax, dword ptr [ebp-04]
:00405B2D E8AAFDFFFF call 004058DC
:00405B32 0FB7C8
movzx ecx, ax
:00405B35 C1E908
shr ecx, 08
:00405B38 24FF
and al, FF
:00405B3A 32C8
xor cl, al
:00405B3C 8B45F8
mov eax, dword ptr [ebp-08]
:00405B3F 03C6
add eax, esi
:00405B41 3208
xor cl, byte ptr [eax] <---此處打bpx,每次停在這裡,cl中的資料和下面的一組16個位元組資料依次xor後,存入[eax]中,這個數一定要記下來,最後記下來的一組16個位元組數即為code2.
既:cl xor 5b == ? ,將?存入[eax]中,同時記下?,這是code2的第一個資料,
第二次中斷在這裡,將cl與0e xor,結果存入[eax],並記下,此為code2的第二個資料,依此類推.一共中斷16次,得到16個資料,既為code2。
<< 這一組16個位元組資料如下:
5b 0e 44 2c 80 f2 0c d3 b4 ad 22 97 da ce 3f 6d >>
這樣找到的註冊碼適用winhex9.74到9.92.
winhex的加密做的真的很好,連\\.\SICE字串也加了密.
user.txt如下,它適合winhex9.74到9.92的任何版本:
User: yourname
Addr1: aaaa
Addr2: aa
Code1: 0123456789abcdef0123456789abcdef
Code2: 9b8be3627af62ab02fb7c4b793766410
User: 中國四川
Addr1: 看雪論壇
Addr2: 看雪學院
Code1: 88888888888888888888888888888888
Code2: 93e853c64441aeaf93c4b1c805b90ca9