最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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, 導(dǎo)出C代碼文件.

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

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

三、后記

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

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

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

分享到微博請遵守國家法律
山西省| 泗阳县| 平凉市| 镇坪县| 宕昌县| 嘉善县| 天等县| 武宁县| 清远市| 遂平县| 霍山县| 三都| 苍南县| 库伦旗| 中江县| 方山县| 永修县| 双流县| 黑龙江省| 宣恩县| 牡丹江市| 丰台区| 巫山县| 鄱阳县| 中西区| 濮阳市| 连江县| 崇左市| 商河县| 南澳县| 邹平县| 屯留县| 丹巴县| 绥宁县| 岳西县| 霍城县| 岑溪市| 盐山县| 安乡县| 邵武市| 玉龙|