adb 命令的使用 | smlia基本语法 | APK加载流程 | app加载流程

adb 命令的使用

先通过usb或者wifi连接真机,推荐用usb
# 安卓设备列表
adb devices
adb devices 显示device unauthorized
adb kill-server
adb start-server
# 进入安卓shell
adb shell
# 安卓日志
adb logcat
adb logcat -s keyword
#把文件推送进安卓设备
adb push
#打印AndroidManifest.xml
#adb shell dumpsys activity top
#adb shell dumpsys package packagename
adb install XXX.apk
adb uninstall packagename
#拉取安卓文件到本地
adb pull android-path local-path
#推送本地文件到安卓
adb push local-path android-path
adb shell pm clear package_name
网易模拟器 adb connect 127.0.0.1:7555

smlia基本语法

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

# smali常用语法
.field private isFlag:z  定义变量
.method  方法
.parameter  方法参数
.prologue  方法开始
.line 12  此方法位于第12行
invoke-super  调用父函数
const/high16  v0, 0x7fo3  把0x7fo3赋值给v0
invoke-direct  调用函数
return-void  函数返回void
.end method  函数结束
new-instance  创建实例
iput-object  对象赋值
iget-object  调用对象
invoke-static  调用静态函数

条件跳转分支:
"if-eq vA, vB, :cond_**"   如果vA等于vB则跳转到:cond_**
"if-ne vA, vB, :cond_**"   如果vA不等于vB则跳转到:cond_**
"if-lt vA, vB, :cond_**"    如果vA小于vB则跳转到:cond_**
"if-ge vA, vB, :cond_**"   如果vA大于等于vB则跳转到:cond_**
"if-gt vA, vB, :cond_**"   如果vA大于vB则跳转到:cond_**
"if-le vA, vB, :cond_**"    如果vA小于等于vB则跳转到:cond_**
"if-eqz vA, :cond_**"   如果vA等于0则跳转到:cond_**
"if-nez vA, :cond_**"   如果vA不等于0则跳转到:cond_**
"if-ltz vA, :cond_**"    如果vA小于0则跳转到:cond_**
"if-gez vA, :cond_**"   如果vA大于等于0则跳转到:cond_**
"if-gtz vA, :cond_**"   如果vA大于0则跳转到:cond_**
"if-lez vA, :cond_**"    如果vA小于等于0则跳转到:cond_**

APK加载流程

Davlivk虚拟机(安卓里处理dex的虚拟机)加载dex文件
Java层Dex加载流程:
BootClassLoader —> PathClassLoader ----> DexClassLoader(通常在这步hook)
Native层(java层框架的底层和硬件进行交互,C写的)Dex加载流程:
libdvm.so (是Davlivk虚拟机里一个很重要的文件 编译 system.img)
OpenDexFileNative(libdvm.so里一个很重要的做解析加载的函数)

点击图标后,app加载流程

在这里插入图片描述

(PS:首先application实现的方法是attachBaseContext,后面才是onCreate)

APP四大组件

 1、Activity:
 一个Activity通常就是一个界面
 <activity android:name="">
 <intent-filter>
 <action android:name="android.intent.action.MAIN"/>
 <category android:name="android.intent.category.LAUNCHER"/>
 </intent-filter>
 </activity>
 2、Service:
 后台服务,播放音乐,数据处理等
 3、Broadcase receiver
 异步接收广播
 4、Content provider:
 内容共享

参考资料

smali https://blog.csdn.net/lpohvbe/article/details/7981386
smali https://www.cnblogs.com/lee0oo0/p/3728271.html

猜你喜欢

转载自blog.csdn.net/m0_50685012/article/details/113553238