无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

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

C++程序反編譯筆記(14) 尋找繪圖代碼

2022-12-24 11:47 作者:GC_CH  | 我要投稿

????經(jīng)過前面的代碼修復(fù), 掃雷已經(jīng)能顯示出基本的界面了.

????但是有點(diǎn)"亂碼"的感覺. 點(diǎn)擊中間的"笑臉"或者雷區(qū), 右上角的時(shí)間文本是會(huì)變化的, 說明游戲可以正常開始. 運(yùn)行過程中, 基本不會(huì)產(chǎn)生錯(cuò)誤. 就是點(diǎn)擊"×" 關(guān)閉游戲時(shí), 報(bào)了一個(gè)錯(cuò)誤

????這個(gè)錯(cuò)誤指出result沒有初始化, 那么將result初始化為 FALSE 就好.

從WinMain開始

????目前不知道為什么會(huì)"亂碼", 但是知道窗口的繪制是在處理WM_PAINT消息(Windows系統(tǒng)的窗口靠消息機(jī)制運(yùn)行), 因此, 需要找到繪制窗口的地方.

????還是使用前面用過的方法, 暫停程序的運(yùn)行, 查看代碼停在了哪里.

????

????代碼停在了 GetMessage函數(shù)調(diào)用這里, 這里正是wWinMain函數(shù). 往前一點(diǎn)查看代碼, 可以發(fā)現(xiàn)注冊(cè)窗口類, 創(chuàng)建窗口, 顯示窗口的代碼都有.?

????根據(jù)注冊(cè)窗口類時(shí) WNDCLASSW 結(jié)構(gòu)體的lpfnWndProc字段可以知道窗口的消息處理函數(shù)是sub_1001BC9.

IDA 識(shí)別枚舉

????查看消息處理函數(shù), Msg就是消息的值, 但是 if語句和 switch語句中用的都是數(shù)字, 這不利于查看是什么消息. 可以在IDA Pro中將它們修正為 WM_ 開頭的宏.

????在IDA pro中找到sub_1001BC9的代碼, 點(diǎn)擊消息的值, 比如0x201, 按M鍵會(huì)將該值標(biāo)識(shí)為枚舉. 接著從下拉列表中選擇具體的枚舉就行了.

????可以看到 0x201 是消息 WM_LBUTTONDOWN. 將修復(fù)好的代碼復(fù)制回 Visual Studio.

????這樣就很容易找到需要的消息了.

尋找繪圖代碼

????找到WM_PAINT 消息對(duì)應(yīng)的代碼, 可以知道sub_1002AC3就是總的繪圖代碼的函數(shù).

????我給這個(gè)函數(shù)加了一個(gè)OnPaint的注釋, 當(dāng)然也可以直接修改函數(shù)名.


C++程序反編譯筆記(14) 尋找繪圖代碼的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
海宁市| 临沭县| 马山县| 河西区| 肥西县| 邛崃市| 潮州市| 九台市| 三穗县| 万载县| 平舆县| 长乐市| 离岛区| 衡南县| 乌海市| 吴川市| 邯郸县| 靖西县| 夏河县| 罗源县| 日照市| 遵义市| 兴化市| 香港 | 江都市| 阿勒泰市| 太原市| 伊金霍洛旗| 莱西市| 万宁市| 北辰区| 庄河市| 奇台县| 奉贤区| 陈巴尔虎旗| 芮城县| 泾阳县| 潮州市| 宜兴市| 南靖县| 红安县|