JEB Decompiler中文网站 > 使用教程 > JEB Decompiler如何分析加密代码 JEB Decompiler分析结果不准确怎么办
JEB Decompiler如何分析加密代码 JEB Decompiler分析结果不准确怎么办
发布时间:2025/03/27 16:38:39

品牌型号:联想拯救者R7000

系统:Windows 10专业版

软件版本:JEB 5.20.0.202411121942

在逆向分析领域,JEB Decompiler有着强大的反编译能力和动态调试功能,是很多程序员分析加密代码的重要工具。面对日益复杂的代码混淆技术和复杂的加密算法,JEB的分析结果可能出现偏差甚至错误。本文将为大家介绍JEB Decompiler如何分析加密代码,JEB Decompiler分析结果不准确怎么办的相关内容。

一、JEB Decompiler如何分析加密代码

为了防止接口被恶意调用,一般需要使用一些加密算法,计算出某个字段的值,然后才能返回指定的数据。接下来本文就以一个App为例,为大家演示JEB Decompiler如何分析加密代码,并用代码实现加密的算法,并调用接口。

1)这是一个名为【index】的方法,这里使用了Encrypt.encrypt的方法,代表加密的意思。

接口实现
图1:接口实现

2)可以看到该方法的参数是arraylist0,而arraylist0就是ArrayList中的一个元素,这里是【/api/movie】这个字符串(橙色内容)。

3)这时候我们再通过交叉引用找到Encrypt的定义,可以看到下图所示的内容。

加密逻辑
图2:加密逻辑

这里是一个加密算法,传入的参数就是list0,也就是上图“调用者”传入的参数,是一个长度为1的列表,内容就是一个字符串,即【/api/movie】。接下来为大家简单分析一下加密逻辑:

1、代码第一行,把一个【数字的字符串】放入list0,现在list0就有两部分内容,一个是【/api/movie】,另一串数字,根据经验,这一串数字是时间戳。

2、代码第二行,将list0使用逗号拼接起来,然后调用shaEncrypt方法,shaEncrypt是SHA1算法,返回一个字符串,名字是【s】。

3、代码第三行又声明了一个ArrayList,把s和一串数字加进去。最后把arrayList0的内容使用逗号拼接起来,进行Base64编码。

上面三个步骤是源代码的整体加密逻辑,加密后生成【token】,有了这个token才能请求接口。我们可以用Python把这个流程实现出来,代码和执行结果如下图所示,根据返回值来看,确实成功请求接口,并拿到了返回值。

代码实现接口调用
图3:代码实现接口调用

二、JEB Decompiler分析结果不准确怎么办

代码混淆通过将程序代码转换为功能相同,但代码难以理解(如毫无意义的类/方法名),大幅增加反编译和分析难度。使用JEB Decompiler也可能因混淆导致反编译结果出现类名丢失。此时,需结合脚本工具与人工干预提升分析准确性。

代码混淆
图4:代码混淆

如果你遇到了上述问题,可以使用开源脚本(GitHub平台)能够解析Smali代码中的【.source】字段,直接显示混淆前的原始类名信息。例如:原始混淆代码中的类名可能被改为a.b.c.d,而脚本可将其还原为com.example.security.EncryptUtils。

三、总结

以上就是JEB Decompiler如何分析加密代码,JEB Decompiler分析结果不准确怎么办的相关内容。本文为大家简单介绍了分析加密代码的一般步骤,有了JEB Decompiler后,找到关键加密的代码,非常轻松就可以复现。如果出现分析结果不准确的情况,一般是遇到了代码混淆,我们可以尝试使用GitHub上的一些开源工具,希望本文对你有所帮助。

 

135 2431 0251