type
status
date
slug
summary
tags
category
icon
password
硬编码学习:
1硬编码初识:
何为硬编码:
硬编码是指将具体的数值、路径、参数等直接写入程序代码中,而不通过变量或配置文件来表示。这样的做法使得程序中的这些数值和参数变得固定,不容易修改,且缺乏灵活性。硬编码的值通常被称为"魔法数"(Magic Numbers)或"魔法字符串",因为它们没有直观的含义,只能通过查看代码来了解,这个也就是我们在反汇编引擎里面看到的东西
何为软编码:
软编码是指通过变量、配置文件、参数等方式将具体数值或参数抽象出来,而不是直接写入代码。通过软编码,程序变得更加灵活,可以更容易地进行修改和维护,且适应性更强
操作码的表格(查表):


2、前缀指令:
硬编码的格式:

解析:
四种前缀指令格式:
LOCK和REPEAT前缀指令:
段前缀指令:
改变寻址的时候默认的段
操作数宽度前缀指令:
66
改变操作数的默认宽度,将32位转换为16位
地址宽度前缀指令:
67
改变地址(寻址)的默认宽度,将32位转换为16位
3、经典定长指令__修改ERX
(定长指令:也就是如果op操作码的长度确定,那么指令的长度也确定啦)
50系列:
PUSH操作:
POP操作:
40系列:
inc指令,加指令
dec指令,减指令
b0系列:
mov 寄存器,立即数:
90系列:
XCHG EAX,ERX
4、经典定长指令_修改EIP
0x70-0x7F:
作用解释:
0X0F 0X80 - 0X0F 0X8F:
作用解释:
E*部分指令:
8个段寄存器:ES CS SS DS FS GS LDTR TR
5、经典变长指令_ModR/M
变长指令也就是在OP操作码后面存在ModR/M指令
ModR/M由一个指令组成,但是可以由很多不同的位命令
Mod | Reg/Opcode | R/M |
6、经典变长指令_SIB
SIB的组成结构:
Scale | Index | Base |
总结:
硬编码的学习是一个经常实践的过程,只有多次使用才能熟悉掌握。如有错误还请各位师傅多指教,共同进步。
- Author:xiaowaaa
- URL:https://www.xiaowaaa.asia//article/55092131-3efb-4519-ac70-528dc16ee23d
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!