?? kill.txt
字號:
首先在config.sys中加載soft-ice,這是必需的。(我看應該給soft-ice的作者
頒發諾貝爾獎,這是個造福全人類的東西)
在命令行上運行ldr kill.exe,開始跟蹤。
由于kill的加密特點,我們不需原來的鑰匙盤既可解密。
打入G回車運行,當發生讀軟盤動作時馬上按<ctrl>+D中斷kill的運行,返回
soft-ice調試窗口,這時十有八九正處于讀盤中斷調用內。按若干次p鍵進行跟蹤,
直到發現密鑰判別的分支點,如何找到?這要靠你的經驗、靈感和機會。
我所找到的分支點如下:(前面加了行號)
1 2A1B:0010 9A28058232 CALL 3282:0528 ;調用讀密鑰盤模塊
2 2A1B:0015 59 POP CX
3 2A1B:0016 0BC0 OR AX,AX
4 2A1B:0018 7408 JZ 0022 ;如果不是密鑰盤跳轉
5 2A1B:001A C7066B500000 MOV WORD PTR [506B],0000
6 2A1B:0020 EB2F JMP 0051
為了驗證一下這兒是不是分支點,可以把第4行改為JNZ 0022,打入G程序順利
運行,說明找到的分支點是對的。
雖然改一個字節就可以,但這樣改的話,程序每次運行都要讀一下軟盤,給人
以不太流暢的感覺。所以最終的改法如下:
1 2A1B:0010 POP CX
2 2A1B:0011 JMP 001A
3 2A1B:0016 OR AX,AX
4 2A1B:0018 JZ 0022
5 2A1B:001A MOV WORD PTR [506B],0000
6 2A1B:0020 JMP 0051
這樣改后運行時就不讀盤了。第一行的POP CX指令不可少,否則發生棧指針差
一個導致程序崩潰。
問題到這兒還沒完,完善的加密系統是不會讓你直接修改程序的。而是采用了
代碼生成技術。上面那段代碼在程序中是通過計算生成的,你要找到由哪段代碼經
過怎樣的計算才生成的這一段代碼。這就要靠soft-ice的bpm 2a1b:0010來幫助了。
經過多次的bpm你會找到最終的目標如下:
AX=67E4 BX=179B CX=0001 DX=B81B SP=3062 BP=2DE8 SI=000E DI=000E
DS=1CBA ES=1CBA SS=39B2 CS=39B2 IP=2E7A
39B2:2E79 AD LODSW
39B2:2E7A 33C3 XOR AX,BX
39B2:2E7C 03C2 ADD AX,DX
:2E7E 83C325 ADD BX,+25
:2E81 83EA5B SUB DX,+5B
:2E84 AB STOSW
:2E85 E2F2 LOOP 2E79
1CBA:000E處的數據如下
1CBA:000E E4 67 85 B0 5F
算法有了,原始數據有了,且上述算法還是可逆的。怎么改就不用多說了。
kill是用Keymaker 3.0加密的,Keymaker的代碼變換技術太簡單,且還是
可逆的,不象bitlock,bitlock的代碼變換是不可逆的,利用前一個字節生成
下一個字節。用bitlock加密的軟件不可能直接修改,只能用脫殼的方法。
拋磚引玉,希望大家都來探討一下hacker經驗,要是每個人都會那么幾手,
那可就......
F000:ec59 是 BIOS 的 INT40中斷(也就是軟盤中斷)的入口.
不論程序如何調用(int13), 但是只要是讀軟盤, 最后都要到這里執行.
(除非自己編硬件程序, 但到現在還沒有看到).
所以只要看住這里就不怕它(程序)鬧翻天! :-)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -