type
status
date
slug
summary
tags
category
icon
password

硬编码学习:

1硬编码初识:

何为硬编码:

硬编码是指将具体的数值、路径、参数等直接写入程序代码中,而不通过变量或配置文件来表示。这样的做法使得程序中的这些数值和参数变得固定,不容易修改,且缺乏灵活性。硬编码的值通常被称为"魔法数"(Magic Numbers)或"魔法字符串",因为它们没有直观的含义,只能通过查看代码来了解,这个也就是我们在反汇编引擎里面看到的东西

何为软编码:

软编码是指通过变量、配置文件、参数等方式将具体数值或参数抽象出来,而不是直接写入代码。通过软编码,程序变得更加灵活,可以更容易地进行修改和维护,且适应性更强

操作码的表格(查表):

 
notion image
 
notion image
 
 
 

2、前缀指令:

硬编码的格式:

notion image
 
解析:

四种前缀指令格式:

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

总结:

硬编码的学习是一个经常实践的过程,只有多次使用才能熟悉掌握。如有错误还请各位师傅多指教,共同进步。
WKCTF—re题解解决Android Studio连接超时的报错问题:
Loading...