2009-12-19 39 views
1

目前,我正在拆解IDA Pro中的Mach-O可執行文件。我已經通過並找到了我感興趣的字符串,但是當我嘗試找到它的外部參照時,找不到任何字符串。我確定這些字符串是在原始代碼中引用的,但IDA Pro似乎無法找出它們是如何引用的。如何讓IDA Pro「查看」外部參照到字符串?

是否有任何技巧可以讓IDA Pro看到外部參照?

+1

這個問題已經很老了,但是在IDA中看到沒有直接交叉引用的字符串是很常見的。如果字符串的地址是以某種方式在運行時計算的,則IDA通常不會識別交叉引用。使用PE文件時,您經常會看到位於資源部分的字符串。無論如何,如果您使用的是x86並且可以運行可執行文件,那麼在調試器中設置對字符串的訪問時間可能很有用,以便在訪問字符串時調試器會中斷。然後您可以生成堆棧跟蹤並從那裏開始向後工作。 – user1354557 2016-07-07 16:57:42

回答

2

你有足夠的時間分析整個程序嗎?如果有參考,它可能需要一段時間才能在大型程序中找到它。

它也可能是由IDA無法找到流路徑的指令引用的。在IDA無法猜測表的大小的跳轉表中可能發生這種情況。 IDA中的I的原因是,您需要查看需要判斷和正確解釋的說明,並將它們設置爲適當的類型,以便IDA可以完成大部分工作。

2

字符串屬於字符串數組,字符串的第一個元素被IDA Pro引用是可能的。

例子:

str_table dd offset str1 ; ^xrefs: display_message(int idx) 
dd offset str2 
dd offset 0x1234 (if you press ctrl+o it may resolve to mystr) 

mystr db "Hello world" 

所以,儘量附近的字符串找到參考字符串,看看他們是否屬於一個表,創建一個數組,等等

1

IDC腳本函數add_dref()將是你正在尋找的人。