patch
used for a reverse problem named sm4 in MoeCTF2024
当题目给了解密函数或者加解密对称的函数有一些特殊的方法,可以不去逆算法

**4C**
: 这是REX
前缀,用于扩展寄存器和操作数的大小。4C
指定了指令使用扩展的 64 位寄存器(在此指令中为r8
),并且涉及到r8
这一高位寄存器**8D**
: 这是LEA
指令的操作码**45 10**
: 这是操作数的 ModR/M 字节和位移量。45
表示目标寄存器是r8
(4D的时候表示rcx),源操作数的基址寄存器是rbp
,并且有一个 8 位符号扩展的位移量。10
是位移量

栈结构如下
1 |
|
A0-50=50,所以上图黄色位置为50
现在要改为enc,A0-100=-60,变成A0,相当于把加密后的数据快速改成密文,也可以调试的时候一位位改

输入长度为48位(题目要求)的时候正常输出flag

patch
https://j1ya-22.github.io/2025/02/05/patch/