相信很多朋友都做過木馬免殺,早期的免殺都是加殼和改特征碼,現(xiàn)在免殺技術(shù)已經(jīng)發(fā)展到花指令免殺,改殼之類的,而這些需要一定的匯編知識,但是匯編卻不是一塊容易啃的骨頭,所以我寫了這篇菜鳥版的免殺匯編教程,幫助小菜們快速入門,掌握免殺必備的匯編知
相信很多朋友都做過木馬免殺,早期的免殺都是加殼和改特征碼,現(xiàn)在免殺技術(shù)已經(jīng)發(fā)展到花指令免殺,改殼之類的,而這些需要一定的匯編知識,但是匯編卻不是一塊容易啃的骨頭,所以我寫了這篇菜鳥版的免殺匯編教程,幫助小菜們快速入門,掌握免殺必備的匯編知識,改花指令,改特征碼的技巧和編寫自己的花指令。
一、免殺必備的匯編知識
push 壓棧,棧是一種數(shù)據(jù)結(jié)構(gòu),記住四個(gè)字:先進(jìn)后出。壓棧就是把數(shù)據(jù)放如棧中,從棧頂放如,出棧的時(shí)候也是從棧頂取出,所以會有先進(jìn)后出的特點(diǎn)!先進(jìn)后出我們可以這樣理解,例如:一個(gè)乒乓球筒,我們放入乒乓球,然后取出乒乓球,取出的都是就后放進(jìn)的球。就如我們放入球的順序是球1、2、3、4,取出的順序是球4、3、2、1。
pop 出棧,與push相對應(yīng)。
mov a,b 把b的值送給a,把它看作編程中的賦值語句就是b賦值給a,這時(shí)a的值就是b了。
nop 無作用,就是什么也沒做。
retn 從堆棧取得返回地址并跳到該地址執(zhí)行。
下面是一些算術(shù)運(yùn)算指令:
ADD 加法
sub 減法
inc 加1
dec 減1
最后是跳轉(zhuǎn)指令:
jmp 無條件跳
je 或jz 若相等則跳
jne或jnz 若不相等則跳
jb 若小于則跳
jl 若小于則跳
ja 若大于則跳
jg 若大于則跳
jle 若小于等于則跳
jge 若大于等于則跳
這些就是我們需要掌握的,怎么樣不多吧,一些指令可能看不明白,看了后面的就會清楚了。對了,忘了講寄存器了,寄存器是中央處理器內(nèi)的其中組成部份。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址。我們需要了解的是8個(gè)通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP
二、特征碼和花指令的修改
特征碼我就不多說了,大家都知道的,現(xiàn)在殺毒軟件查殺都用特征碼查殺,改了木馬的特征碼,殺毒軟件就查不出我們的木馬,這樣就達(dá)到免殺的效果。而花指令是程序中的無用代碼,程序多它沒影響,少了它也能正常運(yùn)行。加花指令后,殺毒軟件對木馬靜態(tài)反匯編使,木馬的代碼就不會正常顯示出來,加大殺毒軟件的查殺難度?;ㄖ噶畹脑硎嵌褩F胶?。前面介紹push說了,堆棧平衡可以這樣理解,有進(jìn)有出,不管花指令怎么寫,我們要達(dá)到的目的是加花后,堆棧與未加之前一樣。
網(wǎng)上的花指令因?yàn)槭枪汲鰜淼?,所以免殺周期不長,一般公布出來不久就會被殺毒軟件查殺,但是我們只要簡簡單單的修改一兩句就可以達(dá)到免殺了。下面我們來看看5種修改方法。(也適用于特征碼修改)
我們先看看木馬彩衣(金色魚錦衣)花指令
1、push ebp
2、mov ebp,esp
3、add esp,-0C
4、add esp,0C
5、mov eax,原入口
6、push eax
7、retn
1、2、在大部分程序開頭可以經(jīng)常看到。push ebp是將寄存器ebp壓入堆棧,mov ebp,esp是將寄存器esp的值送給寄存器ebp。3、4、使用了add指令,add esp,-0C是寄存器esp加上-0C,add esp,0C是寄存器esp加上0C,3、4、加起來就是什么也沒做,達(dá)到堆棧平衡。5、6、7、完成了跳轉(zhuǎn)到入口點(diǎn)的功能,我們一句句來看看mov eax,原入口,將入口點(diǎn)送入寄存器eax,push eax將寄存器eax壓入堆棧,retn我們知道是從堆棧取得返回地址并跳到該地址執(zhí)行。這樣就回到入口點(diǎn)了。
我們看看實(shí)例,以木馬彩衣免殺為例,先偵殼,用peid載入,顯示Microsoft Visual Basic 5.0 / 6.0,(如圖1)很好,免去了脫殼的麻煩,復(fù)制木馬彩衣后再粘貼,得到復(fù)件 木馬彩衣.exe,我們用木馬彩衣對復(fù)件 木馬彩衣.exe加花,加金色魚錦衣,(如圖2)然后用Ollydbg.exe載入,我們就可以看到看到金色魚錦衣的花指令了。(如圖3)用卡巴掃描,被卡巴認(rèn)出來了。(如圖4)這是因?yàn)榻鹕~錦衣公布比較久,用的人多了,對殺毒軟件就無效了。
1、替換法
我們用替換法來修改金色魚錦衣,修改結(jié)果如下:
1、push ebp
2、mov ebp,esp
3、add esp,1
4、add esp,-1
5、mov eax,原入口
6、push eax
7、retn
將原來3、4、句add esp,-0C和add esp,0C改成add esp,1和add esp,-1這兩句也能達(dá)到堆棧平衡,(如圖5)右鍵選中add esp,-0C,點(diǎn)擊匯編,將add esp,-0C改成add esp,1,將add esp,0C改成add esp,-1。選中修改部分,右鍵單擊→復(fù)制到可執(zhí)行文件→選擇部分,彈出窗口,右鍵保存文件。這里我保存成“替換法.exe”用卡巴查殺,免殺了。(如圖6)
2、移位法
1、push ebp
2、mov ebp,esp
3、nop
4、nop
5、add esp,-0C
6、add esp,0C
7、mov eax,原入口
8、push eax
9、retn
將原來的3、4、5、6、7、幾個(gè)語句向下移動(dòng)2行,修改后保存為“移位法.exe”。
3、添加法
1、push ebp
2、mov ebp,esp
3、push edx
4、pop edx
5、add esp,-0C
6、add esp,0C
7、mov eax,原入口
8、push eax
9、retn
在金色魚錦衣中加入push edx和pop edx,這兩句是將寄存器edx壓入和彈出堆棧,一樣達(dá)到堆棧平衡。修改后保存成“添加法.exe”。
4、去除法
1、push ebp
2、mov ebp,esp
3、mov eax,原入口
4、push eax
5、retn
刪除add esp,-0C和add esp,0C,修改后保存成“去除法.exe”。
5、跳轉(zhuǎn)法
push ebp
mov ebp,esp
jmp 跳出到add esp,-0C的地址
mov eax,復(fù)件_木?0040109C
push eax
retn
add esp,-0C
add esp,0C
jmp 跳回mov eax,復(fù)件_木?0040109C的地址
這個(gè)可能比較復(fù)雜,大家看看截圖(圖7),修改后保存為“跳轉(zhuǎn)法.exe”。
我們用卡巴試試修改后的效果,(如圖8)看看,只有原來的木馬彩衣,加了金色魚錦衣的和去除法的可以查到。去除法是因?yàn)榻鹕~錦衣的代碼比較短,如果花指令長點(diǎn),效果會比較好。幾種修改方法結(jié)合使用效果更好,當(dāng)然,一樣可修改特征碼,相對跳轉(zhuǎn)法在修改特征碼中使用比較多。
三、編寫自己的花指令
通過上面的學(xué)習(xí)我們可以知道花指令大概結(jié)構(gòu),一般開始是push ebp和mov ebp,esp,接下來就是一些能保持堆棧平衡的指令,完了就是跳回入口點(diǎn)了。
我羅列出一些能保持堆棧平衡的代碼
push ebp 把基址指針寄存器壓入堆棧
pop ebp 把基址指針寄存器彈出堆棧
push eax 把數(shù)據(jù)寄存器壓入堆棧
pop eax 把數(shù)據(jù)寄存器彈出堆棧
nop 無作用,就是什么也沒做
mov eax,eax 將eax送入eax,等于什么也沒做
sub eax,1
add eax,1 寄存器eax+1和寄存器eax-1,一樣等于什么也沒做
sub eax,2
dec eax
dec eax 一樣很簡單的加減運(yùn)算,先是寄存器eax+2,緊接著連續(xù)用dec指令處理寄存器eax兩次,就是-1再-1,達(dá)到堆棧平衡。
很簡單,大家參考后可以自己寫出N多這樣的指令。寫完這些就可以寫跳轉(zhuǎn)語句了。
JMP 入口點(diǎn) 這時(shí)最簡單的跳轉(zhuǎn)了,無條件跳回入口點(diǎn),最簡單當(dāng)然效果也最差了
mov eax,入口點(diǎn)
push eax
retn 很眼熟吧,金色魚錦衣的跳轉(zhuǎn),解釋過,不多說了。
mov eax,入口點(diǎn)
jmp eax 和金色魚錦衣的跳轉(zhuǎn)的原理差不多吧,入口點(diǎn)壓入寄存器eax,再跳到寄存器eax,就是跳到入口點(diǎn)了。
je 入口點(diǎn)
jne 入口點(diǎn) 等于則跳和不等于則跳,合起來就是絕對跳咯,像這樣的條件跳轉(zhuǎn)語句很多,大家可參考前面跳轉(zhuǎn)指令的知識自己寫。
上面的指令隨便結(jié)合相信大家可以寫出屬于自己的花指令了,這樣我這篇文章的目的也就達(dá)到了?;ㄖ噶钐砑拥姆椒ù蠹铱梢詤⒄杖ツ甑?期的主題樂園。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com