題:
IDA Pro:在參數上使用結構
sqrtsben
2013-11-20 18:57:47 UTC
view on stackexchange narkive permalink

我有一個小的函數,該函數的參數為 struct struct 看起來像這樣:

  struct my_struct {short a; unsigned int b; unsigned int c;};  

注意對齊,我在IDA中構建了以下 struct

  field_0 + 0x0field_1 + 0x4field_2 + 0x8  

編譯器對其進行構建,以使其將 rbp + 0x10 作為 struct rbp + 0x14 作為第二個,依此類推。現在出現問題是因為,如果我嘗試將預定義的IDA struct 應用於指令,我總是會得到類似 [rbp + struct.field_0 + 0x10] 的信息。如果我的結構中實際上在 + 0x10 處,這會變得更加複雜,因為那樣的話,它只會顯示 [rbp + struct_fieldX] (這是錯誤的)。

問題是:有沒有辦法告訴IDA(我正在使用6.3)應用偏移量為 0x10 struct

這種簡單情況的骯髒技巧是創建一個 struct ,該結構具有2個 size_t 虛擬字段用於 RIP SFP ,但這似乎並不是正確的選擇。

一 回答:
Jason Geffner
2013-11-20 20:53:02 UTC
view on stackexchange narkive permalink

在函數的堆棧視圖中添加您的結構:

  1. 將光標置於函數的反彙編視圖中,按 Ctrl kbd> + K kbd>打開堆棧視圖。
  2. 在堆棧視圖中,確保存在足夠的函數參數以至少到達堆棧中的 +00000010 。根據需要使用 D kbd>添加更多函數參數。
  3. 將光標定位在堆棧視圖的 +00000010 行上,然後按 Alt + Q kbd>在該偏移量處指定 my_struct
  4. ol>
重點說明:在第三步中,您必須**處於堆棧視圖中。如果將光標放在IDA視圖中相應的局部變量上,然後按“ Alt + Q”,則IDA會嘗試將*功能的內容*解釋為結構,而不是變量,這會破壞功能。我看到這是人們在學習IDA中的結構時經常犯的一個錯誤。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...