天天看點

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

目錄

問題如下:

解決:

總結:

問題如下:

脫殼的時候我下了硬體斷點:在PUSHAD的下一步檢視ESP,OD的左下角goto到esp指向的位址,然後右鍵下硬體斷點。

這樣再運作很容易就直接定位到了POPAD,看起來都挺順利的,很容易找到了OEP的位置。但是記憶體轉儲出來的exe打開無效果不運作,在110版本的OD中提示:“has entry point outside the code(as specified in the PE header)”。晚上我和同學讨論了下,他可以正常脫殼,我看到他是直接F8一點點一點點的找,最後找到POPAD的位置,或者CTRL+F直接搜尋POPAD然後找到位址,dump。沒有下斷點,我也用他的電腦試了下,可以。但是我在他的電腦上也設定硬體斷點之後,就和我的狀況一樣了。後來我取消硬體斷點,把硬體斷點都删除,直接dump,因為OEP的位址一直都是1332。也不行了。

我在這個上面發了求助,裡面是我的具體問題:

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1042292&page=1#pid28293988

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

解決:

解決的文章:https://zhidao.baidu.com/question/691492835131194084.html

https://www.52pojie.cn/thread-525321-1-1.html

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

WIN7已經驗證可行了,再去我的32位虛拟機看看,順便給虛拟機都做一次spa(把不用的垃圾都去掉,然後整理一下檔案),直接運作程式時出現下面的問題:

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

解決方法:搜尋Microsoft Visual C++ 2010 Redistributable Package ,安裝即可。https://www.microsoft.com/zh-CN/download/confirmation.aspx?id=5555

還未解決,參照:解決方法:https://www.cnblogs.com/hrhguanli/p/3886490.html 

然後就開始脫殼了。

我知道的并且可行的對于UPX的脫殼找OEP的幾種方法:

1.pushad的下一步,找到esp的值,OD左下角goto過去,下硬體斷點。然後再運作,直接定位到了popad那一部分。然後轉到oep即可(即找到oep的位址),dump即可。

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

然後下斷點:(跳過去選中第一個位元組即可)

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

2.直接ctrl+f搜尋popad直接看到oep的位置

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

3.利用ollybdg的dump插件,裡面有一個找oep的選項(但這個偶爾我的不可行。),點選後運作也直接過去了。

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

4.手動ctrl+f8追蹤,f7進入循環檢視下斷點,f9跳出繼續走。直到看到oep。

以下硬體斷點為例:

1.載入檔案看到如下:

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

2.F7或者F8單步向下一步:

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

3.記錄下esp的位址,到左下角goto

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

4.下硬體斷點:

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

 5.F9運作,直接來到了POPAD的下面:

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

 6.記錄下OEP的位址,或者可以f8一路向下,跳過那些小循環,來到OEP

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

7.記憶體轉儲 

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

8. 不用手動修改EIP了,因為已經跳過去了,注意下面直接勾選修複IAT的選項,雖然好像說UPX不選這個也沒事,因為殼比較簡單,但選上吧。點選脫殼即可。

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

 9.驗證可否運作:

偶爾可以成功。什麼鬼。dump了好幾個,1是沒有F8到OEP看到位址直接dump的,2是下面選擇方式1的,3是正常跳過去不用自己修改eip的。三個有時候某一個可以正常執行。

出現的錯誤如:

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

指令引用的記憶體,該記憶體不能為read :

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

是不是我一次性dump的太多了,删掉重新來。

10.不知道為什麼,發現對于XP系統選擇方式1可以成功,方式二就會出現上面的錯誤

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

 如下:

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

去找一下方式1和方式2的差別:

https://www.pediy.com/kssd/pediy07/pediy7-659-5.htm 

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

https://max.book118.com/html/2017/0422/101701603.shtm

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

 https://www.docin.com/p-503474373.html

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

 最後看雪:https://bbs.pediy.com/thread-20165.htm

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

好吧,我其實有點想弄清楚到底差別在哪,現在我不care了?。不選方式就好了! 

總結:

1.盡量使用32位系統,win7系統。不要使用win10。

2.對于我等菜鳥,UPX脫殼無需勾選dump的方式1,2,自增煩惱

=====================

額,我又回來了,真是打臉。不選方式一XP系統還是無法執行出現這個錯誤:

【逆向】【UPX】【ODdump】硬體斷點後記憶體轉儲程式無法運作成功解決及脫殼步驟

啊!(╯‵□′)╯︵┻━┻

我去寫作業了。 

繼續閱讀