C++程序反編譯筆記(8) 掃雷 鏈接錯(cuò)誤
????以下是要解決的鏈接錯(cuò)誤

? ? ? ??

一 靜態(tài)鏈接庫(kù)
????前兩個(gè)很好解決, 沒有鏈接庫(kù)函數(shù)的靜態(tài)庫(kù)而已, 只需要這樣:


二 數(shù)組未定義
????

????這里只是聲明了一個(gè)字符數(shù)組, 并沒有定義. 在IDA 中查看它:

????????既然它是數(shù)組, 那么它不可能只有一個(gè)元素, 并且緊接著的變量是unk_開頭的, 表示類型不確定. 那么,?byte_1005340肯定與下面的unk_變量是一體的.應(yīng)該把byte_1005340的類型定義為char[32], 并把unk_1005341去掉, 使用unk_1005341的地方替換為byte_1005340:

還有兩個(gè)也是同理:


????將align 40h部分加入到數(shù)組中, 每個(gè)數(shù)組變成16個(gè)元素.

WinMain 丟失
????前面已經(jīng)分析過了, start函數(shù)中調(diào)用的sub_10021F0就是WinMain函數(shù).因此, 我們只需要將它和它的參數(shù)重命名就行了. 最好是同時(shí)在Visual Studio和IDA中同步修改.
????



運(yùn)行
????解決了所有的編譯錯(cuò)誤和鏈接錯(cuò)誤, 就能運(yùn)行程序了, 試試看:

????彈出了一個(gè)錯(cuò)誤框, 很不錯(cuò)了. 接下來就需要解決邏輯錯(cuò)誤了.
標(biāo)簽: