基于反混淆工具混淆后的日志定位
工程源码的混淆可以降低工程被破解攻击的风险,但会导致无法直接通过Release应用的堆栈信息定位到源码的具体文件和行位置,不易于开发者快速定位解决问题。本工具使用指南将以开发者视角,向开发者讲解,如何分别使用IDE自带反混淆工具AnalyzeStaceTrace和hstack命令行对Release应用中C++堆栈、ArkTS堆栈以及ArkTS堆栈中混淆的方法名进行还原,方便开发者进行错误信息定位(注:仅支持API12及以上的工程)。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
混淆后提供mapping映射文件?如何反混淆?
392浏览 • 0回复 待解决
HarmonyOS hstack工具无法根据nameCache.json反混淆函数名
407浏览 • 1回复 待解决
HarmonyOS 开启混淆后,变量也会被混淆
41浏览 • 0回复 待解决
求大佬告知如何定位混淆问题
528浏览 • 1回复 待解决
HarmonyOS 构建 release 包为何没看到符号表文件sourcemap,混淆的代码怎么反混淆查看源码呢
514浏览 • 1回复 待解决
编译har,如何混淆,混淆如何使用
1112浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何配置代码混淆的混淆规则?
116浏览 • 1回复 待解决
开启混淆后,卡片加载不出来
6370浏览 • 1回复 待解决
HarmonyOS 开启混淆后编译的文件,如何反编译?
9浏览 • 1回复 待解决
HarmonyOS 代码混淆设置保留选项后,参数名和局部变量名仍然被混淆
21浏览 • 1回复 待解决
混淆相关测试demo,混淆相关配置和规则的demo验证测试
1013浏览 • 1回复 待解决
HarmonyOS 混淆规则的问题
163浏览 • 1回复 待解决
按照官网描述对har进行混淆,混淆不生效
773浏览 • 1回复 待解决
HarmonyOS 并发请求定位时结果会不会出现混淆返回的情况
37浏览 • 1回复 待解决
HarmonyOS 混淆相关问题
43浏览 • 1回复 待解决
HarmonyOS 混淆没生效
45浏览 • 1回复 待解决
so加固支持的混淆逻辑
620浏览 • 1回复 待解决
HarmonyOS har包混淆规则
36浏览 • 1回复 待解决
HarmonyOS 混淆相关场景咨询
118浏览 • 1回复 待解决
HarmonyOS 模块之间混淆规则
34浏览 • 1回复 待解决
HarmonyOS har包混淆问题
242浏览 • 1回复 待解决
HarmonyOS 安全加固和混淆
1119浏览 • 1回复 待解决
混淆策略配置都有哪些?
531浏览 • 1回复 待解决
HarmonyOS 关于library的代码混淆问题
102浏览 • 1回复 待解决
#鸿蒙通关秘籍#混淆后如何还原代码报错栈?
107浏览 • 1回复 待解决
文件准备工作
1. 已混淆的工程和报错日志,这里以混淆工程为例,混淆规则配置如下:
两次运行工程分别点击工程内的Native按钮和ArkTS按钮获取混淆后的报错日志。
1. 获取原工程混淆后build产物目录下的sourceMaps.map文件,nameCache.json文件,以及生成的so文件(根据运行的设备的CPU架构选取对应的so文件)产物路径参考下图:
方案描述
1. 使用IDE自带工具Analyze Stace Trace工具进行日志反混淆。
a. 当前工程为堆栈所在应用对应的工程,且存在Release构建产物:
i. 单击菜单栏Code->Analyze Stack Trace,或在FaultLog页面异常堆栈信息处右键选择Analyze Stack Trace。
i. 在弹出的Analyze Stack Trace对话框中,粘贴Release应用的异常堆栈信息。取消勾选Unscramble stack,点击Start Analyze进行解析,对话框右侧及为解析结果:
a. 当前工程不为堆栈所在应用对应的工程。
i. ArkTS堆栈报错信息反混淆操作演示。
打开Analyze Stack Trace工具栏,勾选Unscramble stack,分别添加应用对应的sourceMaps.map文件、nameCache.json文件点击Start Analyze即可进行解析,对话框右侧即为解析结果:
i. Native堆栈报错信息反混淆操作演示。
打开Analyze Stack Trace工具栏,勾选Unscramble stack,分别添加应用对应的sourceMaps.map文件、nameCache.json文件和对应的so文件,点击Start Analyze即可进行解析:
i. IDE界面参数介绍:
□ 左侧输入框:输入需要解析的堆栈信息,右侧为输出结果区域。
□ Unscramble stack:不勾选表示以当前IDE工程的realease产物来解析堆栈。
□ Source map:文件中存有混淆前后代码位置的映射关系。
□ so:动态链接库,包含了已编译的可重用代码,可以被程序在运行时动态加载和链接。
□ Name cache:混淆名称映射表,文件中包含混淆前和混淆后的名称。
□ Start Analyze:开始解析。
1. 使用hstack命令的方式进行日志反混淆。
准备工作:
建议准备五个空的文件夹(文件名可自定义),这里在E:\hstackTest目录下分别新建nameCache、nativeso、sourcemap、output、input五个空的文件夹为例。将nameCache.json文件放入nameCache文件内,将sourceMaps.map文件放入sourceMaps文件夹中,将生成的so文件放入nativeso文件中,input文件存放ArkTS和Native堆栈报错信息文件,output文件作为输出目录。
工具下载和环境配置:
a. Node.js配置到环境变量中,以Windows系统为例:(建议使用18.14.1版本)。
a. 如果需要对C++文件产生的异常进行解析,则需要将SDK中的native\llvm\bin目录配置到环境变量中,变量名设置为“ADDR2LINE_PATH”(路径的文件名不能包含空格)。
a. 根据电脑的操作系统,从DP平台上的套件货架上下载对应版本的hstack工具。
ArkTS堆栈报错信息反混淆操作演示。
将ArkTS堆栈文件放入input文件夹内,在工具所在目录打开终端,输入指令:
在output文件夹中即可看到解析后的ArkTS堆栈文件(解析后的文件会在原文件名下增加一个“_”命名),解析效果展示:
Native堆栈报错信息反混淆操作演示。
将Native堆栈文件放入input文件夹内,在工具所在目录打开终端,输入指令:
解析效果展示:
hstack命令行配置说明:
指令
说明
-s
可选,指定工程sourcemap.map文件归档目录。参数为文件夹
--so
可选,指定工程so文件归档目录。参数为文件夹
-n
可选 ,指定工程nameCache.json文件归档目录。参数为文件夹
-i
堆栈文件目录,参数为文件夹
-o
反混淆文件输出目录,参数为文件夹
--version/-v
查看hstack版本。
--help/-h
查询hstack命令行帮助。
注意事项:
− sourcemap与so文件归档目录至少提供一项。
− 如果需要对方法名进行解析还原,则需要同时提供sourcemap与nameCache文件。
− 路径参数,包括ADDR2LINE_PATH这个环境变量的参数值,不支持以下特殊字符:`!@#¥……&*()——|{}【】‘;:。,、?。