五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
尖扎县| 韶关市| 正镶白旗| 丽江市| 楚雄市| 钟山县| 洪泽县| 遵化市| 称多县| 岳阳县| 招远市| 佛山市| 乌兰浩特市| 同江市| 辽源市| 南投市| 三穗县| 海兴县| 榆社县| 浦江县| 澎湖县| 潜江市| 洛浦县| 丹阳市| 阳西县| 湘潭县| 南阳市| 开平市| 德令哈市| 寻甸| 普兰县| 阿勒泰市| 巴楚县| 申扎县| 班玛县| 孝昌县| 含山县| 彭阳县| 元江| 阳东县| 新余市|