題:
如何從IDA中找到OllyDBG中的偏移量
Caroline
2013-04-17 19:17:46 UTC
view on stackexchange narkive permalink

我目前正在嘗試獲得RE方面的一些實踐,並且需要一些修補DLL的幫助。這是我的步驟:我首先分析IDA中的主程序和dll,以了解邏輯。然後,我切換到OllyDBG進行修補。好吧,問題在於,由於Olly動態加載dll(與IDA中的靜態獨立分析相反),所以偏移量是不同的,並且我不知道如何找到我在IDA中檢查過的偏移量。

預先感謝!簡單的方法來“重新發現” dll中的偏移量?

您修補實時程序還是在磁盤上?為什麼不在IDA中全部使用呢?
我猜實際的偏移量是相同的,但基數已更改?
直接在IDA(Pro 6.1)中運行補丁程序?如何?我可以在IDA中使用“彙編”功能,然後導出diff。但是直接運行更改的代碼嗎?此外,由於更改是在dll中進行的,並且我一次只能打開一個文件,所以我想知道這應該如何工作...
您知道@Caroline: IDA有一個調試器。
五 答案:
0xea
2013-04-17 19:50:54 UTC
view on stackexchange narkive permalink

如果僅更改了基數,但是偏移量是恆定的(我猜是這樣),則可以在IDA中重新設置程序的基數。您可以通過編輯->段->重新設置程序...菜單來實現。在IDA中指定與Olly中相同的起始基準應該會有所幫助。由於許多原因,基準可能有所不同,其中之一可能是ASLR。

我通常使用感覺很笨拙的calc計算它。必須有比手動執行此類操作或來回調整基礎更好的方法。根據我的經驗,重新設置基准後,您可能會在IDA中遇到一些符號錯誤。
我想我遇到了同樣的問題,有時我會來回計算地址,這很容易出錯而且很乏味。也希望看到更好的解決方案。
Jason Geffner
2013-04-17 20:05:12 UTC
view on stackexchange narkive permalink

是否有一些簡單的方法可以“重新發現” dll中的偏移量?

是的,這是算法:

Target_Address_in_OllyDbg = Source_Address_in_IDA-Base_Address_in_IDA + Base_Address_in_OllyDbg

以下是定義:

Target_Address_in_OllyDbg :OllyDbg中的目標地址。

Source_Address_in_IDA :IDA中的源地址。

Base_Address_in_IDA :IDA中反彙編模塊的基地址。您可以通過進入IDA菜單欄中的編輯->細分->重新設置程序... 來找到該值。該對話框中 Image base Value Base_Address_in_IDA

Base_Address_in_OllyDbg :目標模塊的基地址,以OllyDbg表示。您可以通過按OllyDbg中的 Alt-E (或轉到OllyDbg菜單欄中的 View->可執行模塊)來找到該值。在可執行模塊窗口中找到目標模塊;最左邊的字段( Base )是 Base_Address_in_OllyDbg

scrapbird
2017-02-21 16:47:24 UTC
view on stackexchange narkive permalink

如果有人覺得有用,我給自己做了一個小計算器,可以很容易地在反彙編器中獲取地址,該地址使用上述相同的算法,當前默認為二進制忍者的基址,但這很容易在代碼中更改。 https://github.com/scrapbird/OffsetCalc

blabb
2017-02-24 15:56:32 UTC
view on stackexchange narkive permalink

我使用這個小的IDC腳本,我只設置了一次基數,然後使用AskAddr輸入olly地址。

  auto olbase,oladdr,rva; olbase = 0x20000; oladdr = AskAddr(0,“輸入地址(如olly所示));跳轉(MinEA()+ oladdr-olbase);  
h0m3us3r
2020-04-29 02:39:33 UTC
view on stackexchange narkive permalink

我通常在IDA中將其重新設置為 0 。然後,使用StrongOD的 Adv Ctr + G 選項,您只需將IDA中的地址作為RVA放入所需的模塊即可。



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