《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解

寫博客就是寫總結,總結往往受主觀限制,受限制就容易犯錯誤,犯了錯誤歡迎批評指正。
學習的教材是《Windows PE權威指南》(戚利)(機械工業出版社)(2010年10月第一版),一下簡稱《PE》

一、什麼是Windows PE
說實話,學完第一章還不太明白Windows PE到底是個啥,自己理解它是一種有格式的32位的可執行文件。有幾個問題不太明白:
1、16位機有沒有PE,或者類似的東西?
2、利用匯編編寫的PE文件和C/C++編寫的有什麼區別麼?
這些問題,只能以後再解答了……
二、U盤監控器的破解
爲什麼要學Windows PE呢,是因爲要學逆向……彙編語言也是要求的,之前粗略了學習了一遍ASM,教材用的是《彙編語言-第二版》(王爽)(我發現有第三版的時候第二版已經看完了ORZ);當然,學習逆向還得學一些軟件,《PE》第一章介紹了三個,Ollydbg,FlexHex,w32dasm。

不過,話又說回來,U盤監控器的破解跟PE貌似沒啥關係,書中也說做這個破解是爲了熟悉軟件……

U盤監控器軟件用的是書後光盤中的軟件,文件的名字叫USB監控器。軟件打開後,右下角有一個註冊按鈕,單擊後彈出對話框提示輸入註冊碼(同時還會彈出一個網頁),破解的目的就是,輸入任意的註冊碼,都能註冊成功。

破解的步驟是這樣的:
1、獲取關鍵字符串信息
2、分析彙編指令
3、修改彙編指令

1、獲取關鍵字符串信息
當我們隨意輸入註冊碼的時候,會彈出“註冊失敗”對話框,當然一不小心輸入正確了,它就彈出“註冊成功”,這兩個字符串就是關鍵字符串,它們都是常量,程序運行時被加載到內存中,如果我們找到他們在內存中的位置,就能找到調用這個字符串命令的位置,就能找到相應的代碼,修改代碼就可以破解了。

字符串在內存中的位置:用FlexHex打開"USB監控器.exe",可以得到該可執行文件的ASCII(ANSI)碼信息,查找到“註冊失敗”,發現它的偏移地址是:0x00081A79,當然,我們發現了一串很像註冊碼的東西,ASDA-GDFWT-FHRR-BJNR,經測試,這確實是註冊碼……咳咳,繼續破解


在彙編中,物理地址=段地址+偏移地址,我們可以通過Ollydbg裝在該文件,找到內存中存儲“註冊失敗”的物理地址。在FlexHex中查找到6E 0A 00 00,得偏移地址爲0x00112800,在Ollydbg中HEX數據處搜索它,得內存地址爲0x00512800,可推知0x00081A79的內存地址爲0x00481A79。

則引用字符串指針的內容爲0x00481A79,在Ollydbg查找這個常量,得指令所在內存地址爲0x00405D2D(以上步驟在Ollydbg中都可實現)



2、分析彙編指令
這個壓棧操作,應該是MessageBox函數實現的一部分,可以想象,有一條判斷語句,判斷真,執行MessageBox“註冊成功”,判斷假,執行MessageBox“註冊失敗”,我們只要找到調用這個壓棧操作的命令就行了。

我們利用w32dasm對“USB監控器.exe”進行靜態分析,查找0x00405D2D,得如下信息:


調用0x00405D2D的指令所在內存地址爲0x00405CD2,找到這條指令,得

發現,它對應的語句是個大於則跳轉語句,如果改成小於則跳轉,那麼輸入一個錯誤的驗證碼,程序就可以執行下面的語句,執行顯示“註冊成功”了。

3、修改彙編指令
在Ollydbg中找到0x00405CD2,把jg改成jl,並勾選用nop填充。
修改後:

保存修改:右鍵,複製到可執行文件->全部修改,打開查看可執行文件窗口,右鍵,保存文件即可。

重新測試新文件發現已破解。

發佈了38 篇原創文章 · 獲贊 3 · 訪問量 9338
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章