安卓逆向随笔(一)
APK结构:
目录名 | 作用 |
---|---|
assets目录 | 存放APK的静态资源文件,比如视频,音频,图片等 |
lib目录 | armeabi-v7a基本通用所有android设备,arm64-v8a只适用于64位的android设备,x86常见用于android模拟器,其目录下的.so文件是c或c++编译的动态链接库文件 |
META-INF目录 | 保存应用的签名信息,签名信息可以验证APK文件的完整性,相当于APK的身份证(验证文件是否又被修改) |
res目录 | res目录存放资源文件,包括图片,字符串等等,APK的脸蛋由他的layout文件设计 |
AndroidMainfest.xml文件 | APK的应用清单信息,它描述了应用的名字,版本,权限,引用的库文件等等信息 |
classes.dex文件 | classes.dex是java源码编译后生成的java字节码文件,APK运行的主要逻辑 |
resources.arsc文件 | resources.arsc是编译后的二进制资源文件,它是一个映射表,映射着资源和id,通过R文件中的id就可以找到对应的资源 |
应用双开及其原理
应用双开,同时在一个系统内运行两个完全相同的程序
方法 | 解释 |
---|---|
修改包名 | 骗手机说这是两个不同的应用,这样系统就会分配两个不同的运行和储存空间 |
修改Framework | 对于有系统修改权限的厂商,可以修改Framework来实现双开的目的,例如:小米自带多开 |
通过虚拟化技术实现 | 通过虚拟化应用各个层来实现,比如:平行空间。(个人理解就像是虚拟机) |
以插件机制运行 | 利用反射替换,动态代理,hook了系统的大部分与system—server进程通讯的函数,以此作为“欺上瞒下”的目的,欺骗系统“以为”只有一个apk在运行,瞒过插件让其“认为”自己已经安装。例如:VirtualApp |
汉化
应用内显示的文字等,翻译为中文。
基本上字符串都是在arsc里,建议一键汉化,然后再润色。少量没汉化到的字符串使用元素定位去逐个汉化。
AndroidManifest.xml
属性 | 定义 |
---|---|
versionCode | 版本号,主要用来更新,例如:12 |
versionName | 版本名,给用户看的,例如:1.2 |
package | 包名,例如:com.zj.52pj.demo |
uses-permission android:name=”” | 应用权限,例如:android.permission.INTERNET 代表网络权限 |
android:label=”@string/app_name” | 应用名称 |
android:icon=”@mipmap/ic_launcher” | 应用图标路径 |
android:debuggable=”true” | 应用是否开启debug权限 |
安卓逆向流程图:
本文教程来自于吾爱破解论坛《安卓逆向这档事》以及哔哩哔哩上传的视频,只作为本人学习笔记和分享交流使用
- 标题: 安卓逆向随笔(一)
- 作者: 耀鳞光翼
- 创建于 : 2023-04-09 00:18:32
- 更新于 : 2024-11-14 12:32:39
- 链接: https://blog.lightwing.top/2023/04/09/AndroidReverse/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论