首页 网络安全

1. andriod

Android逆向流程图

1.1 adb

adb是google官方提供的命令行工具,用于连接真机和模拟器,只需要打开USB调试,就可以使用adb连接手机,adb主要的功能是查看连接的手机,打开一个shell,查看日志,上传和下载等
常见命令:

adb devices              # 查看连接的手机或模拟器
adb install <APK路径>       #安装APK
adb uninstall <package>  # 卸载APP  
adb shell                # 打开shell
adb logcat          #查看日志
adb push xxx/xxx/tmp     # 上传文件

1.2 APK文件格式

.
|——AndroidManifest.xml    #APK的文件属性
|——META_INF            #编译过程自动生成的文件夹
|——assets               #原封不动的打包到APK里,例如解密密钥, 加密后的密文
|——classes.dex          #存放Dalvik字节码的DEX文件,用编辑器打开则会乱码
|——libs              # 包含Native层所需的Lib库,一般为libxxx.so,类似Linux库文件
|——res               #存放与资源相关的文件,如位图
|——resources.arsc       #存放APK所使用的资源的名字,ID,类型等信息,打开则乱码

2. Dalvik层逆向分析

目前主流的DEX文件反编译工具为BakSmali和Dedexer,两种在语法上很类似

2.1 使用BakSmalli工具反编译

BakSmali使用p命名法,简洁明了

2.2 寄存器

  • 每个寄存器都是32位的,支持任何类型,最多使用65536和寄存器(2^16)
  • Dalvik虚拟机中的寄存器有两种表示方法-v命名法和p命名法
  • .locals描述该函数使用的局部变量个数
  • .param描述函数参数变量

2.3 类型

语法含义语法含义
Vvoid,只用于返回值类型Jlong
ZbooleanFfloat
BbyteDdouble
SshortLJava类型
Cchar[数组类型
Iint--

2.4 方法

2.5 指令特点

  1. 返回指令
  2. 方法调用指令
  3. 跳转指令
  4. ...

2.6 静态分析

逆向APK第一步就是对APK文件进行反编译,生成BakSmali格式的代码或者直接生成Java代码,随后才能读懂程序逻辑,分析攻击面

使用apktool反编译APK

apktool是一款优秀的apk文件反编译工具,能够将apk解压缩,将其中的DEX文件转化为BakSmali代码,将resources.arsc文件转为XML等可阅读格式等,是反编译的首选工具,此外apktool还整合了Smali,BakSmaliApktool工具,支持对修改之后bakSmali代码重新打包,并签名

反编译

apktool d 6176cfc5-d473-4453-a000-29e480ace634.apk

可以看到当前文件夹多了一个
6176cfc5-d473-4453-a000-29e480ace634文件夹
编译后的结果都在这个文件夹里面

文件结构

.
|——AndroidManifest.xml
|——apktool.yml
|——original
|——res
|——smali

public.xml文件在res/values文件夹中

重新打包

apktool b dbug_smali

参考

Android逆向入门流程




文章评论