破解flax 1.31的校驗及功能限制
這個軟體的序號產生器聽說老外已搞出來了,我搞它的CRC,便於漢化,也是為了自己學習。
這東東費了俺好多時間,寫的很粗略,錯誤在所難免,很不好意思,還望諒解和及時指教。具體改法,自己看著辦。
這軟體的保護很好,我的體會:
1:將不大的模組分成許多小模組,運用指標陣列,不斷呼叫,在大量迴圈中使用大量跳轉,叫跟蹤的摸不著北。
2:動態解密生成flax002.exe模組,校驗flax.exe,校驗後即刻刪除。(夠狡猾的)
3:有自寫功能,修改它的程式碼還不用winhex.動態改後,退出時還可儲存在原檔案。
第一。破註冊
下中斷:bpm 4d3240.從程式啟動開始,只要這個地址的值不為零,程式即被破解。實際上,這地址是註冊碼的指標。如果你的註冊正確,便會在flax.ini中生成一個"key="的鍵,[4d3240]便是從key中取出註冊碼。當然,註冊不正確,就不會生成這個鍵。要使[4d3240]為非零,有五處地方需要修改,你看著辦吧。
第二。破CRC校驗。
我發現只有兩處關鍵的校驗。(可能還有其他,但我改的倒滿好的執行)
1。下中斷bpx 41ff75.啟動程式,當第三次中斷時,下d 43713c.仔細看看,後面的六組字資料外加[43715c]的字資料即為CRC校驗碼。正確的校驗碼應該是9742
2614 E0D6 7261 5D85
0512 ,[43715c]中的應該是b260.你的程式修改後,這些校驗碼如有改變,把它改回來。
2。flax動態生成flax002.exe,flax002.exe是動態校驗flax.exe的。flax002.exe在c:\window\temp\flax\下,校驗後即被刪除。下中斷在411d34後,便可在該目錄下發現。
下中斷,bpx 40106b,這時程式會中斷在flax002.exe中,見下面:
:0040105D E8D7000000 call 00401139
:00401062 83C408
add esp, 00000008
:00401065 8B0D50904000 mov ecx, dword
ptr [00409050]
:0040106B 33C8
xor ecx, eax 《---中斷在此,
:0040106D 890D50904000 mov dword ptr
[00409050], ecx 《---ecx中的數即為校驗碼。正確的應該是00465820.
:00401073 8B55FC
mov edx, dword ptr [ebp-04]
:00401076 52
push edx
:00401077 E875050000 call 004015F1
:0040107C 83C404
add esp, 00000004
:0040107F 6800010000 push 00000100
:00401084 8D85E8FEFFFF lea eax, dword
ptr [ebp+FFFFFEE8]
如何修改呢?
flax002.exe的程式碼是在00403378 call 00402821中透過解密生成的,進入該call:
:0040287F 8B45F4
mov eax, dword ptr [ebp-0C]
:00402882 3B0570664300 cmp eax, dword
ptr [00436670]
:00402888 0F83FC000000 jnb 0040298A
《---迴圈a000次,每次生成一位元組的程式碼。
:0040288E E8FC000000 call 0040298F
《---生成flax002.exe的程式碼
:00402893 668945F8 mov
word ptr [ebp-08], ax
:00402897 0FBF4DF8 movsx
ecx, word ptr [ebp-08]
:0040289B 81F900010000 cmp ecx, 00000100
:004028A1 7D40
jge 004028E3
:004028A3 668B55F8 mov
dx, word ptr [ebp-08]
:004028A7 52
push edx
:004028A8 E867060000 call 00402F14
《---存入記憶體。
:004028AD 83C404
add esp, 00000004
:004028B0 0FBF45FC movsx
eax, word ptr [ebp-04]
:004028B4 8A4DF8
mov cl, byte ptr [ebp-08]
:004028B7 888830564300 mov byte ptr
[eax+00435630], cl
:004028BD 668B55FC mov
dx, word ptr [ebp-04]
:004028C1 6683C201 add
dx, 0001
改動flax002.exe中的程式碼,最好是在生成它時便作改動。找到要改動程式碼在flax002.exe中的offset,對照00402882處eax的值,作相應改動。生成的程式碼在00566ee0開始的記憶體中。趁還未生成flax002.exe之前,修改00566ee0中的記憶體資料。