JEB Decompiler中文网站 > 使用教程 > 如何在JEB Decompiler中识别和分析函数 JEB Decompiler怎么识别和分析字符串
如何在JEB Decompiler中识别和分析函数 JEB Decompiler怎么识别和分析字符串
发布时间:2024/12/24 09:32:55

品牌型号:联想拯救者R7000

系统:Windows 10专业版

软件版本:JEB 5.20.0.202411121942

JEB Decompiler可以用于逆向工程、代码分析或者漏洞检测等领域。作为一款反编译工具,反编译后怎么知道哪里是字符串,哪里是函数呢?本文将为大家介绍如何在JEB Decompiler中识别和分析函数,JEB Decompiler怎么识别和分析字符串的相关内容。

一、如何在JEB Decompiler中识别和分析函数

在反编译工作中,识别和分析函数是非常基础步骤,这需要大量的开发经验才能准确分析,程序中少不了函数,函数可以理解为一套操作逻辑,某个位置调用函数,就是执行函数中的功能代码,分析函数能帮助我们知道代码的执行逻辑、数据处理方式或者判断是否有安全漏洞。以下是JEB Decompiler中识别和分析函数的一些方法和技巧:

如何识别函数?

在Java中,函数和方法是同一个东西,C语言中普遍称函数,但是在Java代码中一般称方法。由于很多安卓App都是Java语言所开发的,所以称为方法比较符合Java的习惯,下文统一称为方法。

方法与函数的区别(截图来自阿里云)
图1:方法与函数的区别(截图来自阿里云)

首先为大家介绍一下Java中的方法是什么格式。

下图是一个基本的Java方法,用来将两个数相加,并返回给调用者一个int整数。我们在使用JEB Decompiler反编译时,只需要找类似下面结构的代码块就是方法。

Java中的方法
图2:Java中的方法

其次是怎么调用一个方法?

在Java中,我们一般使用【类名.方法名】进行调用,如下图所示,就是调用了add方法,并传入两个参数,拿到方法的返回结果交给result进行保存。

调用方法
图3:调用方法

知道上文基础的Java方法组成结构和调用方法之后,我们就来看看反编译之后的Java方法长什么样。例如下图红色方框内的代码块,第三行中的【String s = Encrypt.encrypt(arrayList0);】结合上述本文介绍的Java中基本的方法结构,可以分析出:

(1)代码中存在一个名为【Encrypt】的类

(2)类中有一个名为【encrypt】的方法。

(3)该方法需要一个ArrayList参数。

(4)该方法的返回值是一个字符串。

反编译代码
图4:反编译代码

对该方法进行交叉引用,可以找到下图的代码,对比上文介绍的基础Java方法结构,几乎相同,并且可以分析出entry方法的执行逻辑。例如下图的方法中,逻辑如下:

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

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

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

分析函数
图5:分析函数

二、JEB Decompiler怎么识别和分析字符串

接下来为大家分析JEB Decompiler怎么识别和分析字符串,分析字符串较为简单,首先我们需要知道:Java中的字符串变量用String对象接收。

例如下面的代码中,第一行声明了一个String类型的字符串,由于String是可变的,第二行增加了字符串长度,最终进行打印。

Java中的字符串
图6:Java中的字符串

JEB Decompiler中的字符串也非常类似,还是上文图5中的代码,蓝色背景的一行,就是一个字符串,只是此处调用了方法,方法最终返回一个字符串,用String接收,命名为【s】。

反编译字符串
图7:反编译字符串

三、总结

以上就是如何在JEB Decompiler中识别和分析函数,JEB Decompiler怎么识别和分析字符串的相关内容。使用JEB Decompiler做反编译需要一些基础的Java知识,例如:方法的格式、调用、字符串的创建等。然后结合开发经验,可以分析出某个功能的执行逻辑,即使源代码丢失,逆向分析后也可以成功调用Api。

 

署名:Hungry

 

读者也访问过这里:
135 2431 0251