
硬编码
文章平均质量分 90
硬编码
ぃ扶摇ぅ
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
硬编码(三)经典变长指令一
我们在前两节的硬编码中学习了定长指令,接下来学习变长指令对于定长指令,我们通过opcode便可知该指令的长度,但是对于变长指令却是不可知的。变长指令长度由opcode,ModR/M,SIB共同决定。变长指令通常在需要操作内存的时候使用。原创 2025-02-28 20:51:40 · 636 阅读 · 0 评论 -
硬编码(一)经典定长指令
当一个程序编译完以后,它就转化成了二进制文件,其内部只有二进制数据,而这二进制数据可以分为数据和机器指令两个部分,它们都有各自的格式。在实际中,数据和机器指令并没有严格的区分,如果数据的格式是机器指令的格式,那么该数据也会被当做机器指令执行,但是会出错。其中机器指令就是硬编码。逆向分析分为两个阶段:1.C代码和汇编的转换。2.汇编和硬编码的转换。因此要想学习好逆向分析的第二个阶段,就需要好好学习硬编码。原创 2025-02-19 22:00:55 · 397 阅读 · 0 评论 -
硬编码(二)经典定长指令二
在CPU中,有一个EIP寄存器,这个寄存器存储着下一次CPU执行指令的地址,通过修改EIP的值,可以改变CPU执行指令的顺序修改EIP有以下四种汇编指令:1.jmp 2.jcc 3.call 4.ret,接下来我们将学习这四种汇编指令的硬编码。原创 2025-02-21 17:10:08 · 824 阅读 · 0 评论 -
硬编码(四)经典变长指令二
本文我们通过一个变长指令进行引入接下来我们简单的解析0x88 0x84OpcodeModR/M0x84接着我们拆分ModR/M为其内部的三个部分:ModRegR/M10000100通过查表可知:Reg:ALMod:00和R/M:001对应[...][...] + dis32[...]的原因:按照同样寄存器的顺序,100是寄存器ESP。但ESP是一个特殊的寄存器,其用来指向栈顶地址,而栈顶地址的内容是不能随意修改的,因此本该100对应的ESP,替换其他东西进行对应。原创 2025-03-01 10:26:49 · 884 阅读 · 0 评论 -
硬编码(五)变经典长指令三
在前几节课所学的内容中,ModR/M中reg/opcode一直默认是reg,这一节课,我们讲解reg/opcode是opcode的情况如图这是硬编码的结构,其中opcode部分通过查表A-2可知,该表是硬编码的主表,如下表所示此处只展示一部分,具体请查手册图中的rAX表示可以是64位的RAX(64位模式下才有)、32位的EAX、16位的AX,而eAX则表示这里可以是32位的EAX、16位的AX(默认取决于你的CPU运行模式)原创 2025-03-02 13:44:39 · 913 阅读 · 0 评论