emit指令分析
2021/7/28 23:10:52
本文主要是介绍emit指令分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、emit指令的作用
1.编译器不认识的指令,拆成机器码来写
2.插入垃圾字节来反跟踪,又称花指令
用emit就是在当前位置直接插入数据(实际上是指令),一般是用来直接插入汇编里面没有的特殊指令,多数指令可以用asm内嵌汇编来做,没有必要用emit来做,除非你不想让其它人看懂你的代码。
_EMIT伪指令相当于MASM中的DB,但一次只能定义一个字节
VC里面使用用的,与汇编里的DB一样。
VC里没有DD及DW之类的内联汇编指令,只有用这个_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
}
若是x86 的16bit, jmp只有短跳和长跳是以距离表示,比如
jmp short xxxx 机器码是 EB XX ;XX是相对距离,负值是跳前,正值是跳后
jmp xxxx 机器码是 E9 XX XX ;XX XX 是相对距离,负值是跳前,正值是跳后
其他的JMP就不以距离表示,比如
JMP 3000:100 机器码 EA00010030 ; EA后是段:偏移地址
JMP FAR [0200] 机器码 FF2E0002 ; FF 2E 后是内存地址
JMP FAR [EAX] 机器码 FF 28 ;没有地址FF 28本身就表示 JMP FAR [EAX]
https://www.cnblogs.com/sunt/archive/2010/11/25/1887657.html
https://tieba.baidu.com/p/5640387168?red_tag=1052818969
这篇关于emit指令分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用