該文章已發(fā)表于《黑客X檔案》0906期,后由原創(chuàng)作者友情提交到邪惡八進(jìn)制信息安全團(tuán)隊(duì),轉(zhuǎn)載請(qǐng)注明原作者和原始出處
最近Blog人氣瘋狂下跌,就隨便發(fā)篇垃圾文過(guò)來(lái)廣告一下Blog,希望大牛們不要B4我.
就快要高考了,好長(zhǎng)時(shí)間沒(méi)上網(wǎng)了。今天好不容易抽出點(diǎn)時(shí)間,剛上QQ一個(gè)我不認(rèn)識(shí)的小子就說(shuō)要給我個(gè)黃站發(fā)布器,我一高興就要了因?yàn)槲以诰W(wǎng)吧,也沒(méi)多想就直接運(yùn)行了,結(jié)果剛運(yùn)行文件一下子就沒(méi)了,過(guò)了一會(huì)QQ又掉了,我心里一涼啊,哎,又是馬啊,那就拿出來(lái)逆逆吧!
直接放到OD里,代碼如下: 復(fù)制內(nèi)容到剪貼板
代碼:
0041D987 > 60 pushad
0041D988 E8 09000000 call 0041D996
0041D98D 05 D80100E9 add eax, E90001D8
用PEID來(lái)分析來(lái)看看,PEID說(shuō)是Upack 0.3.9 beta2s -> Dwing的殼,記得這是個(gè)很古老的殼了,不管什么殼,看到第一句的pushad大部分就應(yīng)該可以用ESP定律來(lái)脫了。為什么?翻翻以前的雜志,看看ESP定律的原理就行了
在OD中按F8跟蹤一下,只要看見(jiàn)ESP寄存器的數(shù)據(jù)變紅,然后就執(zhí)行命令hr esp,然后按F9讓它運(yùn)行起來(lái),接著程序就被斷在了這里: 復(fù)制內(nèi)容到剪貼板
代碼:
0041DB9C 61 popad
0041DB9D - E9 8F54FFFF jmp 00413031
這里的popad和pushad是一對(duì),看到這個(gè)popad,基本說(shuō)明我們成功了,我們跟隨這個(gè)jmp跳過(guò)去就到了程序的OEP了,直接使用OD把它DUMP出來(lái),再用PEID看看,說(shuō)是Microsoft Visual C++ 6.0 [Overlay],已經(jīng)沒(méi)殼了。
我們用OD載入脫殼后的文件,F(xiàn)8跟蹤幾下后就可以看到如下代碼: 復(fù)制內(nèi)容到剪貼板
代碼:
00405086 E8 65EBFFFF call
0040508B 85C0 test eax, eax
0040508D 75 13 jnz short 004050A2
剛開(kāi)始先打開(kāi)互斥(用來(lái)判斷程序運(yùn)行是否唯一),繼續(xù)往下看: 復(fù)制內(nèi)容到剪貼板
代碼:
004050E9 E8 16EEFFFF call 00403F04
004050EE 8B55 EC mov edx, dword ptr [ebp-14]
004050F1 B8 B0764000 mov eax, 004076B0
004050F6 E8 05E0FFFF call 00403100
004050FB A1 B0764000 mov eax, dword ptr [4076B0]
00405100 E8 EFE2FFFF call 004033F4
這段代碼用來(lái)得到一個(gè)隨即字符串作為DLL的文件名