个人一次十四小时极限黑盒调试经历

十四小时极限调试挑战 - 流水帐


背景

本文以流水线的方式记录了一次难以忘怀的调试经历。模块化

过程

2019-10-29 13:02 分加密

接到紧急报告,某商业软件在解析特定数据格式时候出现故障,须要当即解决。而没法联系到供应商。debug

2019-10-29 13:20 分调试

开始进行问题复现。日志

2019-10-29 14:26 分源码

问题复现成功,打开debug级别日志,但愿从日志中找出线索。编译

2019-10-29 14:40 分软件

日志没有记录到更有效的信息,开始对程序安装目录进行结构分析。日志分析

2019-10-29 15:30 分bug

基本完成对程序的分析,主要使用Java和so进行连接,因为程序是很是模块化的,基本能够定位到某几个Jar包有Bug.

2019-10-29 15:50 分

从Jar包的名称中发如今一个关键位置多是引入了一个开源库,经过Google 找到该项目源码,但愿经过修改这个库以免这个Bug。

2019-10-29 17:10 分

第一个版本的修改版完成,尝试替换,解决了必定的问题,缩小了问题发生概率,但仍旧没有实际的进展。

2019-10-29 19:00 分

吃了个晚餐。

2019-10-29 19:20 分

通过两个小时的奋战,基本宣告这个方案失败,开始预备尝试对某个私有内部JAR包进行修改的方案。

2019-10-29 21:30 分

经过JBE将JAR包进行反编译,开始尝试直接修改Class文件。

2019-10-29 22:30 分

完成了Class文件修改版,进行替换后没法正常工做,形成了运行时的直接崩溃。

2019-10-29 22:50 分

喝了一杯焦糖加浓美式。

2019-10-29 23:10 分

经过上一个步骤对Jar的反编译已经发现源码没有进行加密与混淆,开始将整个JAR包进行反编译获得源代码,而且直接将该程序的全部JAR包都归入lib中,开始直接编译。

2019-10-30 01:15 分

项目构成完成,解决了源代码中的一些问题,对代码进行非破坏性的增长日志。上线一个版本。

2019-10-30 01:30 分

拿到更完整的日志,进行日志分析。对代码进行保护性调整,进行了屡次Debug。

2019-10-30 02:20 分

基本宣告调试完成,进行完整验证。在验证过程当中,发现有部分逻辑遗漏。

2019-10-30 03:20 分

完成了最终版本,调试经过。

2019-10-30 03:30 分

正式投入使用,替代旧版程序。将整个问题Email复现给了供应商。

2019-10-30 04:00 分

记录下来了此次可贵难得的经历。

相关文章
相关标签/搜索