巧用Patch修改数据流复用程序解密逻辑
sm4-MoeCTF2024
当题目给了解密函数或者加解密对称的函数有一些特殊的方法,可以不去逆算法
**4C**: 这是REX前缀,用于扩展寄存器和操作数的大小。4C指定了指令使用扩展的 64 位寄存器(在此指令中为r8),并且涉及到r8这一高位寄存器**8D**: 这是LEA指令的操作码**45 10**: 这是操作数的 ModR/M 字节和位移量。45表示目标寄存器是r8(4D的时候表示rcx),源操作数的基址寄存器是rbp,并且有一个 8 位符号扩展的位移量。10是位移量
栈结构如下
1 | -0000000000000120 ; Frame size: 120; Saved regs: 8; Purge: 0 |
A0-50=50,所以上图黄色位置为50
现在要改为enc,A0-100=-60,变成A0,相当于把加密后的数据快速改成密文,也可以调试的时候一位位改
输入长度为48位(题目要求)的时候正常输出flag
- 标题: 巧用Patch修改数据流复用程序解密逻辑
- 作者: j1ya
- 创建于 : 2025-02-05 17:04:09
- 更新于 : 2026-06-02 10:33:15
- 链接: https://redefine.ohevan.com/2025/02/05/patch/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论