品牌型号:联想拯救者R7000
系统:Windows 10专业版
软件版本:JEB 5.20.0.202411121942
在做开发时,如果我们要想拿到一个App发送的请求中包含哪些加密参数,就需要剖析本源,深入到App内部去找到这些加密参数的构造逻辑,理清这些逻辑之后,我们就能自己用代码实现App的功能。这就需要进行逆向操作,我们需要对App进行反编译,然后通过分析源码的逻辑找到对应的加密位置。JEB Decompiler就是一款反编译工具,本文将为大家介绍JEB Decompiler是干什么的,JEB反编译软件的主要功能有哪些的相关内容。
一、JEB Decompiler是干什么的
JEB Decompiler是一款反编译工具,可以用来反编译安卓APK。我们来用一个示例介绍JEB Decompiler的相关操作。
这里我们首先以一个App为例,我们使用JEB Decompiler对这个App进行逆向分析,最后模拟实现其中的加密逻辑。
这个App的功能就是,上拉滑动加载一些电影数据,界面如下:
下载JEB Decompiler后,并没有exe可执行程序。我们可以根据不同的系统,运行不同的脚本文件,例如:macOS可以双击【jeb_macos.sh】文件执行脚本,而Windows系统需要执行【jeb_wincon.bat】。在Windows系统中,如果启动出现病毒查杀,需要点击【继续执行】,或者通过cmd窗口运行bat文件。
打开JEB Decompiler之后,我们把apk文件直接拖拽到JEB Decompiler里面,经过一段时间处理后(大约几秒钟),JEB Decompiler就已经将代码反编译完成了,如图所示:
我们可以看到在左侧Bytecode部分就是反编译后的代码,在右侧显示的则是Smali代码(Smali是Android虚拟机的反汇编语言),通过Smali代码我们大致能够看出一些执行逻辑和数据操作等过程。
以上就是JEB Decompiler是干什么的内容,那么JEB Decompiler的主要功能有哪些呢?
二、JEB反编译软件的主要功能有哪些
接下来我就以【查找App刷新请求的加密参数位置】为例,为大家演示JEB Decompiler的主要功能。
1、通过API的一些标志字符串就可以找到请求入口,根据经验可以猜测接口中大概率包含【/api/movie】,那么我们自然就可以通过这个来查找,更准确的方法是通过抓包工具分析请求路径。根据下图抓包结果,我们可以发现有三个参数,分别为offset、limit还有token,其中token是一个非常长的加密字符串,我们也不好直观地推测其生成逻辑。
2、我们可以在JEB Decompiler里面打开查找窗口,查找【/api/movie】,如图所示:
3、找到对应的声明,这里其实就是声明了一个静态不可变的字符串,叫作indexPath。但这里是Smali代码,我们怎么去找到它的源码位置呢?
4、我们可以右键该字符串,选择【Decompile(解析)】选项,这时JEB Decompiler就可以帮我们定位到Java代码的声明处了。
5、现在我们便可以看到下图所示的页面,这里我们就能看到indexPath的原始声明,同时还看到了一个index的方法,包含三个参数offset、limit还有token,这参数和声明和抓包的API的请求URL格式是相同的。但是这个是一个接口声明,一定有某个类实现了这个接口。
6、顺着index方法来查询是什么类实现了这个index方法,在index方法上面右键选择【Cross-references(交叉引用)】,如图所示:
7、这里可以发现这里弹出了一个窗口,找到了对应的位置,如图所示:
8、选中它,点击【OK】,这时候就跳转到了index实现的位置了,如图所示:
9、此处有一个encrypt的方法,代表加密的意思,这时候我们再通过交叉引用找到Encrypt的定义,跳转到下图所示的位置:
10、这里我们分析一下,传入的参数就是list0,从上文分析可以知道,其就是一个长度为1的列表,内容就是一个字符串,即【/api/movie】。然后看逻辑:
(1)代码第一行,把一个表面是数字的东西加入到了list0,现在list0就有两部分内容,一个是【/api/movie】,另一串数字(感觉这一串数字是时间戳)。
(2)代码第二行,将list0使用逗号拼接起来,然后调用shaEncrypt操作, shaEncrypt就是SHA1算法,返回一个字符串,名字是【s】
(3)代码第三行又声明了一个ArrayList,把s和一串数字加进去。最后把arrayList0的内容使用逗号拼接起来,进行Base64编码。
现在整体的token加密的逻辑就理清楚了。
了解了基本的算法流程之后,我们可以用Python把这个流程实现出来,经过实际测试,上面提到的一串字符串确实为时间戳。代码和执行结果如下图所示:
三、总结
以上就是JEB Decompiler是干什么的,JEB反编译软件的主要功能有哪些的相关内容。JEB Decompiler是一款反编译工具,可以用于逆向。本文用一款非常简单的App为例,为大家演示了的JEB Decompiler是干什么的以及主要功能,希望本文对你有所帮助。
署名:Hungry