安卓逆向基础(动态调试,静态调试)

本文深入探讨了安卓逆向工程的基础知识,包括apk文件结构、打包流程和安装过程。讲解了虚拟机原理,特别是Java与Dalvik虚拟机。详细介绍了如何修改apk的名称和图标以实现应用分身,以及去除广告的技巧。同时,文章涵盖了JAVA学习,如数据类型、接口继承和多态,并展示了Java实战破解内购的案例。还详细讨论了四大组件(Activity、Service、BroadcastReceiver、Content Provider)的工作原理及Activity的生命周期。最后,分享了Davik指令集和Smali代码修改,以及如何快速定位关键代码和使用log插桩进行调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

apk文件结构

assest文件 存在需打包到安卓程序的静态资源文件

res文件 程序的资源文件(每一个文件都会有资源ID)

lib文件 当前APP所用到的so文件(利用C/C++去实现的

META-INF 签名文件

MAINFEST.MF 记录哈希算法值

RSA 开发者私钥的签名文件 SF

AndroidManifest.xml 配置文件

classes.dex 可执行文件

resources.arsc 资源索引表 用来描述具有ID值的资源配置信息

apk打包流程

apk安装流程

解压到 data/app 中 解析apk的资源文件 解析AndroidManifest.xml文件 同时在data/data创建应用数据目录 在dalvik-cache中保存dex 将Manifest中的四大组件解析 发送广播

虚拟机

java虚拟机 java字节码 基于栈结构

Java虚拟机 - > Java字节码

JNI_GetDefaultJavaVMInitArgs 获取虚拟机初始化参数

JNI_GreatJavaVM 创建虚拟机实例

JNI_GetCreatedJavaVMs 获取创建的实例

Dalvik虚拟机

jit机制 /system/bin/dexopt

compiler

Art虚拟机

aot机制 /system/bin/dex2oat

系统启动 /sytem/app /data/app /sytem/framework

修改apk的名称和图标

AndroidManifest文件打开之后 “:

package 包名

permission 权限

第一个application 是程序入口

icon 图标

label 名字

name 入口界面

provider 发布者签名

activity 活动界面

搜索在original-签名文件夹 搜/icon.png /是精准搜索

修改包名实现分身

在AndroidManifest.xml中头部找到package在字符串尾部添加一个数组(如6)

然后搜索<provider在所有provider的字符串后加入数字一个

随后保存 编译 即可实现双开

去广告

删除user-permission中的NETWORK_STATE 和WIFI_STATE

只留下android.permission.INTERNET

Activity中看到 MAIN 和 LAUNCHER在一起 就断定 这个Activity就是程序入口活动

打开cmd 输入

adb devices (可以多几次)

adb shell dumpsys activity top 找到进入时活动名

然后找到广告的活动名

然后将主界面活动末尾替换为LAUNCHER

删除广告活动的 <intent-filter>

JAVA学习

JAVA变量和数据类型

变量:为了保存数据(全局变量也叫成员变量)

基本数据类型

整数型byte short int long

浮点型float double

字符型char

布尔型boolean

修饰符

访问修饰符

default 默认 在同一包内可见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值