ACProtect Professional 1.3C 主程序脫殼(2)(圖)
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-08 19:05:27 作者:佚名
我要評論

4. dump
根據(jù)脫US UnpackMe的經(jīng)驗,不能在false OEP處dump,此時BSS section中許多數(shù)據(jù)已經(jīng)初始化了。最好在第一句(push ebp)就dump??墒悄莻€push ebp離false OEP很遠L。
Packer EP的初始化環(huán)境:
先看看發(fā)出第1個call的殼代碼:
4. dump
根據(jù)脫US UnpackMe的經(jīng)驗,不能在false OEP處dump,此時BSS section中許多數(shù)據(jù)已經(jīng)初始化了。最好在第一句(push ebp)就dump??墒悄莻€push ebp離false OEP很遠L。
Packer EP的初始化環(huán)境:
先看看發(fā)出第1個call的殼代碼:
可以看到(跟一下可以證實),在call入原程序空間前,最后的異常是div 0。用現(xiàn)在的OllyDbg腳本(跟到737B63),停下后修改異常攔截選項:
試試能否攔截異常找到合適的dump位置。當前OllyScript腳本停下時的環(huán)境:
棧中為pushad的結果。
第7次div 0異常時:
注意ebp的值已經(jīng)入棧了。Pushad的結果,對應寄存器值為:
esp = 12FFC0 (原來為12FFC4)
ebp = 12FFC0 = esp (原來為12FFF0)
看看BSS section:
全為0,就在這里dump。如果需要仔細跟stolen code,也可以從這里入手(可以從腳本停下的第6次div 0異常處理后開始)。
先用4D9DE4為OEP。
用LoadPE查看節(jié)表:
先把CODE的Vsize和Rsize加大,以避免修復stolen codes時空間不夠。
重新跟到false OEP(4D9E37)。重建輸入表。
用了Add new section,會不會有問題(好象有篇脫文里提到過這個)? 先這樣處理。
用IDA編譯dumped_.exe,結果不錯。
現(xiàn)在剩下stolen code和replaced code。
5. 修復stolen code
既然不打算仔細跟,就只有猜了。對執(zhí)行第1個call以前的stolen code進行猜測,應該是安全的。后面的4次call需要仔細看看。
1) call 406EDC
在IDA中看dumped_.exe的結果:
先執(zhí)行腳本,停下后只勾選div 0異常。直到73A9AF。經(jīng)過一番遮遮掩掩的代碼:
在call前的寄存器:
堆棧:
call完后,下面的pushad為分界線,標識stolen code的結束。所以到這里的stolen code為(對于不確定的,可以在Packer EP修改寄存器值,到這里核對):
Call完后,pushad前的環(huán)境:
2) call 46261C
到這里的stolen code:
從這里開始,不能圖省事了。要追出全部的stolen code,必須跟(必須確保上一次pushad和下一次popad時的環(huán)境一致,才不會丟代碼)。先試直接攔截div 0異常,注意后面是否有popad。如果兩次的環(huán)境不一致,則必須單步跟L。
另外,追stolen code不是一次完成的,所以有些圖中寄存器和堆棧中的數(shù)據(jù)對不上,不必管它。
3) 0073BC47
4) 0073C558
5) 第1次call 462634
這個函數(shù)有2個參數(shù)L。
這是最后一次后面存在popad的div 0異常。看看是如何回到原程序的。
在73D872忽略所有異常,對code section下內存訪問斷點。中間在kernel32中有一次內存訪問異常。
最后一次div ebx在73DBE1。單步跟到這里:
73DE38破壞前面代碼。
至此修復所有stolen codes,將前面的6部分和fasle OEP的2個call合在一起。
根據(jù)脫US UnpackMe的經(jīng)驗,不能在false OEP處dump,此時BSS section中許多數(shù)據(jù)已經(jīng)初始化了。最好在第一句(push ebp)就dump??墒悄莻€push ebp離false OEP很遠L。
Packer EP的初始化環(huán)境:



先看看發(fā)出第1個call的殼代碼:

可以看到(跟一下可以證實),在call入原程序空間前,最后的異常是div 0。用現(xiàn)在的OllyDbg腳本(跟到737B63),停下后修改異常攔截選項:

試試能否攔截異常找到合適的dump位置。當前OllyScript腳本停下時的環(huán)境:

棧中為pushad的結果。
第7次div 0異常時:


注意ebp的值已經(jīng)入棧了。Pushad的結果,對應寄存器值為:
esp = 12FFC0 (原來為12FFC4)
ebp = 12FFC0 = esp (原來為12FFF0)
看看BSS section:


全為0,就在這里dump。如果需要仔細跟stolen code,也可以從這里入手(可以從腳本停下的第6次div 0異常處理后開始)。
先用4D9DE4為OEP。

用LoadPE查看節(jié)表:

先把CODE的Vsize和Rsize加大,以避免修復stolen codes時空間不夠。

重新跟到false OEP(4D9E37)。重建輸入表。

用了Add new section,會不會有問題(好象有篇脫文里提到過這個)? 先這樣處理。
用IDA編譯dumped_.exe,結果不錯。
現(xiàn)在剩下stolen code和replaced code。
5. 修復stolen code
既然不打算仔細跟,就只有猜了。對執(zhí)行第1個call以前的stolen code進行猜測,應該是安全的。后面的4次call需要仔細看看。
1) call 406EDC
在IDA中看dumped_.exe的結果:

先執(zhí)行腳本,停下后只勾選div 0異常。直到73A9AF。經(jīng)過一番遮遮掩掩的代碼:

在call前的寄存器:

堆棧:

call完后,下面的pushad為分界線,標識stolen code的結束。所以到這里的stolen code為(對于不確定的,可以在Packer EP修改寄存器值,到這里核對):
Call完后,pushad前的環(huán)境:


2) call 46261C


到這里的stolen code:
從這里開始,不能圖省事了。要追出全部的stolen code,必須跟(必須確保上一次pushad和下一次popad時的環(huán)境一致,才不會丟代碼)。先試直接攔截div 0異常,注意后面是否有popad。如果兩次的環(huán)境不一致,則必須單步跟L。
另外,追stolen code不是一次完成的,所以有些圖中寄存器和堆棧中的數(shù)據(jù)對不上,不必管它。
3) 0073BC47

4) 0073C558

5) 第1次call 462634

這個函數(shù)有2個參數(shù)L。

這是最后一次后面存在popad的div 0異常。看看是如何回到原程序的。
在73D872忽略所有異常,對code section下內存訪問斷點。中間在kernel32中有一次內存訪問異常。

最后一次div ebx在73DBE1。單步跟到這里:

73DE38破壞前面代碼。

至此修復所有stolen codes,將前面的6部分和fasle OEP的2個call合在一起。
相關文章
- “CMOS密碼”就是通常所說的“開機密碼”,主要是為了防止別人使用自已的計算機,設置的一個屏障2023-08-01
QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調用QQ的OCR的,但翻譯按鈕確實沒啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04- QQ截圖是我用過的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨立版目前除了屏幕錄制功能其他都逆出來了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導致軟件無法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤分區(qū)安全時會采用 Windows 自帶的 BitLocker 加密工具對電腦磁盤分區(qū)進行加密。但有些人加密后就會忘記自己設置的密碼從而導致在安裝其它軟2020-11-25防止離職員工帶走客戶、防止內部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細介紹了如何才能防止離職員工帶走客戶、防止內部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-27徹底防止計算機泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計算機泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價值,2017-06-27- 最近有電腦用戶反應量子計算機可以破解下載的所有的加密算法嗎?其實也不是不可以,下面虛擬就為大家講解買臺量子計算機,如何分分鐘破解加密算法2016-09-26
怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁后門。黑客通常會通過它控制別人網(wǎng)絡服務器,那么怎么破解webshell密碼呢?一起來看看吧2016-09-19- 本文討論了針對Linux系統(tǒng)全盤加密的冷啟動攻擊,大家都認為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28
防止泄露公司機密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴重的內部泄密事件,我們如何守護企業(yè)的核心信息,如何防止內部泄密也就成了擺在各個企業(yè)領導面前的一大問題。其實,針對內網(wǎng)安全,防止內部信息泄漏早已有了比較2015-12-17