书籍
Android应用安全防护和逆向分析
Android软件安全与逆向分析
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