Skip to main content

还原混淆堆栈日志

混淆后代码中输出的日志中的函数堆栈是混淆后的名称,这给跟踪问题带来很大障碍。对照symbol mapping文件(文档见符号混淆) 记录的原始函数与混淆后函数的映射关系,人工还出原始堆栈的工作非常烦琐。Obfuz提供了DeobfuscateStackTrace工具用来自动化还原混淆堆栈。

DeobfuscateStackTrace工具

DeobfuscateStackTrace是一个基于.net 8开发的命令行工具,可以运行在Win、MacOS、Linux等所有.net支持的平台。

源码在仓库根目录下的DeobfuscateStackTrace。 可以自己编译,也可以直接从github release链接DeobfuscateStackTrace.7z中下载。

使用方式如下:

  • DeobfuscateStackTrace --help 查看帮助。
  • DeobfuscateStackTrace -m {symbol mapping file} -i {obfuscated log} -o {deobfuscate log} 命令将混淆后的堆栈日志还原为原始日志。 -m的参数是 ObfuzSettings.SymbolObfusSettings.SymbolMappingFile指向的的symbol mapping文件, -i 的参数是混淆后的日志文件, -o是输出的还原堆栈后的日志文件。

示例:

  • Windows 下

DeobfuscateStackTrace -m path/of/symbol-mapping.xml -i obfuscated.log -o deobfuscated.log

  • MacOS或Linux下
dotnet DeobfuscateStackTrace.dll -m path/of/symbol-mapping.xml -i obfuscated.log -o deobfuscated.log