品牌型号:联想拯救者R7000
系统:Windows 10专业版
软件版本:JEB 5.20.0.202411121942
在做逆向分析时,我们可能会遇到加密算法与代码混淆,怎么才能分析出加密方式从而调用相关代码呢?JEB Decompiler作为一款专业的逆向工具,可以帮助我们分析加密算法以及混淆代码。本文将为大家介绍JEB Decompiler如何分析多加密算法,JEB Decompiler如何分析多混淆技术的相关内容。
一、JEB Decompiler如何分析多加密算法
我们在设计接口时,为了防止接口被恶意发起请求,造成资源浪费。可以在接口中使用一些加密算法,计算出某个字段的值,验证通过后才能返回指定的数据。我们在做逆向分析时,如果遇到了加密算法,就需要我们耐心的理解代码逻辑,接下来本文就以一个App接口为例,为大家演示怎么分析加密算法,并用Python代码复现加密的算法,并调用接口。
1)在做逆向分析时,假如找到了代码执行的核心逻辑,例如下图中的【index方法】的代码,这里有一个encrypt的方法,代表执行加密的逻辑。

2)该加密方法中的参数是arraylist0,而arraylist0是ArrayList集合中的一个元素,也就是字符串【/api/movie】。
3)这时候我们再通过交叉引用找到Encrypt的定义,可以看到下图所示的内容。这里是加密算法的核心逻辑,此处为大家简单分析一下该加密算法:
该方法的入参是【list0】,是调用者传入的参数,由图1可知,进入该方法的参数是一个长度为1的列表,内容就是一个字符串,即【/api/movie】。

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

二、JEB Decompiler如何分析多混淆技术
混淆技术是通过破坏代码语义、扰乱控制流或毫无意义的变量名称等操作增加逆向分析难度,主要类型包括名称混淆、字符串加密等,JEB Decompiler如何分析多混淆技术呢?
为大家推荐一个脚本,链接是https://github.com/S3cuRiTy-Er1C/Jebs,该脚本可以在看Smali时就能在【.source】(JEB中称为Debug Directive)字段中看到原始类名信息。如下图所示,但是该脚本存在一定的局限性,例如:不会反混淆内部类、字段值为空时不起作用,更多时候还是要靠自己的技术。

三、总结
以上就是JEB Decompiler如何分析多加密算法,JEB Decompiler如何分析多混淆技术的相关内容。本文以实际案例为大家演示了如何分析加密算法,关键是要找到加密算法的传入参数、加密方式等核心内容。找出这些核心内容后即可自己编写代码构造条件从而调用接口。本文还为大家介绍了JEB Decompiler如何分析多混淆技术的相关内容,希望对你有所帮助。