Android逆向概述

书籍

Android应用安全防护和逆向分析

image

Android软件安全与逆向分析

image

Android总览

开发环境

推荐google官方的Android studio,基于Jetbrains的IDEA开发,配置Android SDK依赖良好的网络环境,看运气

adb用法

首先安装好手机驱动,开启开发者模式,使用允许usb调试

adb devices //列出设备id
adb -s sid shell //指明设备进入shell
adb -s sid install xxx.apk //指明设备安装apk
adb -s sid shell pm list packages // 列出包名
adb -s sid shell pm path com.tence01.mm //找到相应包名apk路径
adb -s sid uninstall com.xxx.xxx //指明设备卸载apk
adb -s sid pull /data/app/com.xxx.xxx.apk /apks/x.apk //指明设备,取出apk
adb shell am start -D
adb shell pm
adb shell ps
adb shell dalvikvm -classpath helloworld.dex HelloWorld
adb forward tcp:8080 tcp:8000

android架构

  • linux
  • runtime——dalvik
  • androidsdk应用程序框架 /data/data/com 沙箱
  • app // readelf -S/-l libdvm.so

apk包文件结构

  • assets/
    资源文件夹,资源可任意存放,通过文件名来引用资源,文件不会被编译。
  • res/
    资源文件夹,资源需放在相应的子目录中,子目录只能有一层,且必须是预定义的。资源要通过R文件来引用,目录中的资源子目录除了raw外,其他资源目录中的资源文件都会被编译。
  • META-INF/
    工程属性文件夹,存放一些工程信息以及资源校验hash。
  • lib/
    静态链接库so存放文件夹。
  • AndroidManifest.xml
    工程基础配置属性文件。
  • classes.dex
    Dalvik字节码,DVM的可执行执行文件。程序的主体二进制文件。很多class集合成一个dex
graph LR
.java-->.Class
.java-->.dex
.dex-->.smali
.dex-->.java
  • resources.arsc
    res目录下资源的索引文件。

apk签名

Android逆向工具

apktool

https://ibotpeaches.github.io/Apktool/

反编译dex为smali,以及反编译被编译过得资源文件。
$ apktool -d xxx.apk

dex2jar

https://sourceforge.net/projects/dex2jar/

反编译dex为java
$ dex2jar.bat classes.dex

JEB

https://www.52pojie.cn/forum.php?mod=viewthread&tid=556950

网上找到2.2.7破解版,需要配置jdk为1.8.0_31以下版本,否则会闪退。JEB集成了上述工具的功能,并且反编译结果较好。

Androidkiller

链接:http://pan.baidu.com/s/1c1Ogeg4 密码:1nr6
参考:https://www.52pojie.cn/thread-650395-1-1.html

可以修改smali文件,改好后重新打包成新的apk

论坛精选

移动安全区2017年系列教程及优秀/精华帖分类汇总
https://www.52pojie.cn/thread-686210-1-1.html

吾爱破解安卓逆向入门教程–导航帖
https://www.52pojie.cn/thread-408645-1-1.html