×

花指令

行为免杀指的是什么?易语言的花指令是什么,插入花指令后会使软件产生怎样的效果

admin admin 发表于2023-05-17 07:18:07 浏览37 评论0

抢沙发发表评论

本文目录

行为免杀指的是什么

1免杀的基本概念
免杀是什么概念呢。大家对这个应该有个自己的定义吧。我是把免杀认为通过一些手段使我们的木马让杀毒软件无法查杀,这就是免杀。也是我对免杀的定义。
2.免杀技术的分类
免杀技术分为文件免杀、内存免杀、行为免杀,加壳免杀、加花免杀、修改特征码免杀。
文件免杀、内存免杀、行为免杀、
2.加壳免杀
为了防止被杀毒软件反跟踪查杀和被跟踪调试,同时也防止算法程序被别人静态分析。最基本的隐藏:不可见窗体+隐藏文件。壳又分为压缩壳和加密壳。压缩壳一般压缩加壳程序,通常压缩后的文件大小只有原来的50%-70%但不影响程序的正常使用和所有功能。加密壳是用上了各种反跟踪技术保护程序不被调试、脱壳等,其加壳后的体积大小不是其考虑的主要因素。
3 加花免杀
什么是花指令?实际上,把它按照“乱指令”来理解可能更贴切、
就是故意将错误的机器指令放在了错误的位置,那反汇编时,就有可能连同后面的数据一起错误地反汇编出来,这样,我们看到的就可能是一个错误的反汇编代码。这就是“花指令”,简而言之,花指令是利用了反汇编时单纯根据机器指令字来决定反汇编结果的漏洞。
4 修改特征码免杀、
因为杀毒软件查杀就是自己的病毒库和木马的特征码对比,如果相同的话就判断它是木马,当然我们只要改掉这些代码就可以免杀了。这就是修改特征码免杀。

易语言的花指令是什么,插入花指令后会使软件产生怎样的效果

花指令是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。经典的是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种指令:jmp, call, ret的一些堆栈技巧,位置运算,等等。

花指令是程序中的无用代码,程序多它没影响,少了它也能正常运行。加花指令后,杀毒软件对木马静态反汇编时,木马的代码就不会正常显示出来,加大杀毒软件的查杀难度。

花指令的代码

【深层】伪装 PEtite 2.2 -》 Ian Luck 汇编代码:
============================
伪装代码部分:
============================
mov eax,0040E000
push 004153F3
push dword ptr fs:
mov dword ptr fs:,esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:
pop eax
jmp 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 ’执行到程序的原有OEP
retn 0C
1。伪装 vc
VC++程序的入口代码:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:
PUSH EAX
MOV DWORD PTR FS:,ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!
jmp 跳转到程序原来的入口点
******************************************************************************************
2。跳转
somewhere:
nop /胡乱跳转的开始...
jmp 下一个jmp的地址 /在附近随意跳
jmp ... /...
jmp 原入口的地址 /跳到原始oep
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
新入口: push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
loop somewhere /跳转到上面那段代码地址去!
3. 伪装 C
融合
把A的代码换成B的
push ebp
mov ebp,esp
push -1
push 111111
push 222222
mov eax,fs:
push eax
mov fs:,esp
pop eax
mov fs:,eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 老入口
4. c ++
push ebp
mov ebp,esp
push -1
push 111111
push 222222
mov eax,fs:
push eax
mov fs:,esp
pop eax
mov fs:,eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
5.Microsoft Visual C++ 6.0
PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:
PUSH EAX
MOV DWORD PTR FS:,ESP
SUB ESP,68
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
POP EAX
ADD ESP,68
POP EAX
MOV DWORD PTR FS:,EAX
POP EAX
POP EAX
POP EAX
POP EAX
MOV EBP,EAX
JMP 原入口
6.
在mov ebp,eax
后面加上
PUSH EAX
POP EAX
7:
防杀精灵一号防杀代码:
push ebp
mov ebp,esp
push -1
push 666666
push 888888
mov eax,dword ptr fs:
push eax
mov dword ptr fs:,esp
pop eax
mov dword ptr fs:,eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 入口
8:
防杀精灵二号防杀代码:
push ebp
mov ebp,esp
push -1
push 0
push 0
mov eax,dword ptr fs:
push eax
mov dword ptr fs:,esp
sub esp,68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp,68
pop eax
mov dword ptr fs:,eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 入口
9.
防杀精灵终极防杀代码
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
jmp入口
10:
木马彩衣(金色鱼锦衣)花代码
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,原入口
push eax
retn
11:
木马彩衣(虾米披风)花代码
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loopd /跳转到下面那段代码地址去!
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
nop /胡乱跳转的开始...
jmp 下一个jmp的地址 /在附近随意跳
jmp ... /...
jmp 原入口的地址 /跳到原始oep
12.
VC++5.0代码(木马彩衣无限复活袍):
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:
PUSH EAX
MOV DWORD PTR FS:,ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!
jo 00401000 /原入口
jno 00401000 /原入口
db 0e8h /花代码

什么是加花,怎么加花花指令怎么用

什么是花指令?当然不是“flower code“,呵呵,实际上,把它按照“乱指令”来理解可能更贴切一些,它的真正英文名应该叫“thunkcode“吧(不确定,呵呵)。我们知道,汇编语言其实就是机器指令的符号化,从某种程度上看,它只是更容易理解一点的机器指令而已。每一条汇编语句,在汇编时,都会根据cpu特定的指令符号表将汇编指令翻译成二进制代码。而日常应用中,我们通过VC的IDE或其它如OD等反汇编、反编译软件也可以将一个二进制程序反汇编成汇编代码。机器的一般格式为:指令+数据。而反汇编的大致过程是:首先会确定指令开始的首地址,然后根据这个指令字判断是哪个汇编语句,然后再将后面的数据反汇编出来。由此,我们可以看到,在这一步的反汇编过程中存在漏洞:如果有人故意将错误的机器指令放在了错误的位置,那反汇编时,就有可能连同后面的数据一起错误地反汇编出来,这样,我们看到的就可能是一个错误的反汇编代码。这就是“花指令”,简而言之,花指令是利用了反汇编时单纯根据机器指令字来决定反汇编结果的漏洞。
先举个例子(记为A代码段):
   jz label
   jnz label
   db thunkcode
label:
以上是一个相当简单的花指令块,其中thunkcode是由应用者自己随便写的机器指令字,当然,你写的这个机器指令字不能是单字节指令(比如nop, clr,等),否则,你的花指字就相当于白加了。那么,你要如何来使用这段代码呢?
假设我们待加密的代码块如下(记为B代码段):
   mov ax, 8
   xor ax, 77
   ...
我们假设这B代码段是我们的加密算法所在的代码段,现在我们想要对B代码段进行保护,可以直接将A花指令块加到mov指令之前,形如:
   jz label
   jnz label
   db thunkcode
label:
   mov ax, 8
   xor ax, 77
   ...
其中,对于thunkcode,在实际使用时,可以使用任何一个多字节指令的机器指令字来代替,这样就会欺骗反汇编软件将它连同后面的mov指令的前边某一部分反汇编成一个多字节指令。这样,我们的目的也就达到了。
由上可以看到,使用了花指令的地方,一般都会出现这样的现象:一个跳转指令,跳转到了某条语句的中间位置,而不是这条语句的开始位置。每当出现这种情况时,我们就可以断定,这里出现了花指令。
显然地,破解它的办法,就是在那个跳转到的目的地址之前将中间的代码全部nop掉。
当然,为了加强难度,我们可以将若干个花指令结合起来使用。比如:
   jz label
   jnz label
   db thunkcode
label:
   jz label2
   jnz label2
   db thunkcode
lable2
   mov ax, 8
   xor ax, 77
   ...
也当然,针对这种情况的破解只要一层层解开它即可:我们可以先破解到以label为首字节的指令出现为止,然后再根据新的结果,破解到以label2为首字节的指令出现为止,虽然这样麻烦点,但还是不难的。
但是,如果把下面的这段代码再同其它花指令结合起来使用,可能就更复杂了:
   call label_1
   db thunkcode
   jmp label_2
   db thunkcode
label_1:
   pop eax
   jmp label_3
   db thunkcode,thunkcode,thunkcode
label_3:
   inc eax
   jmp label_4
   db thunkcode,thunkcode,thunkcode
label_4:
   jmp eax
   db thunkcode
label_2:
   ....
这里还有一段:
   call label_1
   db thunkcode,thunkcode
   jmp label_4
label_1:
   pop eax
   jmp label_2
   db thunkcode,thunkcode
label_2:
   add eax,2
   jmp label_3
   db thunkcode
label_3:
   push eax
   ret
   db thunkcode
label_4: ....

为了加强难度,尽可能地用call和push实现间接跳转,当然,矛矛盾盾,只是时间长点而已,世上没有绝对安全的系统。

什么是特征码,壳,花指令

我了解的也不多,把我自己的理解和你说说吧。所谓特征码,就是例如每个文件的MD5运算后得出的数值。用这数值对比官方公布的数值可以确认文件是否被别人修改。壳就是对执行程序进行伪装的,查看和该文件的时候会受到壳的影响,一般用于防止破解等。花指令是程序的内部循环跳转,让杀软找不到该程序的敏感字段。(可能描述会有错误,仅供参考)

关于花指令

加花指令的确没有改变特征码的位置,但是他改变了程序执行顺序,有的也能改变文件结构。使杀毒软件扫描的时候跳到花指令处,即判断没有病毒。通常情况下,在文件免杀的时候,加花指令是最简单、有效的方法,而且一般能通杀很多杀毒软件,所以一般文件免杀通用此法,前提是你的花指令不是常用的,最好能自己做出你个人的花指令,才会很有效。