工具推荐 | GDA:中国首款现代交互式反编译器

VSole2022-03-31 22:49:20

简介(新版)

GDA 是一个完全用 C++ 编写的 Dalvik 字节码反编译器。与其他应用反编译器不同,GDA 不依赖于 Java VM,支持 APK、DEX、ODEX、OAT、JAR、AAR 和 CLASS 文件。

项目地址:https://github.com/charles2gan/GDA-android-reversing-Tool

简介:http://www.gda.wiki:9090/introducation.php

一、主窗口

打开GDA,将我们要分析的APK文件拖到软件UI上:

1.目标文件的基本信息;
2.DEX文件使用的API
3.查看DEX中的所有字符串;
4.查看所有方法使用的所有字符串;
5.提取DEX文件中的所有URL(Pro版本);
6.查看AndroidManifest文件;
7.可编辑的十六进制查看器;
8.恶意行为检测;
9.漏洞扫描(专业版);
10.隐私泄漏扫描(专业版);
11.展开权限,查看权限所属的模块/方法;
12.点击进入入口函数(方法);
13.连接Android设备进行内存转储;
14.搜索和访问历史记录,双击可查看;
15.目标文件中各元素的比例分布;
16.DEX头,点击“DexClass*”项显示相应头,每个色块代表不同的区域头。当鼠标在其上移动时,将显示提示。在偏移区域中单击鼠标右键并跳转到参考位置;
17.加壳的识别;
18.点击代码中的相关对象时,显示该对象的索引值;
19.点击代码中的相关对象时,会显示该对象的包名;
20.单击代码中的相关对象时,将显示该对象的名称。

二、快捷键

快捷键说明

快捷键描述F5

切换java和smali代码

F

通过数据流分析跟踪参数和返回值

X

交叉引用、定位调用者(字符串、类、方法、字段、Smali、Java)

Esc/<-/Backspace

返回上次访问

->

转至下一次访问

G

通过输入偏移量跳转到某个地方

N

重命名变量/方法/类名

S

按给定字符串搜索所有元素

C

注释。只支持Java代码

DoubleClick

双击method/str/field/class名称查看对象

M

将光标置于 Smali 代码行并按“M”键编辑指令

UP\bigtriangleup

按“向上”键访问树控件中的向上方法

Down\bigtriangledown

按“向下”键访问树控件中的向下方法

D

转储方法的二进制数据,仅支持Smali模式

Enter

编辑框修改生效

H

以十六进制显示数据

Ctrl+H

弹出搜索历史窗口

Ctrl+A

全选

Ctrl+C

复制

Ctrl+V

粘贴,仅适用于可编辑框

Ctrl+X

Ctrl+F

找出当前窗口的字符串

Ctrl+S

将修改保存到 GDA 数据库文件中

三、Android恶意软件静态分析示例

本节通过一个恶意软件示例文件介绍GDA的基本用法。

A.总结分析

总结分析就是对整个APK做一个简单的了解。下面是一个Android恶意软件的例子来说明GDA的用法。

  1. 首先,我们将恶意软件样本拖入 GDA。然后我们就可以看到它的基本信息了。

我们可以根据呈现的信息判断APK是否被加壳。如果 APK 未加壳,则 DexHeader 下方不会显示任何内容。

  1. 然后我们可以检查我们的APK的权限。正如我们在基础信息的底部看到的,APK 启用了很多危险的权限e.g. READ_SMS, SEND_SMS, READ_CALL_LOG, READ_PHONE_STATE等等。

  1. 通过点击工具栏中红色标记的按钮,我们可以查看APK的签名信息。

  1. 此外,AndroidManifest树形控件顶部的 可以引导您分析Activity, Service, Receive和AndroidManifest.xml 中的其他配置信息。

  1. 接下来,我们可以点击树框中的MalScan 来扫描 APK 的恶意行为。下图显示恶意软件有很多恶意操作。

如果我们想进一步分析方法会做什么,可以双击method@xxxxxx查看方法代码,比如点击"#Sending message:”下面的“[method@000197]: com.itcast.cn112.a.a” 。该方法下的代码将会如图显示。

当然,如果我们要分析 Smali 代码,只需按F5

从图中我们可以看出,这个方法会访问短信。

此外,我们还可以看到 DEX 使用的字符串和 API。AllStrings将显示 DEX 中的所有字符串,并将AppStrings通过方法代码显示引用的字符串。实际上,AppStrings 是一个更有用的字符串。string@区域还支持交叉引用(X)、编辑(右键单击)和双击操作。

AllAPI的method@区域支持交叉引用功能。

B、JAVA伪代码分析

这里主要展示一些java代码中的交互操作。下面简单介绍一下GDA的基本使用。

  1. 从入口点开始,点击入口按钮查看入口方法。

如果反编译内容太大,需要在当前代码中搜索感兴趣的关键字,可以按ctr+f启动搜索框。

现在,如果我们要标记已识别的方法、字段或类。我们可以重命名它们。例如,双击a.d()将显示下图。很明显,它是用来记录信息的,所以我们将方法名重命名为'log',GDA会升级所有引用的位置。

然后,我们以相同的方式重命名所有可识别的方法。

如果我们想要做进一步的描述,可以使用注释(C)。

当我们需要分析当前方法的调用者时。我们可以通过交叉引用来查看它们。

当我们想知道在哪里使用字符串时。您可以将鼠标放在双引号之间并按 X 以查看参考方法。

至此,基本的使用已经完成,如有问题,欢迎留言。并欢迎报告错误。

四、辅助工具

1. XML 解码器

自行实现的解码功能可以绕过Anti-decoding技术:

2. 算法工具

该工具支持以下算法:

哈希算法:md2 md4 md5 sha sha1 sha224 sha256 sha384 sha512

对称加密:des idea rc2 rc4 rc4-40 rc2-40 rc2-64 bf cast5 aes (128 192 256),模式如ecb cbc ofb cfb,其他模式如(cfb1 cfb8)

非对称加密:RSA

编码算法:base62、base64 3.

alg-tool 接受 3 种类型的输入作为密钥、明文和密文。简单来说,1.我们可以直接输入字符串作为源数据,也可以2.输入“hex:”如下图所示的二进制数据。3.我们可以双击文本框弹出文件对话框,然后选择一个文件作为输入。

3.Dumper

更多详情,请访问以下链接:https : //zhuanlan.zhihu.com/p/26341224

4.搜索工具(S)

字符串函数apk
本作品采用《CC 协议》,转载必须注明作者和本文链接
二进制程序分析
2021-09-25 17:18:46
分析恶意软件的第一步是收集二进制程序在主机上执行的行为事件,研究人员根据这些行为大体形成一个思路来描述恶意软件的功能。 这包含应用释放或者从互联网下下载的文件,写入什么样的注册表、访问了什么网络地址,修改读写本地的什么文件等等。那么研究人员通过行为会确定恶意样本的类型。通常类型如下:
多次测试后发现确实都相等,确定就是标准的Base64编码。发现与之前的111极为相似。
写一个android中so文件反混淆的系列文章,目前这是第三篇。根据其他人的分析可知,libDexHelper.so是指令抽取的实现,libdexjni.so是VMP的实现。在android so文件攻防实战-百度加固免费版libbaiduprotect.so反混淆中我们是交叉引用拿到加密后的字符串和它对应的解密函数的表然后frida主动调用得到的解密后的字符串,但是在这里这个方法就不太好用了。
大厂基本为了程序的安全,会使用大量内联SVC去调用系统函数,以此来保护程序的安全。如何实现SVC指令的IO重定向,成为最大的问题。内核态是当Linux需要处理文件,或者进行中断IO等操作的时候就会进入内核态。当arm系列cpu发现svc指令的时候,就会陷入中断,简称0x80中断。
bang加固简单分析
2022-07-31 16:59:14
dex加固,可以使用frida-dexdump可以直接dump下来。
渗透测试Tips
2022-04-13 06:38:50
知己知彼,百战不殆1、如果提示缺少参数,如{msg:params error},可尝使用字典模糊测试构造参数,进一步攻击。
在本期的PHA家族精选系列中,我们介绍了Bread,这是一个大规模的计费欺诈家族。于2017年初首次开始追踪Bread(也称为Joker),确定专门为短信(SMS)欺诈而设计的应用程序。随着Play商店推出新政策以及Google Play P...
绿城杯-WriteUp
2021-09-30 06:44:41
Pwnnull解题思路说是null 其实是off by one,基于uaf那题,这里直接试着打2.23,用的libc也是和uaf那题一样的#?ezuaf解题思路远程doublefree泄漏cfree后三位,配合mallochook地址通过libcdatabase确定2.23,然后打og#?
Android 逆向 apkrev
2021-09-27 16:16:28
看雪论坛作者ID:逆时针向左
VSole
网络安全专家