二进制修复中文乱码的问题

发布者:_THINCT
发布于:2021-11-16 13:43

解决中文乱码

问题描述

程序调用第三方日志Log.dll模块,无源码。发现导出的日志为乱码,如下图所示。

 

中文乱码

期望目标

为Log.dll打补丁,解决乱码问题。

问题分析

经分析,是因为日志导出的文件编码问题造成的。通过二进制修改文件格式,将UTF-16 LE修改成UTF-8或者ANSI,问题即可解决。

 

其中UTF-16 LE的特征码是FFFE ,这一点很关键。

注意:使用notepad++等工具直接进行编码转换是无法正常转码的。

解决方案

逆向解决方案。猜想文件读写调用API WriteFile。经MSDN查询,该接口在Kernel32模块中,使用IDA定位API,并锁定引用位置。运气不错,引用的位置在同一个函数之中。在上下文中发现了特征吗FFFE,确定了变量Buffer+0x1D8。

 

 

刚好,WriteFile写入了该变量

 


 

使用X64Dbg锁定该代码片段,打补丁。

 

结论

通过验证之后,导出的日志乱码问题解决了。

 


声明:该文观点仅代表作者本人,转载请注明来自看雪