品牌型号:联想拯救者R7000
系统:Windows 10专业版
软件版本:JEB 5.20.0.202411121942
JEB Decompiler可以用于逆向工程、代码分析或者漏洞检测等领域。作为一款反编译工具,反编译后怎么知道哪里是字符串,哪里是函数呢?本文将为大家介绍如何在JEB Decompiler中识别和分析函数,JEB Decompiler怎么识别和分析字符串的相关内容。
一、如何在JEB Decompiler中识别和分析函数
在反编译工作中,识别和分析函数是非常基础步骤,这需要大量的开发经验才能准确分析,程序中少不了函数,函数可以理解为一套操作逻辑,某个位置调用函数,就是执行函数中的功能代码,分析函数能帮助我们知道代码的执行逻辑、数据处理方式或者判断是否有安全漏洞。以下是JEB Decompiler中识别和分析函数的一些方法和技巧:
如何识别函数?
在Java中,函数和方法是同一个东西,C语言中普遍称函数,但是在Java代码中一般称方法。由于很多安卓App都是Java语言所开发的,所以称为方法比较符合Java的习惯,下文统一称为方法。
首先为大家介绍一下Java中的方法是什么格式。
下图是一个基本的Java方法,用来将两个数相加,并返回给调用者一个int整数。我们在使用JEB Decompiler反编译时,只需要找类似下面结构的代码块就是方法。
其次是怎么调用一个方法?
在Java中,我们一般使用【类名.方法名】进行调用,如下图所示,就是调用了add方法,并传入两个参数,拿到方法的返回结果交给result进行保存。
知道上文基础的Java方法组成结构和调用方法之后,我们就来看看反编译之后的Java方法长什么样。例如下图红色方框内的代码块,第三行中的【String s = Encrypt.encrypt(arrayList0);】结合上述本文介绍的Java中基本的方法结构,可以分析出:
(1)代码中存在一个名为【Encrypt】的类
(2)类中有一个名为【encrypt】的方法。
(3)该方法需要一个ArrayList参数。
(4)该方法的返回值是一个字符串。
对该方法进行交叉引用,可以找到下图的代码,对比上文介绍的基础Java方法结构,几乎相同,并且可以分析出entry方法的执行逻辑。例如下图的方法中,逻辑如下:
1、代码第一行,把一个表面是数字的东西加入到了list0,现在list0就有两部分内容,一个是【/api/movie】,另一串数字(感觉这一串数字是时间戳)。
2、代码第二行,将list0使用逗号拼接起来,然后调用shaEncrypt操作, shaEncrypt就是SHA1算法,返回一个字符串,名字是【s】
3、代码第三行又声明了一个ArrayList,把s和一串数字加进去。最后把arrayList0的内容使用逗号拼接起来,进行Base64编码。
二、JEB Decompiler怎么识别和分析字符串
接下来为大家分析JEB Decompiler怎么识别和分析字符串,分析字符串较为简单,首先我们需要知道:Java中的字符串变量用String对象接收。
例如下面的代码中,第一行声明了一个String类型的字符串,由于String是可变的,第二行增加了字符串长度,最终进行打印。
JEB Decompiler中的字符串也非常类似,还是上文图5中的代码,蓝色背景的一行,就是一个字符串,只是此处调用了方法,方法最终返回一个字符串,用String接收,命名为【s】。
三、总结
以上就是如何在JEB Decompiler中识别和分析函数,JEB Decompiler怎么识别和分析字符串的相关内容。使用JEB Decompiler做反编译需要一些基础的Java知识,例如:方法的格式、调用、字符串的创建等。然后结合开发经验,可以分析出某个功能的执行逻辑,即使源代码丢失,逆向分析后也可以成功调用Api。
署名:Hungry