JEB Decompiler中文网站 > 新手入门 > JEB Decompiler是干什么的 JEB反编译软件的主要功能有哪些
JEB Decompiler是干什么的 JEB反编译软件的主要功能有哪些
发布时间:2024/12/24 09:34:23

品牌型号:联想拯救者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的功能就是,上拉滑动加载一些电影数据,界面如下:

App
图1:App

下载JEB Decompiler后,并没有exe可执行程序。我们可以根据不同的系统,运行不同的脚本文件,例如:macOS可以双击【jeb_macos.sh】文件执行脚本,而Windows系统需要执行【jeb_wincon.bat】。在Windows系统中,如果启动出现病毒查杀,需要点击【继续执行】,或者通过cmd窗口运行bat文件。

JEB Decompiler
图2:JEB Decompiler

打开JEB Decompiler之后,我们把apk文件直接拖拽到JEB Decompiler里面,经过一段时间处理后(大约几秒钟),JEB Decompiler就已经将代码反编译完成了,如图所示:

JEB Decompiler
图3:JEB Decompiler

我们可以看到在左侧Bytecode部分就是反编译后的代码,在右侧显示的则是Smali代码(Smali是Android虚拟机的反汇编语言),通过Smali代码我们大致能够看出一些执行逻辑和数据操作等过程。

以上就是JEB Decompiler是干什么的内容,那么JEB Decompiler的主要功能有哪些呢?

二、JEB反编译软件的主要功能有哪些

接下来我就以【查找App刷新请求的加密参数位置】为例,为大家演示JEB Decompiler的主要功能。

1、通过API的一些标志字符串就可以找到请求入口,根据经验可以猜测接口中大概率包含【/api/movie】,那么我们自然就可以通过这个来查找,更准确的方法是通过抓包工具分析请求路径。根据下图抓包结果,我们可以发现有三个参数,分别为offset、limit还有token,其中token是一个非常长的加密字符串,我们也不好直观地推测其生成逻辑。

抓包
图4:抓包

2、我们可以在JEB Decompiler里面打开查找窗口,查找【/api/movie】,如图所示:

搜索关键字
图5:搜索关键字

3、找到对应的声明,这里其实就是声明了一个静态不可变的字符串,叫作indexPath。但这里是Smali代码,我们怎么去找到它的源码位置呢?

indexPath
图6:indexPath

4、我们可以右键该字符串,选择【Decompile(解析)】选项,这时JEB Decompiler就可以帮我们定位到Java代码的声明处了。

解析
图7:解析

5、现在我们便可以看到下图所示的页面,这里我们就能看到indexPath的原始声明,同时还看到了一个index的方法,包含三个参数offset、limit还有token,这参数和声明和抓包的API的请求URL格式是相同的。但是这个是一个接口声明,一定有某个类实现了这个接口。

接口
图8:接口

6、顺着index方法来查询是什么类实现了这个index方法,在index方法上面右键选择【Cross-references(交叉引用)】,如图所示:

交叉引用
图9:交叉引用

7、这里可以发现这里弹出了一个窗口,找到了对应的位置,如图所示:

交叉引用
图10:交叉引用

8、选中它,点击【OK】,这时候就跳转到了index实现的位置了,如图所示:

接口实现
图11:接口实现

9、此处有一个encrypt的方法,代表加密的意思,这时候我们再通过交叉引用找到Encrypt的定义,跳转到下图所示的位置:

加密逻辑
图12:加密逻辑

10、这里我们分析一下,传入的参数就是list0,从上文分析可以知道,其就是一个长度为1的列表,内容就是一个字符串,即【/api/movie】。然后看逻辑:

(1)代码第一行,把一个表面是数字的东西加入到了list0,现在list0就有两部分内容,一个是【/api/movie】,另一串数字(感觉这一串数字是时间戳)。

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

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

现在整体的token加密的逻辑就理清楚了。

了解了基本的算法流程之后,我们可以用Python把这个流程实现出来,经过实际测试,上面提到的一串字符串确实为时间戳。代码和执行结果如下图所示:

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

三、总结

以上就是JEB Decompiler是干什么的,JEB反编译软件的主要功能有哪些的相关内容。JEB Decompiler是一款反编译工具,可以用于逆向。本文用一款非常简单的App为例,为大家演示了的JEB Decompiler是干什么的以及主要功能,希望本文对你有所帮助。

 

 

署名:Hungry

 

135 2431 0251