瞎侃:發現OEP的一個思路。 (749字)

看雪資料發表於2004-02-11

我們都知道衝擊波發現OEP的原理是,利用一些程式語言編譯的程式的開始的一段程式碼是相對固定的,其中包括了GetCommandLineA、GetModuleHandle、GetVersion這幾個函式的呼叫,這樣在這幾個函式進行攔截,透過對比攔截後的地址附近的程式碼特徵可以發現OEP。

但是目前的殼透過把這些函式的結果提前在殼中取出來,當程式呼叫這些函式時,不再透過API呼叫這些函式,這樣避開了攔載這些函式得到OEP的方法。

透過比較殼隱藏的這些函式,可以發現象GetCommandLineA、GetEnvironmentStringsW這樣的函式,返回的是一個指標,在程式中會對這個指標指向的內容進行讀,如果攔截對這些函式的呼叫,返回一個無效指標,這樣當程式讀資料時,會發生異常,這樣異常地址就在程式OEP的附近了。

當然如果殼在提前在呼叫這些API時加個防範(實際試探一下地址是否可讀),那麼這個想法也沒有用了。

瞎侃一下了。走人。。


相關文章