脫殼學習記錄 DLL找OEP

2021-08-28 02:06:28 字數 1163 閱讀 8579

還是做一些加密解密3的學習記錄

dll檔案脫殼相比於exe脫殼困難一些

用peeditor檢視一下加殼後的dll檔案的資訊

imagebase預設定位在了00400000處,可是我們用od開啟會發現並不是

如果你的od有插間或者輔助程式loaddll.exe就可以開啟dll檔案了,可以去下乙個

用od開啟後,會發現入口點並不在00400000,如果不確定的話可以開啟記憶體看一下,已經是在500000了

猜都猜出來用了重定位,難度加大,跳轉到pedit段(我們加殼後多出來的區段,即外殼段)

在0050d000處設定斷點,執行dll,第一次會停止在該處(一次不行久多執行幾次,載入可能會出問題),正常,要執行外殼嘛,然後我們關閉dll跳出的檔案,然後不斷單步執行,你會發現又再次到了這個地點,為什麼呢?

因為dll檔案的特殊性,載入和脫離的時候都會經過外殼處理,但是在脫離的時候外殼裡面的解壓**段就不會執行了,執行的**量會少一些,既然更少,那就更容易找到oep,我們直接對text段設訪問斷電,執行後直接跳轉到oep

直接用lordpe dump下來就好,如果想和加殼前位址一樣的話,那就要找出重定位**,強行跳過就好了

同時建立輸入表的時候dll和exe也有一點點區別

我們用importrec來重建輸入表(dump,和重建輸入表我都是另外從win7上實行的,所以位址有些不一樣)

繫結程序後,在選項裡把下圖的勾去掉,因為dll載入的不是預設的基位址

然後在oep處填入我們找到的1240,之後自動搜尋iat位址,然後重構建輸入表

最後fix dump就好了(當然啦,還缺最後一步,構造重定位表)

為什麼要構造重定位表呢,因為dll的動態鏈結庫檔案,外殼可能破壞了原始重定位表,具體操作其實就是打補丁把提取重定位的表的值

FSG脫殼學習

fsg脫殼可採用 1,超好用的esp定律法 2,單步跳轉法 不過這兩個方法值得注意的是,fsg殼比upx殼的oep更加的隱蔽。可能看不到大的跳轉,會把跳轉位址隱藏在暫存器單元中如ebx,esp等 oep的查詢並不難,主要是修復,和查詢iat iat importaddresstableaddress...

找質數 演算法學習記錄

找質數 演算法學習記錄 判斷x是否為質數 if x 2 0 如果x為偶數且不為2,直接返回不為質數 for int i 3 i sqrt x i i return true intjudge int x for int i 3 i x 2 i i return 1 intmain for int i...

upx脫殼學習筆記

目前我所知upx脫殼的三種方法 1,單步跟蹤法 發現往回跳的都給我按f2 breakpoint,如果遇見連續多jump就在最後個jump後設定斷點,不停的找啊找,要有耐心 2,esp定律法 首先先step over f8 pushad壓棧,同時會發現esp發生改變,再使用command命令輸入hh ...