emit指令分析

emit指令的作用:

  1. 编译器不认识的指令,拆成机器码来写。
  2. 插入垃圾字节来反跟踪,又称花指令。

用emit就是在当前位置直接插入数据(实际上是指令),一般是用来直接插入汇编里面没有的特殊指令,多数指令可以用asm内嵌汇编来做,没有必要用emit来做,除非你不想让其它人看懂你的代码。

_emit是伪指令
一个简单的例子
int main() {
__asm{
_emit 0xEA
_emit 0xAA
_emit 0xAA
_emit 0xAA
_emit 0xAA
_emit 0x08
_emit 0x0
}
return 0;
}

相当于
__asm
{
jmp FAR 0x08:0xAAAAAAAA
}

打开编译后的可执行文件的二进制流,可以看到数据直接插入在指令中,被当作机器码执行。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值