脱UPX壳四种操作
文章目錄
- 提示
- 單步跟蹤
- (1)例如這種情況讓它直接跳轉:
- (2)這種情況直接在點擊`0x40FFBA`地址行,然后點擊`F4`:
- 這種情況操作如(2):
- 這種情況操作如(2):
- 遇到這種的話,比較特殊,因為你在地址`0x410030`執行`F4`操作后直接進入了一個函數了,所以在`0x410036`按下`F4`
- 在執行完popad這行操作后,ESP的值變回了`0x19FF74`:
- 執行后:
- ESP定律
- 觀察ESP的值,只要一改變就可進行操作。
- 執行一行后:
- 接著操作如下:
- 第一步:
- 第二步(然后設置一個硬件斷點):
- 接著點擊運行
- 2次內存鏡像
- 第一次斷點(程序data段領空區域)
- 第二次斷點
- 一步直達
- 搜索操作
- 下斷點
提示
其實這四種都是ESP不變總結出來的,剛開始的時候記住ESP的值,它的值為0x19FF74
單步跟蹤
單步跟蹤記住一點:往下跳轉指令讓它實現,往上跳轉指令直接在跳轉指令的下一行指令進行F4操作。
(1)例如這種情況讓它直接跳轉:
(2)這種情況直接在點擊0x40FFBA地址行,然后點擊F4:
這種情況操作如(2):
這種情況操作如(2):
遇到這種的話,比較特殊,因為你在地址0x410030執行F4操作后直接進入了一個函數了,所以在0x410036按下F4
在執行完popad這行操作后,ESP的值變回了0x19FF74:
所以在附近看看有沒有什么跳轉,跳轉過后就是OEP,因為ESP已經恢復原值了。
執行后:
ESP的值還是0x19FF74,可以脫了。
然后點擊DUMP就行,至于要不要重建輸入表的話,進行兩次試試,看看哪一個程序打得開就行。GAMEOVER
ESP定律
觀察ESP的值,只要一改變就可進行操作。
執行一行后:
ESP的值從0x19FF74變成0x19FF54。
接著操作如下:
第一步:
把它dump在數據區顯示
第二步(然后設置一個硬件斷點):
接著點擊運行
就運行到這里了,再運行一步
ESP還原嘍,還是不變哦,緊接著繼續運行一下跳轉,就可以Dump了
2次內存鏡像
點擊內存區域(即Memory)操作:可以直接點擊M
,也可以點擊View---->Memory,或者直接Alt+M
第一次斷點(程序data段領空區域)
按F2設置一個斷點,接著運行。,就到達了這里
第二次斷點
記住斷點肯定下在程序領空區。。然后運行
緊接著到達了這里,接著運行幾步即可
注意別踩這個函數坑,前面已經說過,不是不能進去,而是進去后進行無意義的分析,只會讓你頭暈。
一步直達
因為發現了pushad,所以肯定有popad,成對出現
搜索操作
或者直接Ctrl +F ,輸入popad
記住這里不要勾選
下斷點
在popad這里下一個斷點,即按下F2,然后運行即可
總結