adb
1 2 3 4 5 6 7 8 9 10 11
| adb shell adb root 需要超级adbd权限 adb remount 将系统挂载为可读写 adb kill-server 停止adb服务 adb start-server 启动adb服务 adb devices 显示连接的设备 adb install xxx.apk 安装apk adb install -r xxx.apk 覆盖安装apk adb uninstall 包名 卸载apk adb push xxx /目标目录 将文件推送到手机 adb pull /手机上的文件路径 xxx 将文件拉取到本机
|
包名的获取
1 2 3
| 1.反编译查看AndroidManifest.xml,manifest根节点的方法有packagename 2.adb shell里查看进程ps ps -A 3.手机上打开目标app(确保在最前面显示),然后手机shell里运行dumpsys window windows | grep mFocusedApp
|
app界面控件的查看
作用
原生方式开发的app,使用Java+c++开发,加密使用的是Java和c++
H5开发的app,使用Webview控件加载网页,加密使用的是js,这种情况下jadx反编译不出来
app自动化测试,需要知道控件的id,或者说需要定位到控件
使用uiautomatorviewer.bat查看
Android SDK根目录下的\tools\bin
使用appium查看
1 2 3 4 5 6
| 安装之后点击Edit Configuration,配置SDK和JAVA_HOME 安装Java SDK 配置 Android SDK 设置ANDROID_HOME环境变量,然后启动,点击放大镜按钮,安装Inspector工具 在Inspector工具中找到Capability Builder,配置platformName platformVersion deviceName appPackage(app的包名) appActivity 新版的Inspector需要指定Remote Path为/wd/hub
|
反制截屏
1 2
| activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
|
在activity
中的onCreate
方法中调用getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
就行
当然实现上不止这一种写法,可以用反射,或者放到so层去,这样的话像getWindow
这种函数名都能加密,但是仍然可以Hook,因为底层调用是不变的,直接Hook最终的getWindow方法
logcat使用
1 2 3 4 5 6 7 8 9 10 11
| adb logcat 查看所有日志 adb logcat -c 清除日志 adb logcat -g 显示存储日志的缓冲区大小(日志是存储在手机上,adb logcat是把日志读取出来) adb logcat -G 256M 重新设定缓冲区 adb logcat -v color 设置带颜色显示 过滤日志 根据tag过滤日志 adb logcat -s 字符串 根据pid过滤日志 ps -A | grep 包名 adb logcat | findstr pid
|
apk基本结构
1 2 3 4 5 6 7 8 9 10 11
| assets 资源文件 res 资源文件 lib 各种平台下的使用的对应的so文件 META-INF 签名文件 resources.arsc 打包后的资源 classes.dex 源代码 AndroidManifest.xml 源代码 app反编译就是反编译的dex文件(java层反编译)
data/data目录 存放用户apk数据的目录,每个apk都有自己的目录,以包名命名,每个app只能访问自己的目录,除非root
|