初探鸿蒙应用逆向分析(奇妙的Math逻辑运算)
字数 1220 2025-08-22 12:23:12
鸿蒙应用逆向分析:Math逻辑运算解析
1. 鸿蒙应用基础
1.1 鸿蒙系统概述
- 鸿蒙OS(HarmonyOS)是面向万物互联的全场景分布式操作系统
- 主要特点:与硬件解绑、生态共享、跨端共享
- 定位:不是替代安卓,而是实现万物互联
1.2 HAP包结构
- HAP(Harmony Ability Package)是鸿蒙应用安装和运行的基本单元
- 类比Android的APK包
- 两种类型:
- entry:应用主模块,作为应用入口
- feature:动态特性模块,作为能力扩展
2. 逆向分析准备
2.1 关键文件
./ets/modules.abc:ArkTS源码编译结果(类比Android的Java层)./libs:动态库文件(类比Android的so层)
2.2 工具准备
- 反编译工具:abc-decompiler(基于jadx和abcde开发)
- GitHub地址:https://github.com/ohos-decompiler/abc-decompiler
3. 逆向分析过程
3.1 分析modules.abc
- 使用abc-decompiler打开modules.abc
- 查看main包的pages目录(包含所有页面)
- 定位关键函数:
- 查找onSubmit事件
- 跟进handleInput方法
- 发现调用libentry.so中的check函数
3.2 分析libentry.so
- 使用IDA Pro等工具打开libentry.so
- 定位入口函数
- 发现check函数(sub_3750)
3.2.1 混淆处理
- 使用了ollvm的指令混淆
- 特点:
- 将简单运算复杂化
- 增加大量无用分支
- 变量名随机化(vxxx)
3.2.2 关键发现
- flag长度为32
- 主要比较函数:sub_57B0
- 密文数据位置明显
3.3 加密算法分析
主要加密函数:
- sub_62F0
- sub_CC10
- sub_6D20
- sub_8270
- sub_9890
- sub_A8F0
- sub_C160
算法逻辑还原
通过分析发现实际运算为:
(((x*x + (x)*2)) - 3)/2
这实际上是完全平方公式的变形
4. 数学求解
4.1 算法逆向
- 已知密文为y = (((x² + 2x) - 3)/2)
- 逆向步骤:
- y × 2 + 3 = x² + 2x
- 加1凑完全平方:x² + 2x + 1 = (x + 1)²
- 开平方得:x + 1
- 减1得:x
4.2 Python解题脚本
def solve(y):
# y = (((x*x + x*2) - 3)/2)
# 逆向计算x
temp = y * 2 + 3 # x² + 2x
temp += 1 # x² + 2x + 1 = (x+1)²
x_plus_1 = int(temp ** 0.5)
x = x_plus_1 - 1
return x
# 示例使用
ciphertext = [...] # 从二进制中提取的密文
flag = ''.join([chr(solve(y)) for y in ciphertext])
print(flag)
5. 总结
5.1 逆向要点
- 鸿蒙应用逆向与Android逆向类似但有所不同
- 关键文件:modules.abc和libs目录
- 遇到ollvm混淆时注意识别真实运算逻辑
- 数学运算类加密可通过公式逆向求解
5.2 扩展思考
- 鸿蒙应用逆向的特殊性
- 更复杂的混淆处理方式
- 其他可能的加密算法变形
通过本案例,我们掌握了鸿蒙应用逆向的基本流程和数学运算类加密的分析方法,这对于CTF竞赛和实际安全研究都有重要参考价值。