国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C++程序反編譯(5) 掃雷1

2022-11-06 19:18 作者:GC_CH  | 我要投稿

????

????這次來嘗試反編譯Windows XP的掃雷, 主要工具是IDA Pro和Visual Studio.

????我使用的IDA Pro版本是7.5, Visual Studio 則是2013.

一、 IDA Pro打開掃雷.exe

????首先打開IDA Pro, 點擊菜單 File -> Open, 然后選擇 掃雷.exe,? 默認值就好, 點擊OK, 等待IDA分析完成.?

????

????如果打開后提示有什么pdb文件, 選否就行了, 這是要載入調(diào)試用的數(shù)據(jù)庫文件, 里面包含了各種原始的調(diào)試信息, 比如變量名這些, 實際上winmine.pdb我們獲取不到.

????識別完成后, 可以看到如下界面(右邊原來是只有匯編代碼的流程圖顯示, 按F5反編譯后得到C語言偽代碼):

????

????左邊列出了識別出來的函數(shù), 共85個. 右邊則是入口函數(shù)start, 我初步判斷這個函數(shù)是主函數(shù), 以為它返回int, 且沒有參數(shù), 很向int main().?但其實不是, 這需要從它內(nèi)部的代碼看了, 主要通過粉紅色的系統(tǒng)給API來判斷.

????上面代碼是start函數(shù)的中間部分, _getmainargs, 應(yīng)該是獲取主函數(shù)的參數(shù),.

既然前面是獲取主函數(shù)的參數(shù), 那么接下來肯定是要調(diào)用主函數(shù)了, 調(diào)用完就退出程序, 所以, sub_10021F0才是真正的主函數(shù). 但它到底是main還是WinMain? main只有0個參數(shù)和兩個參數(shù)版本, 所以不是main, 而WinMain是4個參數(shù)的, 并且第一個參數(shù)是HANDLE類型, 正好對應(yīng)GetModuleHandle類型, 因此,?sub_10021F0是WinMain函數(shù).

????

二、 創(chuàng)建Win32項目

????點擊菜單 File -> Produce file -> Create C file... , 或者快捷鍵 Ctrl + F5, 導出C代碼文件.

????Visual Studio創(chuàng)建空的Win32項目, 將導出的C文件添加到項目中, 如下:

可以看到, 共2800多行, 無數(shù)個錯誤. 而且缺少了頭文件defs.h, defs.h可以在IDA Pro的安裝目錄下找到, 找到之后, 復制一份并添加到當前項目中, 錯誤大概少了90%, 但還是很多.

三、后記

????目前為止, 所做的都是比較簡單的事, 前面也說過了, 反編譯的難點還在后面, 一篇文章介紹不了那么多, 因此, 這篇文章就先到這里.

????這個掃雷程序只有117KB, 可反編譯出來的C代碼卻有2800多行, 可見, 反編譯到底是多難的事.

C++程序反編譯(5) 掃雷1的評論 (共 條)

分享到微博請遵守國家法律
自治县| 苍梧县| 隆化县| 金平| 靖远县| 仁布县| 龙州县| 鱼台县| 仙游县| 车致| 高陵县| 教育| 临城县| 津南区| 蒙山县| 岐山县| 马公市| 珠海市| 大安市| 咸阳市| 宝丰县| 博乐市| 台州市| 清水县| 乌鲁木齐县| 二连浩特市| 五寨县| 兴义市| 望奎县| 定安县| 安平县| 孝感市| 谢通门县| 吴江市| 古丈县| 吴忠市| 蚌埠市| 安仁县| 安多县| 洛浦县| 苗栗市|