004 .NetReactor 3.6.0.0之另类脱壳法
文章目錄
- 前言
- 查殼
- 脫殼
- 修復(fù)目標(biāo)程序
前言
最近一直在看脫殼的相關(guān)資料,看到了Tuts4you社區(qū)脫殼腳本的教程,這個(gè)殼我感覺(jué)很不錯(cuò)挺有意思的,于是打算將內(nèi)容整理下分享出來(lái)。
查殼
這個(gè)殼是.NetReactor 3.6.0.0的版本。根據(jù)作者的介紹,這個(gè)殼只是一個(gè)包裝器,它包裝目標(biāo)程序,然后將其全部解包到內(nèi)存中執(zhí)行。但是這是一種不安全的方法,因?yàn)橛腥丝梢詫?nèi)存中的目標(biāo)程序轉(zhuǎn)儲(chǔ)回文件并完全恢復(fù)程序集。這個(gè)殼的重點(diǎn)在于轉(zhuǎn)儲(chǔ)之后的修復(fù),需要對(duì)PE文件有一定的了解。
脫殼
接下來(lái)直接載入OD,F9讓程序運(yùn)行起來(lái)。
接著調(diào)出內(nèi)存窗口,為了鎖定目標(biāo)程序被解壓的位置,因?yàn)檫@個(gè)crackme實(shí)際上也是作者寫(xiě)的,所以選擇通過(guò)搜索關(guān)鍵字符串的方法,搜索Crackme
搜索到關(guān)鍵字符串之后向上滾動(dòng),查找PE文件,如果找到了說(shuō)明這里就是目標(biāo)文件解壓縮的地方。
經(jīng)過(guò)搜索和尋找,我們?cè)诘诹嗡阉鹘Y(jié)果中找到了要找的PE文件。
接著右鍵->備份->保存數(shù)據(jù)到文件。
選擇保存類(lèi)型為任何文件,并修改后綴名為exe。
接著測(cè)試運(yùn)行一下,彈出一個(gè)錯(cuò)誤框,無(wú)法在電腦上運(yùn)行。這很正常,因?yàn)橹苯觗ump下來(lái)的文件在PE頭總是會(huì)出現(xiàn)問(wèn)題。因?yàn)槲沂窃诒緳C(jī)上跑的,如果是W7的話應(yīng)該是顯示不是有效的W32程序。
修復(fù)目標(biāo)程序
接下來(lái)用CFF Explorer這款PE工具來(lái)修復(fù)一下目標(biāo)程序。
載入目標(biāo)程序,點(diǎn)擊Header部分,錯(cuò)誤提示為Out of memory。
接下來(lái)進(jìn)入到Driectory部分,修復(fù)MetaData Header的錯(cuò)誤。我們需要修復(fù)這個(gè)錯(cuò)誤的RVA和Size,Size明顯是錯(cuò)的,太小了。
接著來(lái)到Address Converter部分,點(diǎn)擊這個(gè)放大鏡,查找字符串BSJB。至于為什么搜索這么一串字符串,作者給出的解釋是這個(gè)字符串的Offset就是要修復(fù)的Meta Data的Offset。(我也是一臉蒙蔽 這解釋有點(diǎn)太勉強(qiáng)了吧)
接著點(diǎn)擊查找,找到了0x9400這個(gè)地址,那么Meta Data的Offset就是0x9400。
接著把9400輸入到Offset中,會(huì)自動(dòng)計(jì)算出我們要的RVA是0xA400。
回到Directoy部分,將正確的RVA填入。至于Size我們可以根據(jù)一個(gè)公式計(jì)算得出:MetaDataSize=Import Directory RVA-MetaDataRVA,Import Directory RVA的值如下圖:
最后算出Size為0x194C。
接著修改回正確的RVA,然后點(diǎn)擊保存。
接著再次雙擊測(cè)試運(yùn)行,還是無(wú)法運(yùn)行。這里作者的原話是根據(jù)我之前的經(jīng)驗(yàn),我應(yīng)該是忘記修改文件頭屬性了。
不得不感嘆大神的經(jīng)驗(yàn)就是強(qiáng)大。好吧 繼續(xù)修復(fù)
點(diǎn)擊文件頭 找到Characteristics,雙擊
屬性顯示這是一個(gè)DLL,難怪會(huì)報(bào)錯(cuò)。把勾去掉,再次保存。
OK 程序完美運(yùn)行,這個(gè)殼也算是脫完了。
需要相關(guān)文件可以到我的Github下載:https://github.com/TonyChen56/Unpack-Practice
總結(jié)
以上是生活随笔為你收集整理的004 .NetReactor 3.6.0.0之另类脱壳法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 宏病毒的研究与实例分析05——无宏文件携
- 下一篇: 设计模式(一)————策略模式(张三的故