品牌型号:联想拯救者R7000
系统:Windows 10专业版
软件版本:JEB 5.20.0.202411121942
在做软件逆向分析时,我们可以使用JEB Decompiler这款工具,这款工具可以分析加密算法,以及混淆代码。遇到加密的方法,应该怎么分析呢?本文将为大家介绍JEB Decompiler怎么分析加密算法,如何用JEB Decompiler分析混淆代码的相关内容。
一、JEB Decompiler怎么分析加密算法
在做接口请求时,为了防止被而已调用,一般需要使用一些加密算法,计算出某个字段的值,然后才能返回指定的数据。在做逆向分析时,能够准确分析程序使用的加密算法并能够使用代码复现出来是基础操作,接下来本文就以一个App为例,为大家演示怎么分析加密算法,并用代码实现加密的算法,并调用接口。
1)下图是index方法的代码,如图所示,这里有一个encrypt的方法,代表加密的意思。

2)其参数就是arraylist0,而arraylist0就是ArrayList中的一个元素,这里是【/api/movie】这个字符串(橙色内容)。这时候我们再通过交叉引用找到Encrypt的定义,可以看到下图所示的内容。

3)这里就是一个加密算法,传入的参数就是list0,也就是上图“调用者”传入的参数,是一个长度为1的列表,内容就是一个字符串,即【/api/movie】。
4)然后为大家简单分析一下加密逻辑:
1、代码第一行,把一个“数字的字符串”放入list0,现在list0就有两部分内容,一个是【/api/movie】,另一串数字,根据经验,这一串数字是时间戳。
2、代码第二行,将list0使用逗号拼接起来,然后调用shaEncrypt方法,shaEncrypt就是SHA1算法,返回一个字符串,名字是【s】。
3、代码第三行又声明了一个ArrayList,把s和一串数字加进去。最后把arrayList0的内容使用逗号拼接起来,进行Base64编码。
以上就是源代码的整体加密逻辑,加密后生成【token】,有了这个token才能请求接口。我们可以用Python把这个流程实现出来,代码和执行结果如下图所示,根据返回值来看,确实成功请求接口,并拿到了返回值。

请求接口的前提是知道完整的接口链接,我们可以使用抓包工具,查看App发出的Http请求地址。根据下图抓包结果,我们可以发现有三个参数,分别为offset、limit还有token,其中token就是上文介绍的加密逻辑。

二、如何用JEB Decompiler分析混淆代码
什么是代码混淆呢?
代码混淆是将计算机程序的代码,转换成难于阅读和理解形式的代码但是功能是相同的。混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义,通过进行代码混淆可以有效提升应用被逆向破解的难度。

那么我们如何用JEB Decompiler分析混淆代码呢?
为大家推荐一个脚本,链接是https://github.com/S3cuRiTy-Er1C/Jebs,该脚本可以在看Smali时就能在.source(JEB中称为Debug Directive)字段中看到原始类名信息。如下图所示,但是该脚本存在一定的局限性,例如:不会反混淆内部类、字段值为空时不起作用,更多时候还是要靠自己的技术。

三、总结
以上就是JEB Decompiler怎么分析加密算法,如何用JEB Decompiler分析混淆代码的相关内容。本文以一个App为例,为大家演示了怎么分析token的加密算法,并且用代码复现,证明了分析的正确。另外为大家推荐了一个来自Github的反混淆脚本,希望本文对你有所帮助。