手脱ASpack
文章目錄
- 聲明
- 單步調試
- 第一個call(步入)
- 第二個call(步入)
- 第三個call(步過)(GetModuleHandleA)
- 第四個call(步過)(GetProcAddress)
- 第五個call(步過)(VirtualAlloc)
- 第五個call(步過)(VirtualAlloc)
- 第六個call(步過)(未知)
- 第七個call(步過)(VirtualFree)
- 第八個call(步過)(VirtualFree)
- 第九個call(步過)(GetModuleHandleA)
- 第十個call(步過)(GetProcAddress)
- 第十一個call(步過)(VirtualProtect)
- 第十二個call(步過)(VirtualProtect)
- 終點:
- ESP定律
- 找到ESP突變的點。(記住是突變(感覺應該就是變化很大))
- 首先,dump數據區
- 然后設置硬件訪問斷點
- 收尾
- 單步直達
- 搜索操作:**(`ctrl +F`)**
- 第一次搜索后
- 第二次搜索(`ctrl +L`):
- 第三次搜索:
- 兩次內存鏡像
- 第一次斷點(.rsrc)
- 第二次斷點(.text(偏移一般是1000))
- 來到這里
- 模擬跟蹤
- 第一步:尋找
- 第二步:搜索
- SFX
聲明
首先記住剛開始的時候ESP的值
單步調試
還是那句話,遇到向下的跳轉讓它實現,向上的直接F4就行
ESP的值是0x0133FBE4
第一個call(步入)
第二個call(步入)
第三個call(步過)(GetModuleHandleA)
第四個call(步過)(GetProcAddress)
第五個call(步過)(VirtualAlloc)
第五個call(步過)(VirtualAlloc)
第六個call(步過)(未知)
第七個call(步過)(VirtualFree)
第八個call(步過)(VirtualFree)
注意:
在0x6C23F時,因為此時是一個loop循環,然后下面是一個jump,而且是向上跳,所以直接在0x6C243按下F4
第九個call(步過)(GetModuleHandleA)
第十個call(步過)(GetProcAddress)
第十一個call(步過)(VirtualProtect)
第十二個call(步過)(VirtualProtect)
注意:這里有個向上跳轉,然后跳轉代碼下行即是函數,前面已經有所介紹,所以直接在函數下一行按下F4即可
終點:
找到popad,然后下一行代碼跳轉讓它實現,即到0x6C420,緊接著即到了OEP位置
ESP的值是0x0133FBE4,保持了ESP不變定律
ESP定律
找到ESP突變的點。(記住是突變(感覺應該就是變化很大))
ESP的值0xDEC000
執行完pushad之后:
ESP的值0xB9FE94,即突變了,下面的操作是突變后立刻需要做的:
首先,dump數據區
然后設置硬件訪問斷點
特別注意,是硬件訪問斷點,千萬別下成硬件寫入斷點和硬件執行斷點
緊接著運行即可
然后就到達了下面這種代碼:
隨便單步運行幾步就可看到
收尾
別忘了把硬件訪問斷點給刪除了:
單步直達
搜索操作:(ctrl +F)
第一次搜索后
不是,接著下一次搜索
第二次搜索(ctrl +L):
直接ctrl +L
不是,接著下一次搜索
第三次搜索:
找到了。單步執行一下即可。
兩次內存鏡像
第一次斷點(.rsrc)
然后運行
第二次斷點(.text(偏移一般是1000))
然后運行
來到這里
單步向下運行幾步即可
模擬跟蹤
第一步:尋找
找到這種段的地址
第二步:搜索
在命令行里面搜索
輸入:tc eip<0006C000 記住tc后面有個空格。。然后回車
緊接OD左上角這里會有跟蹤字眼
SFX
然后就可以看到這種:
根據題目選擇第二個或者第三個
然后點擊
緊接著就到了這里
總結
- 上一篇: 脱UPX壳四种操作
- 下一篇: 手撕Nspack3.7(北斗)壳