2013-03-19 35 views
2

在Ollydbg我有一個程序的指令地址,我正在調試具有特定的值。這個價值正在無數循環中傳遞。是否有任何方法可以「追蹤」該值,而無需手動逐步遍歷每個循環,並試圖跟蹤值的傳遞位置?我根本無法手動爲15000+指令循環執行此操作。以下/跟蹤一個值,因爲它在不同的寄存器/內存位置傳遞?

我最終試圖追蹤它到一個加密函數,在這一點上它應該消失,我會知道我已經在這個程序中加密。如果有某種方法,我可以'自動'關閉它,並使程序在完全消失時暫停,然後它應該引導我正確使用我的加密功能。

我在腦海中懷疑這樣的事情是可能的,但我認爲它不會受到傷害。

如果需要,我的操作系統是Windows 7 x86。

回答

3

沒有調試器我用過或聽說過,讓你「跟蹤」那樣。

關於唯一的選擇是編寫某種調試器插件(如果調試器支持)或特殊的程序來驅動調試器中的執行,按指令執行,並查看值的位置,哪些寄存器,哪些存儲器位置等等。並且它可能不會完全從存儲器和寄存器「消失」。它可能太慢而不切實際。

如果你有源代碼可用,我認爲你沒有,你可能會更好的代碼審查,但是你會知道那個函數在哪裏,不會問這個問題。

1

通過靜態分析可以更好地處理您的任務。

另一方面,有PaiMei與它的代碼跟蹤和數據流分析模塊。

它通過設置成千上萬的斷點(掃雷示例中的50k)來工作,然後記錄它們何時被命中以及如果設置了上下文。您可能需要幾次運行,如果您可以在每次執行過程中更改要跟蹤的值(是否輸入?),那麼最好。 是的,這是非常暴力的方法,對於大文件可能會非常慢。

相關問題