木马免杀之汇编花指令技巧
花指令相关知识: .doc

其實是一段垃圾代碼,和一些亂跳轉,但並不影響程式的正常運行。
加了花指令後,使一些殺毒軟體無法正確識別木馬程式,從而達到免殺的效果。
二.加花指令使木馬免殺製作過程詳解:第一步:配置一個不加殼的木馬程式。
第二步:用OD載入這個木馬程式,同時記下入口點的記憶體位址。
第三步:向下拉捲軸,找到零區域(也就是可以插入代碼的都是0的空白地方)。
並記下零區域的起始記憶體位址。
第四步:從這個零區域的起始位址開始一句一句的寫入我們準備好的花指令代碼。
第五步:花指令寫完後,在花指令的結束位置加一句:JMP剛才OD載入時的入口點記憶體位址。
第六步:保存修改結果後,最後用PEditor這款工具打開這個改過後的木馬程式。
在入口點處把原來的入口位址改成剛才記下的零區域的起始記憶體位址,並按應用更改。
使更改生效。
三.加花指令免殺法實例演示部分:實例演示一:NC加花指令免殺演示過程。
實例演示二:阿拉大盜主程序免殺之加花指令和入口點加1法綜合應用。
實例演示三:阿拉大盜主程序免殺之加不同花指令免殺演示(作業)綜合實例演示:灰鴿子MINI版主程序免殺操作過程:1>.加花指令2>. 入口點加13>.變換入點地址法四.加花指令免殺技術總節:1.優點:通用性非常不錯,一般一個木馬程式加入花指令後,就可以躲大部分的殺毒軟體,不像改特徵碼,只能躲過某一種殺毒軟體。
2.缺點:這種方法還是不能過具有內存查殺的殺毒軟體,比如瑞星內存查殺等。
3.以後將加花指令與改入口點,加殼,改特徵碼這幾種方法結合起來混合使用效果將非常不錯。
好了,今天的課就結束了,下節課再見!實踐操作:1.把駭客工具NC加一段VC++花指令代碼以達到免殺效果,最後測試能否正常使用VC++程式的入口代碼:PUSH EBPMOV EBP,ESPPUSH -1push 415448 -\___PUSH 4021A8 -/ 在這段代碼中類似這樣的運算元可以亂填MOV EAX,DWORD PTR FS:[0]PUSH EAXMOV DWORD PTR FS:[0],ESPADD ESP,-6CPUSH EBXPUSH ESIPUSH EDIADD BYTE PTR DS:[EAX],AL /這條指令可以不要!jo 00401000 /原入口jno 00401000 /原入口db 0e8h2.把駭客工具SNIFF加下面一段花指令,並結合入口點加1,最後測試能否正常使用push ebpmov ebp,espinc ecxpush edxnoppop edxdec ecxpop ebpinc ecxjmp (木馬剛載入時的入口地址)3.把駭客工具Findpass加以下一段花指令,以達免殺效果,並測試使用是否正常。
花指令11

第章花指令花指令简介:花指令(junk code) 意思是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。
经典的是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。
花指令有可能利用各种jmp, call, ret, 一些堆栈技巧,位置运算,等等如:jz labeljnz labeldb thunkcodelabel:mov ax, 8xor ax, 77...这里假设从label伪指令开始是我们以mov ax,8打头的加密算法,当thunkcode 为一条非单字节指令(nop等)的机器指令的时候反汇编器可能就会把thunkcode和后面的mov一起反汇编,从而导致后面的一系列汇编语句的反汇编错误,这样就隐藏了真正的汇编语句。
【深层】伪装PEtite 2.2 -> Ian Luck 汇编代码:============================伪装代码部分:============================mov eax,0040E000push 004153F3push dword ptr fs:[0]mov dword ptr fs:[0],esppushfwpushadpush eaxxor ebx,ebxpop eaxpopadpopfwpop dword ptr fs:[0]pop eaxjmp XXXXXXXX '执行到程序的原有OEP============================【深层】伪装WCRT Library (Visual C++) DLL Method 1 -> Jibz 二进制代码+ 汇编代码:============================伪装代码部分:============================使用二进制粘贴以下代码:55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59粘贴完毕后,再添加2行汇编语句:jmp XXXXXXXX '执行到程序的原有OEPretn 0C1。
花指令(精)

花指令的概念与认识花指令 1、什么是花指令什么是花指令?实际上,把它按照“乱指令”来理解可能更贴切一些,我们知道,汇编语言其实就是机器指令的符号化,从某种程度上看,它只是更容易理解一点的机器指令而已。
每一条汇编语句,在汇编时,都会根据cpu特定的指令符号表将汇编指令翻译成二进制代码。
而日常应用中,我们通过VC的IDE或其它如OD等反汇编、反编译软件也可以将一个二进制程序反汇编成汇编代码。
机器的一般格式为:指令+数据。
而反汇编的大致过程是:首先会确定指令开始的首地址,然后根据这个指令字判断是哪个汇编语句,然后再将后面的数据反汇编出来。
由此,我们可以看到,在这一步的反汇编过程中存在漏洞:如果有人故意将错误的机器指令放在了错误的位置,那反汇编时,就有可能连同后面的数据一起错误地反汇编出来,这样,我们看到的就可能是一个错误的反汇编代码。
这就是“花指令”,简而言之,花指令是利用了反汇编时单纯根据机器指令字来决定反汇编结果的漏洞。
2、花指令与免杀的关系加花就是,在程序汇编中,加了一些无用的废话,用来扰乱杀软对特征码的扫描对比,来达到免杀的目的。
是一种逃避方式,主要用于表面免杀。
加花指令的确没有改变特征码的位置,但是他改变了程序执行顺序,有的也能改变文件结构。
使杀毒软件扫描的时候跳到花指令处,即判断没有病毒。
通常情况下,在文件免杀的时候,加花指令是最简单、有效的方法,而且一般能通杀很多杀毒软件,所以一般文件免杀通用此法,前提是你的花指令不是常用的,最好能自己做出你个人的花指令,才会很有效。
3.花指令执行顺序花指令一般添加到程序的头部。
执行顺序:花指令入口-->执行花指令-->程序原入口-->执行原程序花指令的好坏直接决定程序是否可以躲避杀毒软件的查杀,花指令和壳的本质差不多,都是为了保护程序而做,所以我们做免杀的时候,可以多结合壳和花指令各自的优点对程序进行处理,达到更好的免杀效果。
大概步骤总结: 第一步:从编写手册中成对的提取几对第二步:打乱它们之间的顺序,也可不打乱第三步:中间插入几个nop或jmp,也可不插入第四步:最后添加跳转到入口地址指令第五步:把编写好的花指令添加到程序中后,测试是否可以正常运行,然后再用杀毒软件查杀 3、花指令的样本 PUSH EBP MOV EBP,ESP DEC EBP INC EBP ADD ECX,1 SUB ECX,-1 MOV EAX,DWORDPTR FS:[0] PUSH EAX MOV DWORD PTR FS:[0],ESP POP EAX MOV DWORD PTR FS:[0],EAX MOV CL,1 PUSH EAX SUB AL,90 POP EAX ADD ESP,-0C ADD ESP,0C PUSH EAX JNO 原始入口 ________________ push ebp mov ebp ,esp //常见的入口代码 add esp ,68 //以下的指令都是对称的(成对的) sub esp ,68 inc ecx dec ecx push edi pop edi push eax pop eax push edi pop edi inc ecx dec ecx nop jz 跳回入口点 //跳到程序的入口,执行原程序 jnz 跳回入口点 ____________ push ebp mov ebp, esp push eax push eax nop pop eax pop aex sub eax, 1 inc eax, 1 push 入口地址 retn。
木马免杀基础知识

一.免杀工具:myccl:特征码定位器PEID:查壳工具C32Asm:特征码修改工具[静态]Ollybg:特征码修改工具[动态]OC:文件地址内存地址换算器加花工具:怒剑狂花加区段工具:zeroadd加密工具:兼容性较好的,maskPE2.0和VMProtect v 1.4压缩工具:upx,aspack北斗壳二.熟悉掌握的术语与操作:加密工具操作花指令编写手工加花myccl复合特征码,内存特征码定位方法特征码修改三.研究免杀方法与技巧1.善于收集新免杀工具,有特效的压缩工具,免杀器等.比如收集一些可直接过杀软的压缩,加密工具2.理解免杀原理,熟悉各种杀毒软件的查杀特点3.多学习相关汇编知识相关汇编资料4.看别人优秀教程,举一反三.5.大胆的猜想与不断的实验和测试.四:特征码与花指令的详细定义与修改添加的方法等价替换、通用跳转、指令顺序调换、大小写替换、特征码十六进制加减1、NOP、填0、以及特殊常见指令的修改方法.JMP 无条件转移指令CALL 过程调用RET/RETF 过程返回.PUSH 压入堆栈.NOP 空操作.等价替换:修改方法:JMP = JE JNE je改成jle ja/jle适用范围:把特征码所对应的汇编指令命令中替换成类拟的指令通用跳转法:修改方法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行.(可以换成push xxxx retn)适用范围:没有什么条件,是通用的改法,强烈建议大家要掌握这种改法.指令顺序调换法:修改方法:把具有特征码的代码顺序互换一下.适用范围:具有一定的局限性,代码互换后要不能影响程序的正常执行修改字符串大小写法:修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了.适用范围:特征码所对应的内容必需是字符串,否则不能成功.(注意:函数不能用这种方法)直接修改特征码的十六进制法(特征码十六进制加减1、nop)修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制、或者填充90(nop)或者填0适用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能否正常使用.test eax, eax很多程序都是用test eax, eax来做检测返回值是否为0,那么遇到test eax, eax 那么可以直接改or eax, eaxcall例子:call 11111111改成 call 22222222 (22222222为0区域)2222处jmp 11111111五:简单花指令的编写PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.ADD 加法.ADC 带进位加法.INC 加1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减1.JMP 无条件转移指令CALL 过程调用RET/RETN 过程返回.。
木马免杀之汇编花指令技巧(精)

木马免杀之汇编花指令技巧作者:逆流风(发表于《黑客X档案》07.07,转载注明出处)相信很多朋友都做过木马免杀,早期的免杀都是加壳和改特征码,现在免杀技术已经发展到花指令免杀,改壳之类的,而这些需要一定的汇编知识,但是汇编却不是一块容易啃的骨头,所以我写了这篇菜鸟版的免杀汇编教程,帮助小菜们快速入门,掌握免杀必备的汇编知识,改花指令,改特征码的技巧和编写自己的花指令。
一、免杀必备的汇编知识push 压栈,栈是一种数据结构,记住四个字:先进后出。
压栈就是把数据放如栈中,从栈顶放如,出栈的时候也是从栈顶取出,所以会有先进后出的特点!先进后出我们可以这样理解,例如:一个乒乓球筒,我们放入乒乓球,然后取出乒乓球,取出的都是就后放进的球。
就如我们放入球的顺序是球1、2、3、4,取出的顺序是球4、3、2、1。
pop 出栈,与push相对应。
mov a,b 把b的值送给a,把它看作编程中的赋值语句就是b赋值给a,这时a的值就是b了。
nop 无作用,就是什么也没做。
retn 从堆栈取得返回地址并跳到该地址执行。
下面是一些算术运算指令:ADD 加法sub 减法inc 加1dec 减1最后是跳转指令:jmp 无条件跳je 或jz 若相等则跳jne或jnz 若不相等则跳jb 若小于则跳jl 若小于则跳ja 若大于则跳jg 若大于则跳jle 若小于等于则跳jge 若大于等于则跳这些就是我们需要掌握的,怎么样不多吧,一些指令可能看不明白,看了后面的就会清楚了。
对了,忘了讲寄存器了,寄存器是中央处理器内的其中组成部份。
寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。
我们需要了解的是8个通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP二、特征码和花指令的修改特征码我就不多说了,大家都知道的,现在杀毒软件查杀都用特征码查杀,改了木马的特征码,杀毒软件就查不出我们的木马,这样就达到免杀的效果。
教你如何将你的木马躲过杀毒软件的查杀(制作免杀木马教程)

由于黑客网站公布的花指令过不了一段时间就会被杀软辨认出来,所以需要你自己去搜集一些不常用的花指令,另外目前还有几款软件可以自动帮你加花,方便一些不熟悉的朋友,例如花指令添加器等。
五.常见花指令代码
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
PUSH EDI
POP EAX
POP EAX
POP EAX
ADD ESP,68
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
POP EAX
POP EAX
MOV EBP,EAX
JMP 原入口
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3选中设置中的 手动参数,,,,,选择替换方式 选中,,,总共生成规定个数的文件,,,生成个数为1000
详解常用的木马隐身术武林安全网-电脑资料

详解常用的木马隐身术武林安全网-电脑资料一、对木马使用花指令花指令就是指程序中包括了跳转指令及一些无用的指令在内的汇编指令段,有加区加花和去头加花两种,通常是用来改变程序的入口点或打乱整个程序的顺序,。
而一些杀毒软件在进行木马查杀工作时,都是按从程序的开头到结尾的顺序进行检测的,以此来找到与病毒库中某一特征码相似的特征。
甚至一些杀毒软件就是以程序的入口点作为特征码的。
因此,如果木马的程序顺序被打乱,或者程序的入口点被修改,那么,杀毒软件也就很难检测出它来,于是就达到了隐身的目的。
能完成这些工作的,就是在木马程序中使用花指令。
要在木马程序中使用花指令,可以有两种方式,一种是使用互联网上现成的,另一种是攻击者自己编写或者使用花指令生成软件。
由于互联网上现成的花指令同样会被杀毒软件厂商所得到,因此不会有什么好的保护效果。
对于有一定汇编技术的攻击者来说,就会使用自己编写花指令的方式,还可以使用一些花指令生成软件,如超级加花器和花蝴蝶等。
正是由于给木马添加不易被检测到的花指令需要高超的编程技术,也就很少有普通的攻击者使用这种方式,至少在没有陌生的花指令生成软件出现之前,是不太喜欢使用它的。
并且,由于对木马使用花指令也只是对其可执行文件本身有效,当其加载至内存后,这种隐身方式将失去作用。
因此,使用具有内存查杀功能的杀毒软件,就能够非常容易地检测到只使用这种隐身方式的木马病毒的。
在当前具有内存查杀功能的安全软件之中,查杀花指令保护木马比较好的就是EWIDO了。
也可以使用Ollydbg程序先将木马加入到内存中后再查杀。
同时,还可以使用像“花指令清除器”一类的花指令检测软件,来识别和除去花指令。
二、终止安全软件进程现在,几乎所有的木马都在使用一种十分有效的、躲避安全检测软件的方法,就是终止系统中所有安全软件的进程,从而达到了不会被查杀的目的。
而要实现这种功能,只要木马能够枚举系统中的所有正在运行的进程,然后从中找到匹配的安全软件进程名,通过发送一个终止进程的Windows消息给它,就可以结束这些正在运行的安全软件,电脑资料《详解常用的木马隐身术武林安全网》(https://www.)。
免杀知识

add esp,1 --------其中数字可以任意,注意以下面对应
sub esp,1
inc ecx
dec ecx
sub eax, -2 ----------其中数字可任意,与inc的个数对应
inc eax
inc eax
add eax -2 ----------其中数字可任意,与inc的个数对应
免杀技术之三:修改特征码
病毒加壳虽然可以逃过一些杀毒软件的查杀,但是却逃不过杀毒软件的内存杀毒,因此修改特征码成为逃避杀毒软件内存查杀的唯一办法。举例来说,如果程序是一张烙饼,那特征码就像上面的芝麻,每一张饼上面的芝麻位置是不同的,所以每个程序包括病毒特定位置上面的字符也是不同,这粒用来识别是不是病毒的“芝麻”就是特征码。
pop eax
jmp XXXXXXXX '执行到程序的原有OEP
【深层】伪装 WCRT Library (Visual C++) DLL Method 1 -> Jibz 二进制代码 + 汇编代码:
伪装代码部分:(注意--手动加花要注意修改新的入口地址,否则程序不能运行!)
使用二进制粘贴以下代码:
免杀技术之一:加花指令
加花是病毒免杀常用的手段,加花的原理就是通过添加加花指令(一些垃圾指令,类型加1减1之类的无用语句)让杀毒软件检测不到特征码,干扰杀毒软件正常的检测。加花以后,一些杀毒软件就检测不出来了,但是有些比较强的杀毒软件,像卡巴和NOD杀毒软件(这里我要非常严肃的说一下.个人经验.NOD32这款杀软还是不错的.加花指令和普通的壳对它完全不起作用.这杀软还是不错的.),病毒还是会被杀的。这可以算是“免杀”技术中最初级的阶段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
木马免杀之汇编花指令技巧
作者:逆流风
(发表于《黑客X档案》07.07,转载注明出处)
相信很多朋友都做过木马免杀,早期的免杀都是加壳和改特征码,现在免杀技术已经发展到花指令免杀,改壳之类的,而这些需要一定的汇编知识,但是汇编却不是一块容易啃的骨头,所以我写了这篇菜鸟版的免杀汇编教程,帮助小菜们快速入门,掌握免杀必备的汇编知识,改花指令,改特征码的技巧和编写自己的花指令。
一、免杀必备的汇编知识
push 压栈,栈是一种数据结构,记住四个字:先进后出。
压栈就是把数据放如栈中,从栈顶放如,出栈的时候也是从栈顶取出,所以会有先进后出的特点!先进后出我们可以这样理解,例如:一个乒乓球筒,我们放入乒乓球,然后取出乒乓球,取出的都是就后放进的球。
就如我们放入球的顺序是球1、2、3、4,取出的顺序是球4、3、2、1。
pop 出栈,与push相对应。
mov a,b 把b的值送给a,把它看作编程中的赋值语句就是b赋值给a,这时a的值就是b了。
nop 无作用,就是什么也没做。
retn 从堆栈取得返回地址并跳到该地址执行。
下面是一些算术运算指令:
ADD 加法
sub 减法
inc 加1
dec 减1
最后是跳转指令:
jmp 无条件跳
je 或jz 若相等则跳
jne或jnz 若不相等则跳
jb 若小于则跳
jl 若小于则跳
ja 若大于则跳
jg 若大于则跳
jle 若小于等于则跳
jge 若大于等于则跳
这些就是我们需要掌握的,怎么样不多吧,一些指令可能看不明白,看了后面的就会清楚了。
对了,忘了讲寄存器了,寄存器是中央处理器内的其中组成部份。
寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。
我们需要了解的是8个通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP
二、特征码和花指令的修改
特征码我就不多说了,大家都知道的,现在杀毒软件查杀都用特征码查杀,改了木马的特征码,杀毒软件就查不出我们的木马,这样就达到免杀的效果。
而花指令是程序中的无用代码,程序多它没影响,少了它也能正常运行。
加花指令后,杀毒软件对木马静态反汇编使,木马的代码就不会正常显示出来,加大杀毒软件的查杀难度。
花指令的原理是堆栈平衡。
前面介绍push说了,堆栈平衡可以这样理解,有进有出,不管花指令怎么写,我们要达到的目的是加花后,堆栈与未加之前一样。
网上的花指令因为是公布出来的,所以免杀周期不长,一般公布出来不久就会被杀毒软件查杀,但是我们只要简简单单的修改一两句就可以达到免杀了。
下面我们来看看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、在大部分程序开头可以经常看到。
push ebp是将寄存器ebp压入堆栈,mov ebp,esp是将寄存器esp的值送给寄存器ebp。
3、4、使用了add指令,add esp,-0C是寄存器esp加上-0C,add esp,0C是寄存器esp加上0C,3、4、加起来就是什么也没做,达到堆栈平衡。
5、6、7、完成了跳转到入口点的功能,我们一句句来看看mov eax,原入口,将入口点送入寄存器eax,push eax将寄存器eax压入堆栈,retn我们知道是从堆栈取得返回地址并跳到该地址执行。
这样就回到入口点了。
我们看看实例,以木马彩衣免杀为例,先侦壳,用peid载入,显示Microsoft Visual Basic 5.0 / 6.0,(如图1)很好,免去了脱壳的麻烦,复制木马彩衣后再粘贴,得到复件木马彩衣.exe,我们用木马彩衣对复件木马彩衣.exe加花,加金色鱼锦衣,(如图2)然后用Ollydbg.exe载入,我们就可以看到看到金色鱼锦衣的花指令了。
(如图3)用卡巴扫描,被卡巴认出来了。
(如图4)这是因为金色鱼锦衣公布比较久,用的人多了,对杀毒软件就无效了。
1、替换法
我们用替换法来修改金色鱼锦衣,修改结果如下:
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这两句也能达到堆栈平衡,(如图5)右键选中add esp,-0C,点击汇编,将add esp,-0C改成add esp,1,将add esp,0C改成add esp,-1。
选中修改部分,右键单击→复制到可执行文件→选择部分,弹出窗口,右键保存文件。
这里我保存成“替换法.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、几个语句向下移动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压入和弹出堆栈,一样达到堆栈平衡。
修改后保存成“添加法.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、跳转法
push ebp
mov ebp,esp
jmp 跳出到add esp,-0C的地址
mov eax,复件_木?0040109C
push eax
retn
add esp,-0C
add esp,0C
jmp 跳回mov eax,复件_木?0040109C的地址
这个可能比较复杂,大家看看截图(图7),修改后保存为“跳转法.exe”。
我们用卡巴试试修改后的效果,(如图8)看看,只有原来的木马彩衣,加了金色鱼锦衣的和去除法的可以查到。
去除法是因为金色鱼锦衣的代码比较短,如果花指令长点,效果会比较好。
几种修改方法结合使用效果更好,当然,一样可修改特征码,相对跳转法在修改特征码中使用比较多。
三、编写自己的花指令
通过上面的学习我们可以知道花指令大概结构,一般开始是push ebp和mov ebp,esp,接下来就是一些能保持堆栈平衡的指令,完了就是跳回入口点了。
我罗列出一些能保持堆栈平衡的代码
push ebp 把基址指针寄存器压入堆栈
pop ebp 把基址指针寄存器弹出堆栈
push eax 把数据寄存器压入堆栈
pop eax 把数据寄存器弹出堆栈
nop 无作用,就是什么也没做
mov eax,eax 将eax送入eax,等于什么也没做
sub eax,1
add eax,1 寄存器eax+1和寄存器eax-1,一样等于什么也没做
sub eax,2
dec eax
dec eax 一样很简单的加减运算,先是寄存器eax+2,紧接着连续用dec指令处理寄存器eax两次,就是-1再-1,达到堆栈平衡。
很简单,大家参考后可以自己写出N多这样的指令。
写完这些就可以写跳转语句了。
JMP 入口点这时最简单的跳转了,无条件跳回入口点,最简单当然效果也最差了
mov eax,入口点
push eax
retn 很眼熟吧,金色鱼锦衣的跳转,解释过,不多说了。
mov eax,入口点
jmp eax 和金色鱼锦衣的跳转的原理差不多吧,入口点压入寄存器eax,再跳到寄存器eax,就是跳到入口点了。
je 入口点
jne 入口点等于则跳和不等于则跳,合起来就是绝对跳咯,像这样的条件跳转语句很多,大家可参考前面跳转指令的知识自己写。
上面的指令随便结合相信大家可以写出属于自己的花指令了,这样我这篇文章的目的也就达到了。
花指令添加的方法大家可以参照去年第9期的主题乐园。