硬编码
z4ky
这个作者很懒,什么都没留下…
展开
-
1、硬编码
1、什么是硬编码?就是机器码,就是指令,他本身有自己的格式比如这种指令,就是硬编码X86下指令长度最短是1个 最长15个硬编码的结构:2、哪些人需要学习硬编码?<1>病毒与反病毒I<2>加密与破解<3>外挂与反外挂所有与计算机底层相关的行业都需要深入学习、了解硬编码。3、学习硬编码需要参考的书籍在...原创 2019-06-09 10:50:56 · 965 阅读 · 0 评论 -
4、经典定长指令_修改ERX
定长指的是:只要Opcode确定,这条指令的长度就确定了,这就是定长而不是 Opcode 的长度就是指令的长度要记住通用寄存器的顺序,有利于理解硬编码0 EAX1 ECX2 EDX3 EBX4 ESP5 EBP6 ESI7 EDI1、PUSH/POP50 PUSH EAX51 PUSH ECX52 PUSH EDX5...原创 2019-06-09 11:00:33 · 299 阅读 · 0 评论 -
7、经典变长指令_SIB
有没有SIB,是由ModR/M来确定的,DIsplacement和Immediate也是由ModR/M确定的当查表的时候,如果遇到下面这种情况则说明,仅仅通过ModR/M是确定不了指令格式的,还得通过SIB当R/M是100的时候,一定有SIBSIB的格式SIB查Table 2-3 (此表在511页)举个例子:88 84 48...原创 2019-06-09 11:11:20 · 616 阅读 · 0 评论 -
6、经典变长指令之_ModRM
ModR/M只有一个字节经典变长指令 _ModR/M0X88 MOV Eb, Gb G:通用寄存器0X89 MOV Ev, Gv E: 寄存器/内存0X8A MOV Gb, Eb b: 字节0X8B MOV Gv, Ev v: Word, doubleword, quadword举个例子:88 0188查主表就是 MOV Eb, Gb (主表在254...原创 2019-06-09 11:07:14 · 573 阅读 · 0 评论 -
5、经典定长指令_修改EIP
1、0X70---0X7F跳转范围:-0X80----------0X7FOpcode是1个字节,指令长度是2个字节2、0X0F 0X80 --------0X0F 0X8F跳转范围:-0x80000000-----------0X7FFFFFFFOpcode是2个字节,指令长度是5个字节3、其他指令4、其他指令高2位即高地址的2位...原创 2019-06-09 11:02:33 · 279 阅读 · 0 评论 -
3、定长指令与变长指令
1、指令编码(硬编码)的结构除了Opcode之外,其他的都是可选的,所以Opcode是一个硬编码的灵魂Opcode ModR/M SIB这3个决定了整个指令的长度Displacement Immediate的长度由前3个(Opcode ModR/M SIB)决定Opcode决定 ModR/M 的有无ModR/M决定 SIB 的有无2、什么是定长指令?什么是变...原创 2019-06-09 10:59:21 · 8881 阅读 · 0 评论 -
2、指令前缀
1、指令编码(硬编码)的结构怎么判断是不是前缀指令呢? 前缀指令就几个,很好确定,根据指令的内容来确定2、前缀指令是分组的:前缀指令最多是4个,每组一个<1>LOCK 和REPEAT前缀指令:LOCK F0 //锁地址总线的 在同一时刻只能有一个核的CPU来读取那条指令,这个指令在多核下才有意义REPNE/REPNZ F2 //重复执行 当...原创 2019-06-09 10:54:37 · 1251 阅读 · 0 评论