2016-12-02 132 views
0

所以我使用CFF Explorer將代碼段添加到.exe文件中。我已經將部分特徵設置爲0x60000020(可執行文件,可讀文件,包含代碼),並使用IDA創建了一些虛擬代碼。`jmp`到擴展段訪問衝突

但是,當我將jmp注入原始.text段的代碼中時,我得到的只是一個訪問衝突。我用IDA來修補二進制文件,所以它產生的偏移,對我來說這似乎是正確的:

jmp  far ptr 6:75D100h 

產生的操作碼看起來正確太:

EA 00 D1 75 00 06 00 

但只要我打的跳轉 - 「指令引用內存0xFFFFFFFF,內存不能被讀取」。我已經嘗試了一些補償無濟於事;附加的段似乎正確地加載到內存中。

將不勝感激任何暗示什麼,我在這裏失蹤:)

+2

是什麼讓你覺得'6'是一個正確的段選擇器? – Jester

+1

@Jester事實上,它不是 - 看起來像正確的是5 - 但段錯誤依然存在。 我不知道爲什麼IDA在那裏放6,謝謝 – Ap31

+2

'5'看起來也很可疑。如果你在LDT中分配了一個新的描述符,'7'可以工作。 – Jester

回答

0

只是爲了紀念這個作爲回答 - 解決方案建議,由@Jester和@RossRidge,是砸jmp far。使用

jmp  near ptr 75D100h 

修復了一切。不得不說IDA的行爲可能會有些奇怪。