吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8018|回复: 5
收起左侧

[易语言 转载] 置入代码与远程汇编 的问题,来个大神解释一下

 关闭 [复制链接]
这个网名有点难 发表于 2017-7-11 18:38
.版本 2
.子程序 置入坐标CALL
.参数 触发地址, 整数型
.参数 X, 整数型
.参数 Y, 整数型
.参数 Z, 整数型

置入代码 ({ 139, 117, 8, 139, 62, 255, 117, 20, 255, 117, 16, 255, 117, 12, 139, 135, 168, 0, 0, 0, 139, 206, 139, 192, 139, 192, 139, 192, 255, 208 })

转换器,转换汇编结果
mov esi,[ebp+08h]
mov edi,[esi]
push [ebp+14h]
push [ebp+10h]
push [ebp+0Ch]
mov eax,[edi+000000A8h]
mov ecx,esi
mov eax,eax
mov eax,eax
mov eax,eax
call eax

远程汇编易语言写法
.版本 2

.子程序 顺图坐标CALL
.参数 触发地址, 整数型, , +8
.参数 X, 整数型, , +c
.参数 Y, 整数型, , +10
.参数 Z, 整数型, , +14

置汇编代码 ({  })
Pushad ()
Mov_ESI (触发地址)
Mov_EAX_Ptr_ESI ()
Mov_EDI_EAX ()
Mov_EAX_Ptr_EAX_Add (十六到十 (“c4”))
Mov_ECX_ESI ()
Call_EAX ()
Mov_EAX (Z)
Mov_ECX (Y)
Mov_EDX (X)
Push_EAX ()
Push_ECX ()
Push_EDX ()
Mov_EAX_Ptr_EDI_Add (十六到十 (“A0”))
Mov_ECX_ESI ()
Call_EAX ()
Popad ()
ret ()
开始Virus (进程id)
汇编远程执行 (取汇编代码 ())
结束Virus ()
清空汇编代码 ()

这个是怎么变换过来的,为什么远程汇编和汇编的套路不一样,
有大神解释一下吗,不想一成不变的复制张贴!
汇编到远程汇编的写法,真的没看懂!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

梦幻110110 发表于 2017-7-11 20:12
mov esi,[ebp+08h]      [ebp+08h]=触发地址
Mov_ESI (触发地址)
-----------------------------------------
mov edi,[esi]
[esi]是地址的值给edi,需要下面的来写,意思一样先给eax,eax在给edi,     Ptr_ESI ()是把[esi]的值给eax,不是esi给eax,他2个是不一样的。
Mov_EAX_Ptr_ESI ()
Mov_EDI_EAX ()
-------------------------------------------
push [ebp+14h]
push [ebp+10h]
push [ebp+0Ch]
是push3个参数
堆栈操作指令
  1压栈指令
  (1) 格式:PUSH SRC
  功能:将源操作数压下堆栈,源操作数允许为16位或32位通用寄存器、存储器和立即数以及16位段寄存器。当操作数数据类型为字类型,压栈操作使SP值减2;当数据类型为双字类型,压栈操作使SP值减4。
Mov_EAX (Z)
Mov_ECX (Y)
Mov_EDX (X)
---------------------------------------------------
mov eax,[edi+000000A8h]
[edi+000000A8h]=Ptr_EAX_Add (十六到十 (“c4”))给eax
Mov_EAX_Ptr_EAX_Add (十六到十 (“c4”))
Mov_ECX_ESI ()
这2个好像写法不一样
我也没办法你自己多看看汇编就懂了





MOV MOVZX MOVSX的不同点
将源操作数由8位扩展到16位送目的操作数,或由16位扩展到32位送目的操作数。其中MOVSX是按有符号数扩展,MOVZX是按无符号数扩展。无符号数或正数高位扩展为0,负数高位扩展为全“1”。

交换指令
格式:XCHG OPR1,OPR2
  功能:交换操作数OPR1和OPR2的值,操作数数据类型为字节、字或双字。允许通用寄存器之间,通用寄存器和存储器之间交换数据。
  例 3.17
[Asm] 纯文本查看 复制代码
?
1
2
3
4
XCHG AX,BX;通用寄存器之间交换数据(16位)
XCHG ESI,EDI;通用寄存器之间交换数据(32位)
XCHG BX,/[SI/];通用寄存器和存储器之间交换数据(16位)
XCHG AL,/[BX/];通用寄存器和存储器之间交换数据(8位)

  使用该指令应注意以下问题:
  ·操作数OPR1和OPR2不允许同为存储器操作数;
  ·操作数数据类型必须一致;
  ·交换指令不影响标志位。
  如要实现存储器操作数交换,可用如下指令实现:
[Asm] 纯文本查看 复制代码
?
1
2
3
MOV AL,BLOCK1
XCHG AL,BLOCK2
MOV BLOCK1,AL

二、堆栈操作指令
  1压栈指令
  (1) 格式:PUSH SRC
  功能:将源操作数压下堆栈,源操作数允许为16位或32位通用寄存器、存储器和立即数以及16位段寄存器。当操作数数据类型为字类型,压栈操作使SP值减2;当数据类型为双字类型,压栈操作使SP值减4。
  例 3.19
[Asm] 纯文本查看 复制代码
?
1
2
3
4
5
6
PUSH AX          ;通用寄存器操作数入栈(16位)
PUSH EBX          ;通用寄存器操作数入栈(32位)
PUSH [SI]         ;存储器操作数入栈(16位)
PUSH DWORD PTR [DI]    ;存储器操作数入栈(32位)
PUSHW 0A123H        ;立即数入栈(16位)
PUSHD 20H         ;立即数入栈(32位)

  (2) 格式:PUSHA
       PUSHAD
  功能:PUSHA将16位通用寄存器压入堆栈,压栈顺序为AX,CX,DX,BX,SP,BP,SI,DI。
PUSHAD将32位通用寄存器压入堆栈,压栈顺序为EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI。
  2出栈指令
  (1) 格式:POP DEST
  功能:从栈顶弹出操作数送入目的操作数。目的操作数允许为16或32位通用寄存器、存储器和16位段寄存器。当操作数数据类型为字类型,出栈操作使SP加2;当操作数数据类型为双字类型,出栈操作使SP加4。
  例 3.20
[Asm] 纯文本查看 复制代码
?
1
2
3
4
POP AX          ;操作数出栈送寄存器(16位)
POP ECX          ;操作数出栈送寄存器(32位)
POP [BX]         ;操作数出栈送存储器(16位)
POP DWORD PTR [SI]    ;操作数出栈送存储器(32位)

  (2) 格式:POPA
       POPAD
  功能:POPA从堆栈移出16字节数据,并且按顺序存入寄存器DI,SI,BP,SP,BX,DX,CX,AX中。
  POPAD从堆栈移出32字节数据,并且按顺序存入寄存器EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX中。
  使用堆栈操作指令应注意以下问题。
  (1) 目的操作数不允许为CS以及立即数。
  (2) 堆栈操作指令不影响标志位。
算术运算指令
  80x86指令包括加、减、乘、除四种基本算术运算操作及十进制算术运算调整指令。二进制加、减法指令,带符号操作数采用补码表示时,无符号数和带符号数据运算可以使用相同的指令。二进制乘、除法指令分带符号数和无符号数运算指令。
  一、加法指令
  格式:ADDDEST,SRC
     ADCDEST,SRC
  功能:ADD是将源操作数与目的操作数相加,结果传送到目的操作数。ADC是将源操作数与目的操作数以及CF(低位进位)值相加,结果传送到目的操作数。
  源操作数可以是通用寄存器、存储器或立即数。目的操作数可以是通用寄存器或存储器操作数。
ADD,ADC指令影响标志位为OF,SF,ZF,AF,PF,CF。
  例 3.26
[Asm] 纯文本查看 复制代码
?
1
2
3
MOV AX,9876H
ADD AH,AL;AX=0E76H CF=1 SF=0O F=0 ZF=0 AF=0 PF=0
ADC AH,AL;AX=8576H CF=0 SF=1O F=1 ZF=0 AF=1 PF=0

  二、减法指令
  格式:SUB DEST,SRC
     SBB DEST,SRC
  功能:SUB将目的操作数减源操作数,结果送目的操作数。SBB将目的操作数减源操作数,还要减CF(低位借位)值,结果送目的操作数。
  源操作数可以是通用寄存器、存储器或立即数。目的操作数可以是通用寄存器或存储器操作数。
SUB,SBB指令影响标志位为OF,SF,ZF,AF,PF,CF。
        三、加1减1指令
  格式:INC DEST
     DEC DEST
  功能:INC指令将目的操作数加1,结果送目的操作数。DEC指令将目的操作数减1,结果送目的操作数。目的操作数为通用寄存器或存储器操作数。
  INC,DEC指令影响标志位为OF,SF,ZF,AF,PF。
        四、交换相加指令
  格式:XADDDEST,REG
  功能:目的操作数加源操作数,结果送目的操作数。原目的操作数内容送源操作数。源操作数允许为通用寄存器。目的操作数允许为通用寄存器、存储器操作数。
  XADD指令影响标志位为OF,SF,ZF,AF,PF,CF。
  五、求补指令
  格式:NEGDEST
  功能:对目的操作数求补,用零减去目的操作数,结果送目的操作数。目的操作数为通用寄存器、存储器操作数。
  NEG指令影响标志位为OF,SF,ZF,AF,PF,CF。
  六、乘法指令
  (1) 格式:MULSRC
       IMULSRC
  功能:MUL为无符号数乘法指令,IMUL为带符号数乘法指令。源操作数为通用寄存器或存储器操作数。目的操作数缺省存放在ACC(AL,AX,EAX)中,乘积存AX,DX:AX,EDX:EAX中。
  字节乘:ALSRC→AX
  字乘:AXSRC→DX∶AX
  双字乘:EAXSRC→EDX∶EAX
  MUL,IMUL指令执行后,CF=OF=0,表示乘积高位无有效数据;CF=OF=1表示乘积高位含有效数据,对其它标志位无定义。
  例 3.31
[Asm] 纯文本查看 复制代码
?
1
2
3
4
MUL BL;字节乘
MUL WORD PTR [SI];字乘
IMUL BYTE PTR [DI];字节乘
IMUL DWORD PTR [ECX];双字乘

  如果使用IMUL指令,积采用补码形式表示。
  (2) 格式:IMULDEST,SRC
  功能:将目的操作数乘以源操作数,结果送目的操作数。目的操作数为16位或32位通用寄存器或存储器操作数。源操作数为16位或32位通用寄存器、存储器或立即数。
  源操作数和目的操作数数据类型要求一致。乘积仅取和目的操作数相同的位数,高位部分将被舍去,并且CF=OF=1。其它标志位无定义。
  (3) 格式:IMUL DEST,SRC1,SRC2
  功能:将源操作数SRC1与源操作数SRC2相乘,结果送目的操作数。目的操作数DEST为16位或32位,允许为通用寄存器。源操作数SRC1为16位或32位通用寄存器或存储器操作数。源操作数SRC2允许为立即数。
  例 3.32  IMULEAX,[EBX],12H
  要求目的操作数和源操作数SRC1类型相同,当乘积超出目的操作数部分,将被舍去,并且使CF=OF=1,在使用这类指令时,需在IMUL指令后加一条判断溢出的指令,溢出时转错误处理执行程序。
  七、除法指令
  格式:DIV SRC
     IDIV SRC
  功能:DIV为无符号数除法,IDIV为带符号数除法。源操作数作为除数,为通用寄存器或存储器操作数。被除数缺省在目的操作数AX,DX:AX,EDX:EAX中。
  字节除法:AX/SRC商→AL,余数→AH
  字除法:DX·AX/SRC商→AX,余数→DX
  双字除法:EDX·EAX/SRC商→EAX,余数→EDX
  由于被除数必须是除数的双倍字长,一般应使用扩展指令进行高位扩展。当进行无符号数除法时,被除数高位按0扩展为双倍除数字长。当进行有符号数除法时,被除数以补码表示。可使用扩展指令CBW,CWD,CWDE,CDQ进行高位扩展。例如:
[Asm] 纯文本查看 复制代码
?
1
2
3
4
MOV AX,BLOCK
CWD;被除数高位扩展
MOV BX,1000H
IDIV BX

  对于带符号除法,其商和余数均采用补码形式表示,余数与被除数同符号。当除数为零或商超过了规定数据类型所能表示的范围时,将会出现溢出现象,产生一个中断类型码为“0”的中断。执行除法指令后标志位无定义。
  八、BCD算术运算
  十进制数在机器中采用BCD码表示,以压缩格式存放,即一个字节存储2位BCD码,BCD加减法是在二进制加减运算的基础上,对其二进制结果进行调整,将结果调整成BCD码表示形式。
  (1) 格式:DAA
  功能:将存放在AL中的二进制和数,调整为压缩格式的BCD码表示形式。
  调整方法:若AL中低4位大于9或标志AF=1(表示低4位向高4位有进位),则
         AL+6→AL,1→AF,
若AL中高4位大于9,或标志CF=1,(表示高4位有进位),则
         AL+60H→AL,1→CF,
  DAA指令一般紧跟在ADD或ADC指令之后使用,影响标志位为SF,ZF,AF,PF,CF。OF无定义。
  例 3.33
[Asm] 纯文本查看 复制代码
?
1
2
ADD AL,BL
DAA

  (2) 格式:DAS
  功能:将存放在AL中的二进制差数,调整为压缩的BCD码表示形式。
  调整方法:若AL中低4位大于9或标志AF=1(表示低4位向高位借位),则
         AL-6→AL,1→AF
若AL中高4位大于9或标志CF=1(表示高4位向高位借位),则
         AL-60H→AL,1→CF
  DAS指令一般紧跟在SUB或SBB指令之后使用,影响标志位为SF,ZF,AF,PF,CF。OF无定义。
  例 3.34
[Asm] 纯文本查看 复制代码
?
1
2
SUB AL,BL
DAS

  九、ASCII算术运算
  数字0~9的ASCII码为30H~39H,机器采用一个字节存放一位ASCII码,对于ASCII码的算术运算是在二进制运算基础上进行调整。调整指令有加、减、乘、除四种调整指令。
  (1) 格式:AAA
  功能:将存放在AL中的二进制和数,调整为ASCII码表示的结果。
  调整方法:若AL中低4位小于或等于9,仅AL中高4位清0,AF→CF。若AL中低4位大于9或标志AF=1(进位),则AL+6→AL,AH+1→AH,1→AF,AF→CF,AL中高4位清0。
  AAA指令一般紧跟在ADD或ADC指令之后使用,影响标志位为AF,CF。其它标志位无定义。
  例 3.35
[Asm] 纯文本查看 复制代码
?
1
2
3
MOV AX,0036H
ADD,AL,35H
AAA;AX=0101H

  (2) 格式:AAS
  功能:将存放在AL中的二进制差数,调整为ASCII码表示形式
  调整方法:若AL中低4位小于等于9,仅AL中高4位清0,AF→CF。若AL中低4位大于9或标志AF=1,则AL-6→AL,AH-1→AH,1→AF,AF→CF,AL中高4位清0。
  AAS指令一般紧跟在SUB,SBB指令之后使用,影响标志位为AF,CF。其它标志位无定义。
  例 3.36
[Asm] 纯文本查看 复制代码
?
1
2
3
MOV AX,0132H
SUB AL,35H
AAS;AX=0007H

  (3) 格式:AAM
  功能:将存放在AL中的二进制积数,调整为ASCII码表示形式。
  调整方法:AL/10商→AH,余数→AL
  AAM指令一般紧跟在MUL指令之后使用,影响标志位为SF,ZF,PF。其它标志位无定义。
  例 3.37
[Asm] 纯文本查看 复制代码
?
1
2
3
4
MOV AL,07H
MOV BL,09H
MUL BL;AX=003FH
AAM;AX=0603H

  (4) 格式:AAD
  功能:将AX中两位非压缩BCD码(一个字节存放一位BCD码),转换为二进制数的表示形式。
  调整方法:AH10+AL→AL0→AH
  AAD指令用于二进制除法DIV操作之前,影响的标志位为SF,ZF,PF。其它标志位无定义。
  例 3.38
[Asm] 纯文本查看 复制代码
?
1
2
3
4
MOV AX,0605H
MOV BL,09H
AAD;AX=0041H
DIV BL;AX=0207H

  使用该类指令应注意,加法、减法和乘法调整指令都是紧跟在算术运算指令之后,将二进制的运算结果调整为非压缩BCD码表示形式,而除法调整指令必须放在除法指令之前进行,以避免除法出现错误的结果。
  使用算术运算类指令应注意:
  ·如果没有特别规定,参与运算的两个操作数数据类型必须一致,且只允许一个为存储器操作数;
  ·如果参与运算的操作数只有一个,且为存储器操作数,必须使用PTR伪指令说明数据类型;
  ·操作数不允许为段寄存器。
  ·目的操作数不允许为立即数;
  ·如果是存储器寻址,则存储器各种寻址方式均可使用。
 楼主| 这个网名有点难 发表于 2017-7-11 18:40
孟婆汤 发表于 2017-7-11 19:33
babyqi 发表于 2017-7-11 22:23
梦幻110110 发表于 2017-7-11 20:12
mov esi,[ebp+08h]      [ebp+08h]=触发地址
Mov_ESI (触发地址)
------------------------------------- ...

厉害了大神
头像被屏蔽
chen1234 发表于 2017-7-12 06:39 来自手机
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 01:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表