android 常用命令记录
1.adb shell dumpsys meminfo
查看指定金正名称或者进程id对应的内存信息,这个一般情况我们都是用来获取内存相关信息的
例子:adb shell dumpsys meminfo [packageName/PID]
adb shell dumpsys meminfo com.tencent.mm
115881 kB: 112332 kB: com.tencent.mm (pid 26335 / activities)
87806 kB: 63520 kB: com.tencent.mm (pid 24519)
2.adb shell dumpsys dbinfo com.temcent.mm
查看指定报名应用的数据库信息
3.adb install -r [apk]
安装apk软件,-r替换掉原有的,覆盖安装
4.adb uninstall [apk]
卸载apk软件
5.adb shell screencap
截取屏幕
例子:adb shell screencap -p /mnt/sdcard/1.png
5.adb shell screenrecord
录制屏幕
6.adb shell input text [文本内容]
输入文本内容
例子:adb shell input text ‘Hello world’
这个命令也可以模拟物理按键,虚拟键盘,滑动,滚动等事件。
7.adb forward
设备的端口转发
adb forward [远程端协议:端口号] [设备端协议:端口号]
ida调试的时候会经常用到
8.adb jdwp
查看设备中可以被调试的应用程序进程号
9.adb logcat
查看当前日志信息
adb shell logcat |grep com.temcemt.mm
10.adb shell pm clear [packagename]
清空应用数据
11.am start -n [packagename/packagename.acitivity]
启动对应的acitivty
加入-D 参数可以使用debug方式启动
12.aapt 获取apk信息
apt dump xmltree demo.apk AndroidManifest.xml >1.txt
通过命令,把获取到信息重定向到1.txt文件里面
13 .dexdump
dexdump [dex文件名]
查看dex文件的详细信息
14.cat /proc/[pid]/maps
使用cat命令查看对应pid的内存映射信息,比如加载了哪些so文件,dex文件等等
15.cat /proc/[pid]/status
查看进程对应的状态信息,例如 TracerPid
16.获取当前端口号信息
cat /proc/[pid]/net/tcp | tcp6 | udp | udp6
17.odex反编译成smali
java -jar baksmali.jar x services.odex
反编译odex的过程中会报很多错误,原因都是缺少依赖,缺少什么依赖,我们就将它从手机pull出来,并放在 services.odex同级目录下,等到不缺依赖的时候,反编译也就能完成了。
18.smali转成Dex
java -jar smali.jar as out/ -a 28 -o services.dex
19.dex2oat工具将dex转换成odex
adb push services.dex /data/local/tmp/services.dex
adb shell
export ANDROID_DATA=/data
export ANDROID_ROOT=/system
dex2oat --dex-file=/data/local/tmp/services.dex --oat-file=/data/local/tmp/services.odex --instruction-set=arm64 --runtime-arg -Xms64m --runtime-arg -Xmx128m
20.readelf 使用
readelf -h hello.o 获取elf文件头信息
ELF 头:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
类别: ELF64
数据: 2 补码,小端序 (little endian)
Version: 1 (current)
OS/ABI: UNIX - System V
ABI 版本: 0
类型: REL (可重定位文件)
系统架构: Advanced Micro Devices X86-64
版本: 0x1
入口点地址: 0x0
程序头起点: 0 (bytes into file)
Start of section headers: 64 (bytes into file)
标志: 0x0
Size of this header: 64 (bytes)
Size of program headers: 0 (bytes)
Number of program headers: 0
Size of section headers: 64 (bytes)
Number of section headers: 7
Section header string table index: 3
readelf -l hello.so 查看程序段头信息
Elf 文件类型为 DYN (共享目标文件)
Entry point 0x0
There are 8 program headers, starting at offset 64
程序头:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
PHDR 0x0000000000000040 0x0000000000000040 0x0000000000000040
0x00000000000001c0 0x00000000000001c0 R 0x8
LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x000000000000e204 0x000000000000e204 R E 0x10000
LOAD 0x000000000000fcf0 0x000000000001fcf0 0x000000000001fcf0
0x0000000000000bd0 0x0000000000001308 RW 0x10000
DYNAMIC 0x000000000000fd08 0x000000000001fd08 0x000000000001fd08
0x0000000000000250 0x0000000000000250 RW 0x8
NOTE 0x0000000000000200 0x0000000000000200 0x0000000000000200
0x0000000000000020 0x0000000000000020 R 0x4
GNU_EH_FRAME 0x000000000000def8 0x000000000000def8 0x000000000000def8
0x000000000000030c 0x000000000000030c R 0x4
GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 RW 0x10
GNU_RELRO 0x000000000000fcf0 0x000000000001fcf0 0x000000000001fcf0
0x0000000000000310 0x0000000000000310 RW 0x8
Section to Segment mapping:
段节...
00
01 .note.gnu.build-id .dynsym .dynstr .gnu.hash .hash .gnu.version .gnu.version_d .gnu.version_r .rela.dyn .rela.plt .plt .text .rodata .eh_frame .eh_frame_hdr
02 .fini_array .init_array .dynamic .got .got.plt .data .bss
03 .dynamic
04 .note.gnu.build-id
05 .eh_frame_hdr
06
07 .fini_array .init_array .dynamic .got .got.plt
readelf -a hello.so 查看全部信息
21.chmod命令
9 8 7 6 5 4 3 2 1 0
从左到右分别为9-0
第9位表示文件类型,可以设置的值为p,d,l,s,c,b和-
p表示命名管道文件
d表示目录
l表示符号链接文件
s表示socket文件
c表示字符设备文件
b表示块设备文件
-表示普通文件
第86 位,53位,2~0位分别表示文件所有者的权限,同组用户的权限,其他用户权限,取值位rwx
r表示读,可以读取文件内容,对应数字是4
w表示写,可以修改文件内容,对应的数字是2
x表示可以执行,可运行这个程序,对应的数字是1
chmod u=rwx,g=r,o=x filename
u代表所有者,g代表组用户,o代表其他用户
22.aapt dump AndroidManifest.xml 文件内容
aapt dump xmltree applock.apk AndroidManifest.xml > /home/jack/xml.txt
23.使用signapk.jar签名
java -jar signapk.jar textkey.x509.pem testkey.pk8 debug.apk debug.sig.apk
pk8是私钥文件
x509.pem是含有公钥的文件