国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
武胜县| 安龙县| 白河县| 茌平县| 荃湾区| 望城县| 白玉县| 三门峡市| 郓城县| 东至县| 莫力| 炉霍县| 汤阴县| 敖汉旗| 洛隆县| 平远县| 永嘉县| 临夏市| 德化县| 白朗县| 宁海县| 略阳县| 融水| 上高县| 高雄市| 乐安县| 精河县| 内黄县| 柳州市| 新田县| 沽源县| 济源市| 青州市| 荥经县| 车致| 五河县| 宝丰县| 文成县| 封丘县| 桦南县| 临邑县|