序列号明码比较的反汇编代码以及注册机的初步使用
參照 加密與解密 第三版,5.1.3、5.1.4節(jié);
?
序列號(hào)明碼比較的反匯編代碼形式如下;
形式1:寄存器直接比較
mov eax []
mov ebx []
cmp eax, ebx
jz(jnz) xxxx
? ? eax,ebx,放的是直接比較的兩個(gè)數(shù);
形式2:函數(shù)比較1
mov eax []
mov ebx []
call xxxxxxxx ? ;比較函數(shù),可以是API函數(shù),或自己寫的函數(shù);
test eax eax
jz(jnz)
形式3:函數(shù)比較2
push xxxx
push xxxx
call xxxxxxxx ?;比較函數(shù)
test eax eax
jz(jnz)
形式4:串比較
lea edi ?[] ? ?;edi指向字符串a(chǎn)
lea esi ?[] ? ?;esi指向字符串b
repz cmpsd ? ?;比較
jz(jnz)
?
keymake軟件,它攔截程序指令并將出現(xiàn)的明碼以某種方式直接顯示出來;
由keymake軟件生成注冊(cè)機(jī);
運(yùn)行時(shí),注冊(cè)機(jī)裝載目標(biāo)程序,在指定地址處插入一個(gè)INT 3指令,目標(biāo)程序會(huì)在此中斷,然后注冊(cè)機(jī)將內(nèi)存或寄存器值讀出,再恢復(fù)原程序指令;
TraceMe的反匯編代碼如下;
此處,keymake需要攔截TraceMe兩次;第一次是4011E5h的call;然后是40138Dh地址,以便查看EBP指向的字符串;
此處序列號(hào)保存在ebp指向的內(nèi)存地址;
?
下載keymake;
從菜單選擇 其它/內(nèi)存注冊(cè)機(jī);
瀏覽打開TraceMe.exe;如圖添加要攔截的地址;選中 內(nèi)存方式,寄存器,EBP;
點(diǎn) 生成 按鈕;讓你選擇生成的注冊(cè)機(jī)外觀;
選擇生成的注冊(cè)機(jī)保存的地址;默認(rèn)和要裝載的程序同一目錄;
生成一個(gè)注冊(cè)機(jī)zc1.exe;
運(yùn)行zc1.exe;果然裝載運(yùn)行了TraceMe.exe;
注冊(cè)機(jī)裝載TraceMe,輸入用戶名,單擊Check按鈕,注冊(cè)機(jī)攔截到以后,會(huì)彈出一個(gè)窗口告知正確的序列號(hào);
但是操作到此;注冊(cè)機(jī)并未如原書所說,彈出窗口告知正確的序列號(hào);
估計(jì)是Windows版本不同;TraceMe反匯編出來的代碼地址并不一致;
就是keymake設(shè)置時(shí),輸入的中斷地址不對(duì);
沒有時(shí)間了,下回再搞;
?
?
?
總結(jié)
以上是生活随笔為你收集整理的序列号明码比较的反汇编代码以及注册机的初步使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 破解时的数据约束性和winhex操作失败
- 下一篇: HIEW的初步使用