品牌型号:联想拯救者R7000
系统:Windows 10专业版
软件版本:JEB 5.20.0.202411121942
JEB,全称JEB Decompiler,主要用于逆向分析安装App(APK)安装包。在反编译时,我们需要能够知道哪个是常量,哪个是变量,这是非常基本的分析,如果知道Java基础知识,可以轻松分辨哪些是变量,哪些是常量。本文将介绍JEB反编译软件怎么识别和分析常量,JEB软件怎么分析变量的相关内容,帮助用户更好地使用JEB进行深入的反编译工作。
一、JEB反编译软件怎么识别和分析常量
常量是直接在代码中“写死”的数值、字符串或其他的固定值,不可随意改变。Java程序中,常量还包括静态常量、成员常量、局部常量等,用【final】修饰。下图分别定义了不同的常量值,如果要修改会提示无法修改,给出的修改建议就是把【final】删除,删除后就不是常量,可以修改。

反编译APK后,准确找到常量可以帮助我们分析加密算法,例如下面这个案例:
这是某个App反编译后的部分代码,这是一个接口,接口中定义了一个String类型的常量(final修饰)。

但是上图中的Java代码并没有直接引用常量值,我认为代码的【@GET】部分完全可以改写成引用常量值。虽然这种写法非常多此一举,此处目的是为大家演示引用常量值。

二、JEB软件怎么分析变量
【变量】相比于【常量】,【变量】是可以被修改的。逆向分析时,正确识别变量,可以知道程序在执行时如何修改数据,从而推测出程序的真实功能。
首先看一下Java中的变量,下图分别定义了不同的常量值,可以在代码中做修改,并不会提示错误。

接下来看看JEB软件中怎么分析变量,如下图所示,这段代码把二进制数组转换为十六进制字符串,代码中定义了一个局部变量【s】,初始化是空值,代码中对字符串【s】做了拼接、补零等操作。

另外,在实际使用中,我发现JEB解析出的java代码,会把变量值直接【转化】,例如【时间戳】这个数值,每次获取时间戳都是在变化的,在使用时,如果用变量接收了时间戳,并在代码中使用,JEB会把变量直接转换成类似常量的数值或者字符串。例如下面这个例子:

在代码中的第一行和倒数第二行,分别往不同的集合中添加了一个字符串,仔细观察这个字符串不难发现,这是一个时间戳。正常情况下,极少有程序员会莫名其妙写一串毫无意义的数字用来做加密。
我们对这串字符串进行解析,可以切换到如下内容,我们看到代码的执行流程,在代码复现时,需要参考该步骤拿到时间戳的字符串。

三、总结
以上就是JEB反编译软件怎么识别和分析常量,JEB软件怎么分析变量的相关内容。文章介绍了常量和变量的基本概念,并简单介绍了Java中定义变量、常量的代码。最后分别介绍了JEB中识别分析常量和变量的方法,我们可以发现,JEB反编译之后就是Java代码,如果你懂Java,识别和分析变量非常简单,希望本文对你有所帮助。
署名:Hungry