国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 邏輯算法 > 正文

(看雪教程) 第4章 第5節拆解教程

2019-09-10 09:02:12
字體:
來源:轉載
供稿:網友

驗對象:例題Chap4-eg-1.zip ;
破解工具:W32Dasm,Hiew;

1、思路提示:首先要試運行要破解的程序,了解其一些提示信息,如:文本/NAG屏/按鈕等等.最重要的就是出錯信息 .如: "Wrong serial.."記下,因為你在后面要用到它,你需要它來找到call出錯messagebox的地方.當 W32Dasm反編譯后你會看到一屏幕難懂的匯編碼 .你還記得剛要你記下的那個message么? 此時單擊在工具欄里的串式數據參考SDR (=String Data Reference).這個功能可是非常有用的.

在串式數據參考SDR中找到那個提示信息(它也許只顯示了信息的一部分) ,此時雙擊它,來到相關代碼處,再分析源代碼

2、運行crackme,輸入假的序列號,點擊CHECK出現錯誤提示:"Incorrect try again!! "記下。

3、將crackmer備份一份,用W32DASM反匯編它。

4、一旦完成反匯編 點串式數據參考(string data reference)按鈕 在列出的字符串列表中找到 : "Incorrect try again!! " 并雙擊它 . (注:如代碼中有多處有此字串,你再次雙擊后,光標將出現在下一代碼上)

5、關閉這個窗口回到主窗口 你應該能夠看到下面這一行 :

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401595(C)
|
:004015AD 6A40 push 00000040

* Possible StringData Ref from Data Obj ->"CrackMe"http://錯誤提示窗口的標題
|
:004015AF 686C304000 push 0040306C

* Possible StringData Ref from Data Obj ->"Incorrect try again!!"http://錯誤提示處,我們來到這一行
|
:004015B4 6874304000 push 00403074
:004015B9 8B4DE0 mov ecx dword ptr [ebp-20]


6、現在你必須從這行起向上找 直到找到有這樣的命令為止 :cmpjnejetest 等等 .

CMP = 比較 (如 CMP EAX EBX) <- 比較EAX和EBX
JE = 如果相等就跳轉
JNE = 如果不相等就跳轉
JL = 如果小于就跳轉
JLE = 如果小于等于就跳轉
JA = 如果大于就跳轉
JAE = 如果大于等于就跳轉
JMP = 無條件跳轉

7、注意這一行代碼

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401595(C)
|
:004015AD 6A40 push 00000040


:00401595(C) 是代碼位置而不是offset,表示指令由00401595一行跳轉到此 .此時你在利用菜單的轉到代碼位置功能或按shift+F12,在對話框中輸入:00401595,你將來到此:


:00401585 8D4DE4 lea ecx dword ptr [ebp-1C]
:00401588 51 push ecx
:00401589 8D55F4 lea edx dword ptr [ebp-0C]
:0040158C 52 push edx

* Reference To: KERNEL32.lstrcmpA Ord:02FCh
|
:0040158D FF1500204000 Call dword ptr [00402000]
:00401593 85C0 test eax eax
:00401595 7516 jne 004015AD


8、此時你借助SOFTICE動態調試能很快找到序列號,在這我們今天用暴力法破解,注意 :

:0040158D FF1500204000 Call dword ptr [00402000]//真假序列號比較核心(調用函數lsrcmpa比較)
:00401593 85C0 test eax eax//用eax當旗幟,如相等,則eax=0
:00401595 7516 jne 004015AD//如不跳轉則注冊成功

看明白了嗎?要讓程序接受任何注冊碼就只要把JNE (=不相等就跳)改成JE (=相等就跳).或把改成空指令nop(什么也不執行)這樣前一各改法要注冊就只能輸入錯誤的注冊碼,后者可任意注冊碼。 9、將綠色的光條移到 :00401595 7516 jne 004015AD上 在窗口底部有一行字指示這句命令的偏移地址 此處為 @Offset 00001595h. 這就是應該修改的地方了 .


10、啟動hiew 打開crackme.exe,按 F4 然后選擇 decode mode 按 F5 輸入偏移地址1595(@Offset 00001595h). 你應該看到下面這幾行 :

?00401593: 85C0 test eaxeax
?00401595: 7516 jne .0004015AD

11、這就是修改的地方了,按F3進入修正狀態,在機器碼處直接用7416代替7516,按F9存盤。或在這一行按F2或回車進入小匯編修改狀態,輸入正確的指令。

12、第二種修改方法是用兩個NOP指令(NOP指令機器碼是90是一個字節)代替機器碼:7516即改為:9090

13、運行 crackme 隨便輸入幾個字符試試 . 成功了 ! (當然這只是對那些簡單的程序有效)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 德昌县| 花垣县| 白河县| 乌恰县| 丰都县| 永昌县| 昌都县| 乐亭县| 家居| 尤溪县| 施甸县| 连南| 互助| 合山市| 营山县| 云浮市| 绥阳县| 故城县| 都江堰市| 罗江县| 佳木斯市| 宁国市| 和政县| 公安县| 泰州市| 台安县| 神木县| 隆尧县| 稷山县| 婺源县| 沅陵县| 犍为县| 耒阳市| 潼关县| 青神县| 垣曲县| 响水县| 富顺县| 渝北区| 合川市| 宜兰市|