簡體   English   中英

是否在沒有反匯編程序的情況下掃描“呼叫”指令?

[英]Scanning for 'call' instruction without a disassembler?

我正在為Windows X64中的文本編輯器編寫調試器。 我實現了斷點和跨步/跨步。 我被困在步入中,因為我基本上需要獲取當前行(通過PDB文件和DbgHelp獲得)和下一行的指令地址,看看這些地址之間是否有“調用”指令,如果是的話,我們進行其他操作。

我想知道是否有辦法通過DbgHelp / PDB獲取此信息(而不必編寫或使用反匯編程序)? 還是利用某些指令的字節順序,也許“調用”是唯一的,並且它的字節只有一種排序方式,所以我可以逐字節讀取並查看它們是否與“調用”匹配? (這樣一來,我不必進行全部甚至部分的處理)

有想法嗎? 任何幫助,將不勝感激

不幸的是,沒有。

在x86_64代碼中,用於callq的最常見操作碼是e8 ,但是在沒有完全分解二進制代碼以弄清楚每條指令從何處開始的情況下,無法將e8意思是callqe8區別於另一個上下文(例如,作為常量的一部分)。 請記住,x86使用變長指令,因此在指令開始處並不總是很明顯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM