黑客技術(shù)之slv unpackme 脫殼
互聯(lián)網(wǎng) 發(fā)布時(shí)間:2008-10-08 19:05:43 作者:佚名
我要評論

其實(shí)殼本身不要緊,問題是vm里面有個(gè)校驗(yàn)。
sm同學(xué)手下留情,我勉強(qiáng)能搞一個(gè)運(yùn)行正常的,沒精力還原vm了。
在virutalfree的retn上f4, 直到[esp]是一個(gè)exe image內(nèi)的地址f7返回:
0040FA91 B8 BE180000 mov eax, 18BE
0040FA96 BA 00004000 mov
其實(shí)殼本身不要緊,問題是vm里面有個(gè)校驗(yàn)。
sm同學(xué)手下留情,我勉強(qiáng)能搞一個(gè)運(yùn)行正常的,沒精力還原vm了。
在virutalfree的retn上f4, 直到[esp]是一個(gè)exe image內(nèi)的地址f7返回:
0040FA91 B8 BE180000 mov eax, 18BE
0040FA96 BA 00004000 mov edx, slv_unpa.00400000
0040FA9B 03C2 add eax, edx
0040FA9D - FFE0 jmp eax 在jmp eax上f4 f7到oep: 004018BE 68 EA1AF500 push 0F51AEA
004018C3 - E9 EF01B500 jmp 00F51AB7
004018C8 CC int3
004018C9 CC int3 jmp到vm了, 不過這段內(nèi)存不可dump, ctrl f2再來看哪里分配的: bp virtualalloc, 不停的ctrl f9看到eax=00F50000停下: 0040FBB6 6A 40 push 40
0040FBB8 68 00100000 push 1000
0040FBBD 50 push eax
0040FBBE 6A 00 push 0
0040FBC0 FF13 call [ebx] ; kernel32.VirtualAlloc
0040FBC2 8BD0 mov edx, eax
0040FBC4 8BFA mov edi, edx
0040FBC6 8B4E FC mov ecx, [esi-4]
0040FBC9 F3:A4 rep movsb 往下走ecx=000151E9, 復(fù)制一個(gè)unpackme.exe到2.exe, 增加一個(gè)section header: vaddr=0x0022000
vsize=0x20000 加載2.exe在0040FBC2上f4把eax改成422000. 然后按上面到方法走到oep, 用lordpe dump一份(ollydump我從來不成功) dumped.exe
接著用imprec fixdump 生成 3.exe 一運(yùn)行非法了, 點(diǎn)調(diào)試掛上od: 00422CCA 8910 mov [eax], edx//eax=00140688
00422CCC E9 0D0E0000 jmp 00423ADE 向上看全是屁股...啊不對, 全是花指令, 不過只有 EB, nop掉: 00422CA4 33C0 xor eax, eax
00422CAC AC lodsb
00422CB1 8B1487 mov edx, [edi eax*4]
00422CB7 33C0 xor eax, eax
00422CBD AC lodsb
00422CC1 8B0487 mov eax, [edi eax*4]
00422CCA 8910 mov [eax], edx
00422CCC E9 0D0E0000 jmp 00423ADE 看樣子只是一個(gè)虛擬機(jī)指令, 好像丟掉東西了. 校驗(yàn)是哪里來的?
想法一:GetFileSize,估計(jì)sm同學(xué)不屑使用,懷著僥幸試一下果然沒有用.
想法二:在某處設(shè)置了標(biāo)記,前面virtualalloc都被釋放掉了,vm段我們也dump了,能在哪呢?
聯(lián)想到sm同學(xué)一貫喜歡在pe header里面插東西, 就看看pe header 加載2.exe在oep的時(shí)候按alt m在pe header上f2果然中斷了訪問[400110]==1000
加載3.exe也中斷了,[400110]==18BE
原來校驗(yàn)了entrypoint, 估計(jì)后面當(dāng)作常數(shù)運(yùn)算了, 因?yàn)樗衚bys都會(huì)把1000作為入口. 解決方案有兩種, 一種寫一段入口代碼把入口改為1000,另一種是挪動(dòng),因?yàn)閷懕Wo(hù)不方便,我選擇挪動(dòng). 401000 ctrl r找到兩處參考,都改401005 004011DA E8 21FEFFFF call 3.00401000
004011EC E8 0FFEFFFF call 3.00401000 修改這里的代碼: 00401000 > /E9 B9080000 jmp 4.004018BE
00401005 |68 EA9C4200 push 4.00429CEA
0040100A -|E9 A82A0200 jmp 4.00423AB7 保存到文件,最后lordpe修改1000為入口,保存4.exe,嗯出圖片了. 不過點(diǎn)了出來she之后不會(huì)關(guān)掉自己反而彈出自己, 估計(jì)是虛擬機(jī)里有調(diào)用1000退出,
結(jié)果跳到18be又DialogParam了 那么只好選擇寫保護(hù)了,用lordpe添加一個(gè)輸入函數(shù)VirutalProtect 在oep下面找片空地寫代碼, 最后跳回18be
004018C8 > B8 00004000 mov eax, 00400000
004018CD 0340 3C add eax, [eax 3C]
004018D0 8D78 28 lea edi, [eax 28]
004018D3 50 push eax
004018D4 54 push esp
004018D5 6A 04 push 4
004018D7 6A 04 push 4
004018D9 57 push edi
004018DA FF15 1E304400 call [44301E] ; kernel32.VirtualProtect
004018E0 58 pop eax
004018E1 B8 00100000 mov eax, 1000
004018E6 AB stosd
004018E7 ^ EB D5 jmp 004018BE 把入口改成18c8,搞定收工.
0040FA96 BA 00004000 mov edx, slv_unpa.00400000
0040FA9B 03C2 add eax, edx
0040FA9D - FFE0 jmp eax 在jmp eax上f4 f7到oep: 004018BE 68 EA1AF500 push 0F51AEA
004018C3 - E9 EF01B500 jmp 00F51AB7
004018C8 CC int3
004018C9 CC int3 jmp到vm了, 不過這段內(nèi)存不可dump, ctrl f2再來看哪里分配的: bp virtualalloc, 不停的ctrl f9看到eax=00F50000停下: 0040FBB6 6A 40 push 40
0040FBB8 68 00100000 push 1000
0040FBBD 50 push eax
0040FBBE 6A 00 push 0
0040FBC0 FF13 call [ebx] ; kernel32.VirtualAlloc
0040FBC2 8BD0 mov edx, eax
0040FBC4 8BFA mov edi, edx
0040FBC6 8B4E FC mov ecx, [esi-4]
0040FBC9 F3:A4 rep movsb 往下走ecx=000151E9, 復(fù)制一個(gè)unpackme.exe到2.exe, 增加一個(gè)section header: vaddr=0x0022000
vsize=0x20000 加載2.exe在0040FBC2上f4把eax改成422000. 然后按上面到方法走到oep, 用lordpe dump一份(ollydump我從來不成功) dumped.exe
接著用imprec fixdump 生成 3.exe 一運(yùn)行非法了, 點(diǎn)調(diào)試掛上od: 00422CCA 8910 mov [eax], edx//eax=00140688
00422CCC E9 0D0E0000 jmp 00423ADE 向上看全是屁股...啊不對, 全是花指令, 不過只有 EB, nop掉: 00422CA4 33C0 xor eax, eax
00422CAC AC lodsb
00422CB1 8B1487 mov edx, [edi eax*4]
00422CB7 33C0 xor eax, eax
00422CBD AC lodsb
00422CC1 8B0487 mov eax, [edi eax*4]
00422CCA 8910 mov [eax], edx
00422CCC E9 0D0E0000 jmp 00423ADE 看樣子只是一個(gè)虛擬機(jī)指令, 好像丟掉東西了. 校驗(yàn)是哪里來的?
想法一:GetFileSize,估計(jì)sm同學(xué)不屑使用,懷著僥幸試一下果然沒有用.
想法二:在某處設(shè)置了標(biāo)記,前面virtualalloc都被釋放掉了,vm段我們也dump了,能在哪呢?
聯(lián)想到sm同學(xué)一貫喜歡在pe header里面插東西, 就看看pe header 加載2.exe在oep的時(shí)候按alt m在pe header上f2果然中斷了訪問[400110]==1000
加載3.exe也中斷了,[400110]==18BE
原來校驗(yàn)了entrypoint, 估計(jì)后面當(dāng)作常數(shù)運(yùn)算了, 因?yàn)樗衚bys都會(huì)把1000作為入口. 解決方案有兩種, 一種寫一段入口代碼把入口改為1000,另一種是挪動(dòng),因?yàn)閷懕Wo(hù)不方便,我選擇挪動(dòng). 401000 ctrl r找到兩處參考,都改401005 004011DA E8 21FEFFFF call 3.00401000
004011EC E8 0FFEFFFF call 3.00401000 修改這里的代碼: 00401000 > /E9 B9080000 jmp 4.004018BE
00401005 |68 EA9C4200 push 4.00429CEA
0040100A -|E9 A82A0200 jmp 4.00423AB7 保存到文件,最后lordpe修改1000為入口,保存4.exe,嗯出圖片了. 不過點(diǎn)了出來she之后不會(huì)關(guān)掉自己反而彈出自己, 估計(jì)是虛擬機(jī)里有調(diào)用1000退出,
結(jié)果跳到18be又DialogParam了 那么只好選擇寫保護(hù)了,用lordpe添加一個(gè)輸入函數(shù)VirutalProtect 在oep下面找片空地寫代碼, 最后跳回18be
004018C8 > B8 00004000 mov eax, 00400000
004018CD 0340 3C add eax, [eax 3C]
004018D0 8D78 28 lea edi, [eax 28]
004018D3 50 push eax
004018D4 54 push esp
004018D5 6A 04 push 4
004018D7 6A 04 push 4
004018D9 57 push edi
004018DA FF15 1E304400 call [44301E] ; kernel32.VirtualProtect
004018E0 58 pop eax
004018E1 B8 00100000 mov eax, 1000
004018E6 AB stosd
004018E7 ^ EB D5 jmp 004018BE 把入口改成18c8,搞定收工.
相關(guān)文章
- “CMOS密碼”就是通常所說的“開機(jī)密碼”,主要是為了防止別人使用自已的計(jì)算機(jī),設(shè)置的一個(gè)屏障2023-08-01
QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調(diào)用QQ的OCR的,但翻譯按鈕確實(shí)沒啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04- QQ截圖是我用過的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨(dú)立版目前除了屏幕錄制功能其他都逆出來了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導(dǎo)致軟件無法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤分區(qū)安全時(shí)會(huì)采用 Windows 自帶的 BitLocker 加密工具對電腦磁盤分區(qū)進(jìn)行加密。但有些人加密后就會(huì)忘記自己設(shè)置的密碼從而導(dǎo)致在安裝其它軟2020-11-25防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細(xì)介紹了如何才能防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-27徹底防止計(jì)算機(jī)泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機(jī)密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計(jì)算機(jī)泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價(jià)值,2017-06-27量子計(jì)算機(jī)輕松破解加密算法 如何破解加密算法?
最近有電腦用戶反應(yīng)量子計(jì)算機(jī)可以破解下載的所有的加密算法嗎?其實(shí)也不是不可以,下面虛擬就為大家講解買臺(tái)量子計(jì)算機(jī),如何分分鐘破解加密算法2016-09-26怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁后門。黑客通常會(huì)通過它控制別人網(wǎng)絡(luò)服務(wù)器,那么怎么破解webshell密碼呢?一起來看看吧2016-09-19針對Linux系統(tǒng)全盤加密的啟動(dòng)攻擊
本文討論了針對Linux系統(tǒng)全盤加密的冷啟動(dòng)攻擊,大家都認(rèn)為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28防止泄露公司機(jī)密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴(yán)重的內(nèi)部泄密事件,我們?nèi)绾问刈o(hù)企業(yè)的核心信息,如何防止內(nèi)部泄密也就成了擺在各個(gè)企業(yè)領(lǐng)導(dǎo)面前的一大問題。其實(shí),針對內(nèi)網(wǎng)安全,防止內(nèi)部信息泄漏早已有了比較2015-12-17