0%

安卓常用工具

  • Hook

Adb

normal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 进入bootloader界面
adb reboot bootloader
# 列出当前安卓设备
adb devices
# 进入安卓linux命令行
adb shell
adb push <filename> <address>
adb pull <filename> <address>
adb install <apkname>
# 连接设备
adb connect ip
# 断开连接
adb kill-server
# 端口转发
adb forward tcp:23946 tcp:23946
# 查看顶层页面信息
adb shell dumpsys activity top
adb shell dumpsys activity top | grep ACTIVITY
# 查看app使用的数据库信息
adb shell dbinfo
# 截屏
adb shell screencap -p <path>
# 文本框输入
adb shell input text <text>
# 查询url
adb shell content query --uri ...
# 抓取app错误日志
adb shell logcat *:E --pid `pidof com.XX.XX`> /data/local/tmp/1.log
# 手机截屏
adb shell screencap -p /data/local/tmp/1.png
# 查询数据库
adb shell content query --uri content://contacts/people
# 查看应用详细信息
adb shell dumpsys package com.tencent.mm
# 手机录屏
adb shell screenrecord /data/local/tmp/1.mp4、
#备份
adb backup all -f D:\abcd.ab pagename

联网受限问题

1
2
3
adb shell settings put global captive_portal_http_url http://captive.v2ex.co/generate_204

adb shell settings put global captive_portal_https_url https://captive.v2ex.co/generate_204

emulator-5554 offline排查思路

1.重启adb

1
2
adb kill-server
adb start-server

2.查看端口占用

1
netstat -ano | findstr "5554"

3.查看adb路径

  • 用模拟器自带adb试一下

4.查看开发者模式调试选项

  • 但是理论来讲要是这个有问题应该是直接找不到模拟器

5.开始重启

  • 重启模拟器
  • 重启电脑

6.unknown

  • 我不理解,但是开机后点某一块儿没反应了,重建了个模拟器就好了

Am

1
2
3
4
5
6
7
8
9
10
11
12
# debug模式启动apk
am start-activity -D -N [包名/.MainActiviy] debug
# 启动网页
am start -a android.intent.action.VIEW -d https://www.baidu.com
# 拨打电话
am start -a android.intent.action.CALL -d tel:10086
# 发送广播
am broadcast -a <广播动作>
# 启动服务
am startservice -n/-a XXX
# 强制停止app
am force-stop com.android.example

Pm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 列出所有已知权限
pm list permissions
# 查看当前连接设备或者虚拟机的所有包
pm list packages
# 输出系统的包
pm list packages -s
# 输出所有第三方包
pm list packages -3
# 输出包和包相关联的文件(安装路径)
pm list packages -f
# 输出启用的包
pm list packages -e
# 输出禁用的包
pm list packages -d
# 输出包和未安装包信息
pm list packages -u
# 隐藏app桌面图标[root]
pm hide com.tencent.mm
# 显示已隐藏app图标
pm unhide com.tencent.mm
# app权限授予和取消
pm grant com.tencent.mm android.permission.CAMERA
pm revoke com.tencent.mm android.permission.CAMERA
# 清除app缓存
pm clear com.tencent.mm
# 查找apk安装路径[结合pull提取app]
pm path com.tencent.mm

fastboot

1
2
3
# bootloader锁
fastboot oem unlock
fastboot oem lock

apk签名检测

用法: jarsigner [选项] jar-file 别名 jarsigner -verify [选项] jar-file [别名…] jarsigner -version

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
[-keystore <url>]           密钥库位置

[-storepass <口令>] 用于密钥库完整性的口令

[-storetype <类型>] 密钥库类型

[-keypass <口令>] 私有密钥的口令 (如果不同)

[-certchain <文件>] 替代证书链文件的名称

[-sigfile <文件>] .SF/.DSA 文件的名称

[-signedjar <文件>] 已签名的 JAR 文件的名称

[-digestalg <算法>] 摘要算法的名称

[-sigalg <算法>] 签名算法的名称

[-verify] 验证已签名的 JAR 文件

[-version] 输出程序版本

[-verbose[:suboptions]] 签名/验证时输出详细信息。
子选项可以是 all, grouped 或 summary

[-certs] 输出详细信息和验证时显示 证书

[-revCheck] 启用证书撤消检查

[-tsa <url>] 时间戳颁发机构的位置

[-tsacert <别名>] 时间戳颁发机构的公共密钥 证书

[-tsapolicyid <oid>] 时间戳颁发机构的 TSAPolicyID

[-tsadigestalg <算法>] 时间戳请求中的摘要数据的 算法

[-altsigner <class>] 替代签名机制的类名
(该选项已过时,在将来的 发行版中将被删除。)

[-altsignerpath <pathlist>] 替代签名机制的位置
(该选项已过时,在将来的 发行版中将被删除。)

[-internalsf] 在签名块内包含 .SF 文件

[-sectionsonly] 不计算整个清单的散列

[-protected] 密钥库具有受保护验证路径

[-providerName <名称>] 提供方名称

[-addprovider <名称> 按名称 (例如 SunPKCS11) 添加安全提供方
[-providerArg <参数>]] ... 配置 -addprovider 的参数

[-providerClass <类> 按全限定类名添加安全提供方
[-providerArg <参数>]] ... 配置 -providerClass 的参数

[-providerPath <list>] 提供方类路径

[-strict] 将警告视为错误

[-conf <url>] 指定预配置的选项文件

[-? -h --help] 输出此帮助消息