jadx 源码怎么编译-手把手教你使用Ghidra反向通信应用

下载后,打开Linux终端,然后安装依赖组件:

sudo apt install openjdk-11-jdk

解压下载的Ghidra包,打开Ghidra文件夹并运行以下命令,Ghidra-GUI将打开:

./ghidraRun

Ghidra 打开后,我们就可以开始了!

使用 Ghidra 逆向工程 Android APK 文件

接下来,我们将反编译一个APK文件并获取Java源代码。

右图展示了整个反编译过程:

此时需要考虑以下事项:

大多数编程语言都可以有类库和编译器,例如Python既可以作为编译型程序执行,也可以作为解释型语言执行。

大多数命令行工具、PowerShell 和 UnixShell 也是解释性语言。

中间语言翻译器(原语/编译器)通常将源代码直接翻译为机器代码。 然而,翻译器和反汇编器可以将代码生成为汇编语言。

在 Ghidra 中导出 APK

步骤1:在Ghidra-GUI中,创建项目目录,选择file>newproject>non-sharedproject,然后输入项目目录路径和项目名称。

步骤2:导出名为diva-beta.apk的APK文件。 选择“文件”>“导入文件”>diva-beta.apk,然后选择“批量导入”所有文件和目录jadx 源码怎么编译,或者单击“文件”>“批量导入”。 然后将 DepthLimit 设置为更高的值,然后单击重新扫描来搜索类文件:

请注意,diva-beta.apk 将被提取为两个文件:cleasses.dex 和 lib。

Ghidra 将这两个文件解压到其编译的 java 文件(.class)中,并编译一个动态链接的共享对象库(.so 文件)。

反汇编和反编译导出的Batch批处理文件

双击任意编译文件或共享库文件,就会弹出分析选项。 我们选择全部并执行分析。

这里,我打开hardcode2Activity.class文件,分析其反汇编和反编译数据。

反编译器——显示源代码;

反汇编器——显示汇编代码;

ProgramTrees - 突出显示代码部分;

SymbolTrees——按以下类别显示程序中的符号:外部、函数、标签、类和命名空间;

DataTypeManager - 显示 3 种数据类型:“内置”、“用户定义”和“派生”。 它允许用户定位、组织和应用数据类型;

ConsoleScripting——显示脚本的输出;

分析导出的批处理文件

在ProgramTrees中,任何源代码都可以双击以反编译和反汇编模式查看和剖析它们。 虽然对于反编译的代码jadx 源码怎么编译,我仍然使用jadx-gui(一个“dex-to-JAVA”反编译工具)来查看源代码,但是这里我们可以看到DivaJni类的对象引用已经被创建(实例化)了,然后它将用于确定是否授予访问权限或拒绝访问权限。

请注意,在 Ghidra 的“DataTypeManager”下,我们可以看到 HardcodeActivity.class 包含两个类文件。 这也意味着 hardcode2activity 使用两个类文件来执行活动。 从反编译源码中我们还可以看到它实例化了Divajni类。

然后,我们打开Divajni.class,下面反编译的源码显示,这里加载了一个名为divajni的库:

现在,是时候打开 lib 目录中的 libdivajni.so 了。

在菜单栏上,选择“搜索”>“ForStrings”>“checkpascalstrings”。 我们可以在顶部发现两个可疑字符串:

双击其中一根字符串,该工具将引导您找到其位置。 至关重要的是,我被授予了访问 olsdfgad;lh 的权限。

这个硬编码的供应商密钥可以在 libdivajni.so/.rodata 文件中找到。

总结

是的,就是这么简单! 希望您能从中得到一些启发,并将其应用到您日常的逆向工程或安全分析活动中。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 jadx 源码怎么编译-手把手教你使用Ghidra反向通信应用 https://www.wkzy.net/game/169763.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务