2个回答
2013-04-16
展开全部
习免杀第一课。
一.汇编在免杀中的应用
汇编知识掌握的越好,你的免杀水平越高.
要学会自己写花指令,只要懂基本汇编指令就可学会.
二.汇编学习资料介绍:
学写花指令建议看:
1.8088 汇编速查手册
2.汇编指令查询器
3.免杀汇编基础-8086汇编指令
进一步深入学习汇编知识建议看:
1.汇编指令学习电子书(基础)
2.汇编破解必备基础知识(基础)
3.王爽出的8086汇编语言(在此在说明下此书,此书讲的知识非常不会错,这本书其实就是讲了一些思想,他不会讲指令怎么使用的,是用到什么讲什么,所以我才说这本书不错,如果大家对汇编语言有兴趣可以看看)。
三.写花指令必备的汇编指令总结:
1.寄存器介绍:
(1).数据寄存器: 存放数据
这些是32位汇编的指令(EAX、EBX、ECX、EDX)等等....
这些是16位汇编的指令(AX,BX,CX,DX)等......
大家看下有什么区别,是不是32位汇编指令前面多写了字母E。
现在大部分都是32位CPU或者64位所以在这里只讲32位汇编指令
想学16位的可以参考王爽出的书
在这里我只是简单说下想详细知道是怎么个意思去看IBM汇编语言程序设计第5版。
(2).指针寄存器: 主要用途就是在存储器寻址时,提供偏移地址.
ESP、EBP、EDI、ESI
ESP(堆栈指针寄存):是以“后进先出”方式工作的一个存储区,它必须存在于堆栈段中.
EBP(基址指针寄存器):
ESI(源变址寄存器):
EDI(目的变址寄存器):
2.数据传输指令:
MOV-------传送字或字节
PUSH------把字压入堆栈
POP-------把字弹出堆栈
PUSHA-----把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA------把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD----把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD-----把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
3.算术运算指令:
ADD-------加法.
SUB-------减法.
INC-------加 1
DEC-------减 1
MUL-------无符号乘法
DIV--------无符号除法
4.逻辑运算指令
AND------与运算
OR-------或运算
XOR------异或运算
NOT------取反
5.无条件转移指令
JMP--------无条件转移指令
CALL-------过程调用
RET/RETF----过程返回
6.条件转移指令
jE--------等于转移
jNE-------不等于时转移
JZ---------等于转移
JNZ--------不等于时转移
JB---------小于转移
JNB--------大于或等于转移
JA---------不小于或不等于时转移
JNA--------小于或等于转移
JG--------大于转移
JNG-------小于或等于转移
JC-------有进位时转移
JNC------无进位时转移
JP------奇偶性为偶数时转移
JNP-----奇偶性为奇数时转移
7.其它
nop-----在汇编中代表空指令,不执行任何代码.
Mov edi,edi-----效果与nop一样.
四.分析一段花指令:
push ebp
pop ebp
nop
push -7
push 7
add ebx,1
sub ebx,1
PUSH 原程序入口地址 JE 原入口点
RETN JNE 原入口点
下面我们这段花指令给大家演示下。
收先说下要想写自己的花指令
收先必须给学会汇编指令集
会了指令才能写花指令
花指令其实就是一些废话
写到作后怎么运行他最后都是0
就看上面那段
怎么运行他最后都是等于0
然后在条到入口点执行程序
好了不多说了
今天我们拿黑防鸽子给大家演示
好了 现在看我操作
我们先打开OD
载入我们刚生成的鸽子马
在这里我已经生成好了
看我操作
先记下原入口点: 在这里我已经提前能好了
原入口点:004A1E48 > 55 push ebp
新入口点:00481DA0 0000 add byte ptr ds:[eax],al
在这里说明下找新入口点最好不要去下面找下面的估计写了花指令都不能保存,所以最好去上面找。
其实都靠大家实验,多做几次就知道了。
好继续
现在开始写花指令
看我操作
写完花指令保存
然后在使LordPE修改原入口点
把新入口点填进去只改后面5位就可以 是81DA0 前面004是基地址不需要改
一.汇编在免杀中的应用
汇编知识掌握的越好,你的免杀水平越高.
要学会自己写花指令,只要懂基本汇编指令就可学会.
二.汇编学习资料介绍:
学写花指令建议看:
1.8088 汇编速查手册
2.汇编指令查询器
3.免杀汇编基础-8086汇编指令
进一步深入学习汇编知识建议看:
1.汇编指令学习电子书(基础)
2.汇编破解必备基础知识(基础)
3.王爽出的8086汇编语言(在此在说明下此书,此书讲的知识非常不会错,这本书其实就是讲了一些思想,他不会讲指令怎么使用的,是用到什么讲什么,所以我才说这本书不错,如果大家对汇编语言有兴趣可以看看)。
三.写花指令必备的汇编指令总结:
1.寄存器介绍:
(1).数据寄存器: 存放数据
这些是32位汇编的指令(EAX、EBX、ECX、EDX)等等....
这些是16位汇编的指令(AX,BX,CX,DX)等......
大家看下有什么区别,是不是32位汇编指令前面多写了字母E。
现在大部分都是32位CPU或者64位所以在这里只讲32位汇编指令
想学16位的可以参考王爽出的书
在这里我只是简单说下想详细知道是怎么个意思去看IBM汇编语言程序设计第5版。
(2).指针寄存器: 主要用途就是在存储器寻址时,提供偏移地址.
ESP、EBP、EDI、ESI
ESP(堆栈指针寄存):是以“后进先出”方式工作的一个存储区,它必须存在于堆栈段中.
EBP(基址指针寄存器):
ESI(源变址寄存器):
EDI(目的变址寄存器):
2.数据传输指令:
MOV-------传送字或字节
PUSH------把字压入堆栈
POP-------把字弹出堆栈
PUSHA-----把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA------把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD----把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD-----把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
3.算术运算指令:
ADD-------加法.
SUB-------减法.
INC-------加 1
DEC-------减 1
MUL-------无符号乘法
DIV--------无符号除法
4.逻辑运算指令
AND------与运算
OR-------或运算
XOR------异或运算
NOT------取反
5.无条件转移指令
JMP--------无条件转移指令
CALL-------过程调用
RET/RETF----过程返回
6.条件转移指令
jE--------等于转移
jNE-------不等于时转移
JZ---------等于转移
JNZ--------不等于时转移
JB---------小于转移
JNB--------大于或等于转移
JA---------不小于或不等于时转移
JNA--------小于或等于转移
JG--------大于转移
JNG-------小于或等于转移
JC-------有进位时转移
JNC------无进位时转移
JP------奇偶性为偶数时转移
JNP-----奇偶性为奇数时转移
7.其它
nop-----在汇编中代表空指令,不执行任何代码.
Mov edi,edi-----效果与nop一样.
四.分析一段花指令:
push ebp
pop ebp
nop
push -7
push 7
add ebx,1
sub ebx,1
PUSH 原程序入口地址 JE 原入口点
RETN JNE 原入口点
下面我们这段花指令给大家演示下。
收先说下要想写自己的花指令
收先必须给学会汇编指令集
会了指令才能写花指令
花指令其实就是一些废话
写到作后怎么运行他最后都是0
就看上面那段
怎么运行他最后都是等于0
然后在条到入口点执行程序
好了不多说了
今天我们拿黑防鸽子给大家演示
好了 现在看我操作
我们先打开OD
载入我们刚生成的鸽子马
在这里我已经生成好了
看我操作
先记下原入口点: 在这里我已经提前能好了
原入口点:004A1E48 > 55 push ebp
新入口点:00481DA0 0000 add byte ptr ds:[eax],al
在这里说明下找新入口点最好不要去下面找下面的估计写了花指令都不能保存,所以最好去上面找。
其实都靠大家实验,多做几次就知道了。
好继续
现在开始写花指令
看我操作
写完花指令保存
然后在使LordPE修改原入口点
把新入口点填进去只改后面5位就可以 是81DA0 前面004是基地址不需要改
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询