天天看點

《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盤監控器軟體用的是書後CD光牒中的軟體,檔案的名字叫USB監控器。軟體打開後,右下角有一個注冊按鈕,單擊後彈出對話框提示輸入注冊碼(同時還會彈出一個網頁),破解的目的就是,輸入任意的注冊碼,都能注冊成功。

破解的步驟是這樣的: 1、擷取關鍵字元串資訊 2、分析彙編指令 3、修改彙編指令

1、擷取關鍵字元串資訊

當我們随意輸入注冊碼的時候,會彈出“注冊失敗”對話框,當然一不小心輸入正确了,它就彈出“注冊成功”,這兩個字元串就是關鍵字元串,它們都是常量,程式運作時被加載到記憶體中,如果我們找到他們在記憶體中的位置,就能找到調用這個字元串指令的位置,就能找到相應的代碼,修改代碼就可以破解了。

字元串在記憶體中的位置:用FlexHex打開"USB監控器.exe",可以得到該可執行檔案的ASCII(ANSI)碼資訊,查找到“注冊失敗”,發現它的偏移位址是:0x00081A79,當然,我們發現了一串很像注冊碼的東西,ASDA-GDFWT-FHRR-BJNR,經測試,這确實是注冊碼……咳咳,繼續破解

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

在彙編中,實體位址=段位址+偏移位址,我們可以通過Ollydbg裝在該檔案,找到記憶體中存儲“注冊失敗”的實體位址。在FlexHex中查找到6E 0A 00 00,得偏移位址為0x00112800,在Ollydbg中HEX資料處搜尋它,得記憶體位址為0x00512800,可推知0x00081A79的記憶體位址為0x00481A79。

則引用字元串指針的内容為0x00481A79,在Ollydbg查找這個常量,得指令所在記憶體位址為0x00405D2D(以上步驟在Ollydbg中都可實作)

《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解
《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解
2、分析彙編指令

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

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

《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解
《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解
調用0x00405D2D的指令所在記憶體位址為0x00405CD2,找到這條指令,得
《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解
《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解
發現,它對應的語句是個大于則跳轉語句,如果改成小于則跳轉,那麼輸入一個錯誤的驗證碼,程式就可以執行下面的語句,執行顯示“注冊成功”了。
3、修改彙編指令
在Ollydbg中找到0x00405CD2,把jg改成jl,并勾選用nop填充。
《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解
修改後:
《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解
《WINDOWSPE權威指南》學習筆記(一)-U盤監控器的破解

儲存修改:右鍵,複制到可執行檔案->全部修改,打開檢視可執行檔案視窗,右鍵,儲存檔案即可。

重新測試新檔案發現已破解。

繼續閱讀