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

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

C++程序反編譯筆記(12) 讀取位置 0x00000001 時(shí)發(fā)生訪問(wèn)沖突

2022-12-04 23:09 作者:GC_CH  | 我要投稿

????接下來(lái)遇到了這樣的錯(cuò)誤:

????這樣的錯(cuò)誤一般都是非法訪問(wèn)內(nèi)存造成的, 比如數(shù)組越界, 訪問(wèn)野指針等.

數(shù)組越界

????具體出錯(cuò)誤位置如下:

????點(diǎn)擊"中斷"按鈕, 可以看到是調(diào)用 RegQueryValueEx時(shí)的第2個(gè)參數(shù)v7的值為0x00000001. 而RegQueryValueEx的第二個(gè)參數(shù)是注冊(cè)表子項(xiàng)字符串.

????根據(jù)1477行的v7賦值語(yǔ)句, 查看?lpKeyName 的定義,

????1477行的賦值是將字符串?dāng)?shù)組索引為?Data 的字符串賦值給v7, lpKeyName是該數(shù)組的第一個(gè)元素; 但是下方的 lpKeyName 的定義指示,?lpKeyName僅是一個(gè)字符串指針, 這是矛盾的, 這就是問(wèn)題所在.

解決方法

????通常情況下, IDA Pro反編譯出來(lái)的的偽代碼是沒(méi)錯(cuò)的, 而變量的識(shí)別是很容易出錯(cuò)的. 這里就是這樣的情況. 解決方法是 將lpKeyName開(kāi)始的一系列變量合并為一個(gè)字符串?dāng)?shù)組.?

????在IDA Pro中查看lpKeyName.

原因是IDA Pro識(shí)別錯(cuò)了, 此處lpKeyName確實(shí)應(yīng)該是一個(gè)長(zhǎng)度18的字符串?dāng)?shù)組. 選中這18個(gè)字符串, 右鍵選擇"Array", 點(diǎn)確定, 最后點(diǎn)擊lpKeyName, 按Y鍵修改它的類型為L(zhǎng)PCWSTR lpKeyName[]; 再按Shift + E, 打開(kāi)導(dǎo)出數(shù)據(jù)窗口, 復(fù)制Preview下方的定義到Visual Studio里面替換掉原來(lái)的定義:

修正引用代碼

????修改了lpKeyName的類型, 還需要修改引用到它的代碼, 反編譯就是這么麻煩. 不過(guò)好在IDA Pro會(huì)根據(jù)變量類型自動(dòng)修正代碼, 只需要按F5刷新一下.

????對(duì)每個(gè)需要修正的代碼, 到IDA Pro中復(fù)制修正的代碼到Visual Studio中, 就解決了這個(gè)問(wèn)題.

C++程序反編譯筆記(12) 讀取位置 0x00000001 時(shí)發(fā)生訪問(wèn)沖突的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
五峰| 平昌县| 尉犁县| 绥芬河市| 突泉县| 山阴县| 包头市| 大同县| 聂拉木县| 建始县| 巴林右旗| 蒙山县| 新巴尔虎左旗| 武胜县| 西藏| 米林县| 常山县| 浦北县| 大渡口区| 山东| 如皋市| 灵川县| 二连浩特市| 罗定市| 深水埗区| 兰州市| 讷河市| 宜州市| 彭州市| 安康市| 朝阳区| 滨海县| 偏关县| 墨脱县| 江永县| 宽城| 玛纳斯县| 石嘴山市| 霸州市| 平陆县| 平南县|