第一届OpenHarmony CTF专题赛RE题解
字数 1522 2025-09-01 11:26:17

OpenHarmony CTF专题赛RE题解教学文档

1. easyre题目解析

1.1 文件处理

  • HAP文件本质是ZIP格式,可重命名为.zip后解压
  • 需要反编译其中的abc文件获取源码

1.2 反编译工具选择

  • 推荐使用jadx-dev-all工具进行反编译
  • 也可使用其他反编译工具,但可能存在反编译不完全的情况

1.3 解题步骤

  1. 第一部分flag分析

    • 逻辑位于index文件中
    • 加密过程:
      • 首先加上自身长度
      • 然后反转字符串
      • 逐字符减去索引值(i)
      • 再次反转
    • 解密方法:使用密文正向运行该程序
    • 第一部分flag:universityofoxford arkts
  2. 第二部分flag分析

    • 位于flag目录下
    • 当x_2_2.count达到1000000时输出flag
    • flag生成逻辑:
      • 调用getH2函数,实际上是decodeToString函数
      • 在coder中实现:
        • 调用x_1_8进行标准base解码
        • 调用x_1_7进行字符串反转
    • 解密方法:按照相同逻辑解密magic字符串
    • 第二部分flag:38bad98fa3074dd6adc8cc434f22c48b4d4

2. Secret题目解析

2.1 手势锁解密

  1. 锁验证逻辑

    • @normalized:Y&&&libsecret.so&.mjs加载验证逻辑
    • 检查函数位于libsecret.so中
    • 使用XXTEA加密算法,密钥为"what"
    • 密文为"is"(注意小端序)
  2. 解密方法

    • 使用IDA的get_wide_dword()函数提取数据
    • 实现XXTEA解密算法

2.2 图片解密

  1. 文件处理

    • 资源文件中包含enc加密文件
    • 需要解密该文件并上传
  2. 加密流程

    • 使用魔改SM4算法加密
      • 轮密钥生成过程有修改
      • 32轮迭代
      • 额外异或了TEA的delta常量
    • 最后进行Base64编码
  3. 解密步骤

    • 首先解Base64
    • 编写魔改SM4解密脚本
      • 注意轮密钥生成和异或delta的修改
    • 再次解Base64得到图片文件
    • 上传解密后的图片获取flag

3. 加密算法分析

3.1 RC4魔改分析

  1. 修改点

    • S盒生成仅使用i变量
    • 加密时将异或操作改为加法操作
  2. 解密方法

    • 逆向实现修改后的RC4算法
    • 注意密钥替换逻辑(初始为假密钥,onPageShow时替换为"OHCTF2026")

3.2 Base64魔改分析

  • 明显的换表逻辑
  • 需要识别并使用正确的编码表进行解码

3.3 RSA分析

  • 参数:
    • e = 7
    • N = 75067(可直接分解)
  • 分解结果:
    • p = 271
    • q = 277
  • 计算私钥d:
    • φ(N) = (p-1)(q-1) = 270276
    • d ≡ e⁻¹ mod φ(N)

4. 工具推荐

  1. 反编译工具

    • jadx-dev-all(推荐)
    • 其他反编译工具可能存在不完整反编译问题
  2. 因数分解工具

    • yafu(适用于小N值分解)
  3. 分析工具

    • IDA Pro(用于分析.so文件)
    • DevEco Studio模拟器(用于运行测试程序)

5. 解题技巧总结

  1. 文件格式识别

    • HAP文件实际上是ZIP格式
    • 加密文件可能隐藏在资源文件中
  2. 加密算法识别

    • 注意标准算法的修改点(如RC4、SM4的修改)
    • 关注密钥替换逻辑
  3. 逆向分析

    • 优先分析明显的验证逻辑
    • 关注交叉引用和函数调用关系
  4. 密码学攻击

    • 小N值的RSA可直接分解
    • 魔改算法需要仔细分析修改点
  5. 数据提取

    • 注意字节序问题(小端/大端)
    • 使用合适工具提取密文数据

通过以上详细分析,可以系统性地解决OpenHarmony CTF中的逆向工程题目,特别是针对各种魔改加密算法的识别和解密。

OpenHarmony CTF专题赛RE题解教学文档 1. easyre题目解析 1.1 文件处理 HAP文件本质是ZIP格式,可重命名为.zip后解压 需要反编译其中的abc文件获取源码 1.2 反编译工具选择 推荐使用jadx-dev-all工具进行反编译 也可使用其他反编译工具,但可能存在反编译不完全的情况 1.3 解题步骤 第一部分flag分析 : 逻辑位于index文件中 加密过程: 首先加上自身长度 然后反转字符串 逐字符减去索引值(i) 再次反转 解密方法:使用密文正向运行该程序 第一部分flag: universityofoxford arkts 第二部分flag分析 : 位于flag目录下 当x_ 2_ 2.count达到1000000时输出flag flag生成逻辑: 调用getH2函数,实际上是decodeToString函数 在coder中实现: 调用x_ 1_ 8进行标准base解码 调用x_ 1_ 7进行字符串反转 解密方法:按照相同逻辑解密magic字符串 第二部分flag: 38bad98fa3074dd6adc8cc434f22c48b4d4 2. Secret题目解析 2.1 手势锁解密 锁验证逻辑 : 从 @normalized:Y&&&libsecret.so&.mjs 加载验证逻辑 检查函数位于libsecret.so中 使用XXTEA加密算法,密钥为"what" 密文为"is"(注意小端序) 解密方法 : 使用IDA的get_ wide_ dword()函数提取数据 实现XXTEA解密算法 2.2 图片解密 文件处理 : 资源文件中包含enc加密文件 需要解密该文件并上传 加密流程 : 使用魔改SM4算法加密 轮密钥生成过程有修改 32轮迭代 额外异或了TEA的delta常量 最后进行Base64编码 解密步骤 : 首先解Base64 编写魔改SM4解密脚本 注意轮密钥生成和异或delta的修改 再次解Base64得到图片文件 上传解密后的图片获取flag 3. 加密算法分析 3.1 RC4魔改分析 修改点 : S盒生成仅使用i变量 加密时将异或操作改为加法操作 解密方法 : 逆向实现修改后的RC4算法 注意密钥替换逻辑(初始为假密钥,onPageShow时替换为"OHCTF2026") 3.2 Base64魔改分析 明显的换表逻辑 需要识别并使用正确的编码表进行解码 3.3 RSA分析 参数: e = 7 N = 75067(可直接分解) 分解结果: p = 271 q = 277 计算私钥d: φ(N) = (p-1) (q-1) = 270 276 d ≡ e⁻¹ mod φ(N) 4. 工具推荐 反编译工具 : jadx-dev-all(推荐) 其他反编译工具可能存在不完整反编译问题 因数分解工具 : yafu(适用于小N值分解) 分析工具 : IDA Pro(用于分析.so文件) DevEco Studio模拟器(用于运行测试程序) 5. 解题技巧总结 文件格式识别 : HAP文件实际上是ZIP格式 加密文件可能隐藏在资源文件中 加密算法识别 : 注意标准算法的修改点(如RC4、SM4的修改) 关注密钥替换逻辑 逆向分析 : 优先分析明显的验证逻辑 关注交叉引用和函数调用关系 密码学攻击 : 小N值的RSA可直接分解 魔改算法需要仔细分析修改点 数据提取 : 注意字节序问题(小端/大端) 使用合适工具提取密文数据 通过以上详细分析,可以系统性地解决OpenHarmony CTF中的逆向工程题目,特别是针对各种魔改加密算法的识别和解密。