2014-01-06 42 views
4

在WinDbg中,我可以使用s命令在內存中搜索字節,例如,搜索包含未知值的內存

s 0012ff40 L?2000 48 65 6c 6c 6f 

還有一種方法可以在搜索序列中包含未知字節,例如,

s 0012ff40 L?2000 48 65 ?? ?? ?? 6c 6f 

其中??是與任意的值的字節?

理念

如何做((內存XOR 48 65 00 00 00 6c 6f)和FF FF 00 00 00 FF FF)和比較,對00 00 00 00 00 00 00?但我不知道如何在WinDbg中做到這一點。

回答

3

我不確定搜索命令是否支持通配符。但是你可以使用.foreach command來實現你想要的。

這裏是我用於搜索存儲器圖案如ff ?? 00

.foreach樣品(命中{S - [1] b 00007ffabc520000 L100 FF}){分貝擊中L3; US $ {}擊+2 L1 00}

這裏是它如何工作的簡要說明:

注 - 從WinDbg中獲得完整的文檔打開調試器的幫助。這是在Windbg中,幫助|內容

{s -[1]b 00007ffabc520000 L100 ff }

使用 - [1]其中s標誌,使得僅所述存儲器地址被給出爲輸出。

s ${hit}+2 L1 00

對於每個命中,傳遞存儲器地址到下一搜索命令。增加你想跳過的字節數量並提及搜索模式的最後部分。

db hit L3

從具有圖案開始的內存,轉儲整個長度。這只是爲了確認我們正在取得正確的結果!

希望這會有所幫助。如果您需要進一步澄清,我可以嘗試提供。

+0

感謝一個地址,我給它一個嘗試,但它看起來像這樣變得太複雜的情況下搜索內存與多個通配符,如「AA ?? BB ?? CC ?? DD' –

+0

是的,我同意。這更像是一個解決辦法,而不是一個完美的解決方案:) – Player

0

如果搜索範圍不是非常大,您可以將十六進制轉儲複製/粘貼到崇高文本中,只需啓用查找並啓用正則表達式模式即可。比如我一直在尋找(1200 < X < 2400)

add esp, X 
ret 

在崇高的文字我搜索使用正則表達式81 c4 .. .. .. 00 c3,發現與說明書

add esp,600h 
ret