安卓逆向(简略)

本文介绍了Android应用逆向分析的过程,包括 APK 文件结构、Smali 代码理解、动态库(SO文件)的加载与分析。通过Androidkiller工具,演示了如何静态分析APK,查找关键函数,以及利用JD-GUI进行反编译,理解加密算法。最终,通过IDA工具深入分析SO文件,揭示解题关键步骤。

例题

以攻防世界moblie easy-so为例

链接:https://pan.baidu.com/s/1Rd6XHnaewK4HCPyQEwATIQ 提取码:jcc0

运行app

拿到apk之后 当然是先安装到我们的安卓虚拟机上

这里我用win11自带的安卓子系统直接安装到了物理机上
在这里插入图片描述

可以看到有文本输入框和check机制

随意输入数值进行检测试试
在这里插入图片描述

不出所料验证失败
我们可以猜测如果我们输入的数值如果是正确的话 应该会输出 验证成功
大部分的check机制 是将你的输入与内置字符串进行比较

然后输出正确或者错误的结果 就像这道例题一样

Androidkiller

将文件拖入到Androidkiller中进行静态分析
在这里插入图片描述

这里选否即可

在工程管理中就可以看到我们想要的信息
在这里插入图片描述

所涉及的文件需要了解apk的文件结构

Apk 文件结构

APK 文件也是一种 ZIP 文件。因此,我们可以使用解压 zip 的工具来对其进行解压。一个典型的 APK 文件的结构如下图所示。其中,关于每一部分的介绍如下
在这里插入图片描述

AndroidManifest.xml

  • 该文件主要用于声明应用程序的名称,组件,权限等基本信息。

class.dex

  • 该文件是 dalvik 虚拟机对应的可执行文件,包含应用程序的可执行代码。
  • resource.arsc该文件主要是应用程序编译后的二进制资源以及资源位置与资源 id 之间的映射关系,如字符串。
  • assets该文件夹一般用于包含应用程序的原始资源文件,例如字体和音乐文件。程序在运行的时候,可以通过 API 获取这些信息。
  • lib/lib 目录下主要用于存储通过 JNI(Java Native Interface)机制使用的本地库文件,并且会按照其支持的架构,分别创建对应的子目录。
  • res/该目录主要包含了 Android 应用引用的资源,并且会按照资源类型进行存储,如图片,动画,菜单等。主要还有一个 value 文件夹,包含了各类属性资源
    • colors.xml→颜色资源
      dimens.xml—> 尺寸资源
      strings—> 字符串资源
      styles.xml→样式资源

META-INF/类似于 JAR 文件,APK 文件中也包含了 META-INF 目录,用于存放代码签名等文件,以便于用来确保 APK 文件不会被人随意修改。

Smali

介绍

在执行 Android Java 层的代码时,其实就是 Dalvik(ART) 虚拟机(使用 C 或 C++ 代码实现)在解析 Dalvik 字节码,从而模拟程序的执行过程。
自然,Dalvik 字节码晦涩难懂,研究人员们给出了 Dalvik 字节码的一种助记方式:smali 语法。通过一些工具(如 apktool),我们可以把已有的 dex 文件转化为若干个 smali 文件(一般而言,一个 smali 文件对应着一个类),然后进行阅读。对于不同的工具来

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值