搭建Android开发环境 & adb命令的学习


搭建Android开发环境

1.下载最新的sdk包

去官网找下载链接:http://developer.android.com/sdk/index.html

64位版本:https://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip

32位版本:https://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.zip

有一个小技巧就是,使用百度网盘的“离线下载”,然后“新建链接任务”,就可以快速将文件保存至网盘,然后再从网盘中下载,速度飞快!(同理可以运用到其它的一些被墙掉的下载任务中)

2.解压

然后进入其中的eclipse文件夹,点击其中的“eclipse.exe”运行Eclipse;

点击Windows选项下的“Android SDK Manager”,在创建模拟的Android环境之前,需要先安装对应的Packages,这里给出一些提示,是关于在下载、安装过程中可能会碰到的问题的:

(1)修改hosts文件以提升下载速度(添加文章末尾给出的hosts列表然后刷新一下DNS即可)

(2)清除cache,否则可能还是会出现错误or不出现可用的packages

3.创建一个AndroidVirtualDevice并打开

进入Eclipse界面,点击Windows选项下的“Android Virtual Device Manager”,然后一步步按照提示进行操作即可创建一个avd(提示:多分配一些资源,否则到时候启动了会比较卡,影响学习进度和心情)(上一步中多安装一些packages,这一步选择的余地就多一些,可模拟的场景/环境也会多些)

4.从命令行打开已创建的AndroidVirtualDevice(用于监听流量进行测试)

从命令行打开之前创建的avd,并设置HTTP代理,方便在主机上使用Fiddler进行流量监听:

emulator -avd hi -http-proxy http://localhost:8888

使用命令安装在主机中的apk文件到avd中:

adb install “D:downLodasweixin540android480.apk”

附1:hosts列表

203.208.46.146 www.google.com

74.125.113.121 developer.android.com

203.208.46.146 dl.google.com

203.208.46.146 dl-ssl.google.com

附2:一些环境的提前准备

=====

安装jdk

我的电脑,属性,高级,环境变量,在下面添加三项:

  • 变量名:CLASSPATH
  • 变量值:.;C:JDK的安装目录libdt.jar;c:JDK的安装目录libtools.jar
  • 变量名:JAVA_HOME
  • 变量值:JDK的安装目录
  • 变量名:PATH
  • 变量值:JDK的安装目录bin

参考
http://hi.baidu.com/ultimatesniper/item/33f1d6f8201d18ca0dd1c8bb

=====

添加系统路径

D:\adt-bundle-windows-x86_64-20140702eclipse
D:\adt-bundle-windows-x86_64-20140702sdktools
D:\adt-bundle-windows-x86_64-20140702sdkplatform-tools

=====

在开启模拟器的情况下(emulator -avd hi)可以执行下面的命令进行adb相关命令的学习:

android list targets

android list avd

adb get-serialno

adb devices

adb bugreport

adb get-state

adb status-window

从电脑上发送文件到设备(adb push)

D:\downLoads>adb push weixin540android480.apk /data/app
1004 KB/s (24157708 bytes in 23.478s)

从设备上下载文件到电脑(adb pull)

D:\downLoads>adb pull /data/app/ApiDemos.apk .
1044 KB/s (4764083 bytes in 4.452s)

adb shell命令

# date

# cat /proc/cpuinfo

# cat /proc/meminfo

# df

# ps

# logcat -b radio

root@generic:/ # sqlite3
sqlite3
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .help
.help
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail ON|OFF           Stop after hitting an error.  Default OFF
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
                         If TABLE specified, only dump tables matching
                         LIKE pattern TABLE.
.echo ON|OFF           Turn command echo on or off
.exit                  Exit this program
.explain ?ON|OFF?      Turn output mode suitable for EXPLAIN on or off.
                         With no args, it turns EXPLAIN on.
.header(s) ON|OFF      Turn display of headers on or off
.help                  Show this message
.import FILE TABLE     Import data from FILE into TABLE
.indices ?TABLE?       Show names of all indices
                         If TABLE specified, only show indices for tables
                         matching LIKE pattern TABLE.
.log FILE|off          Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?     Set output mode where MODE is one of:
                         csv      Comma-separated values
                         column   Left-aligned columns.  (See .width)
                         html     HTML <table> code
                         insert   SQL insert statements for TABLE
                         line     One value per line
                         list     Values delimited by .separator string
                         tabs     Tab-separated values
                         tcl      TCL list elements
.nullvalue STRING      Print STRING in place of NULL values
.output FILENAME       Send output to FILENAME
.output stdout         Send output to the screen
.prompt MAIN CONTINUE  Replace the standard prompts
.quit                  Exit this program
.read FILENAME         Execute SQL in FILENAME
.restore ?DB? FILE     Restore content of DB (default "main") from FILE
.schema ?TABLE?        Show the CREATE statements
                         If TABLE specified, only show tables matching
                         LIKE pattern TABLE.
.separator STRING      Change separator used by output mode and .import
.show                  Show the current values for various settings
.stats ON|OFF          Turn stats on or off
.tables ?TABLE?        List names of tables
                         If TABLE specified, only list tables matching
                         LIKE pattern TABLE.
.timeout MS            Try opening locked tables for MS milliseconds
.vfsname ?AUX?         Print the name of the VFS stack
.width NUM1 NUM2 ...   Set column widths for "column" mode
.timer ON|OFF          Turn the CPU timer measurement on or off
sqlite>

补充一个刚看到的Android逆向分析的工具:ZjDroid,相关说明:Android动态逆向分析工具ZjDroid–脱壳神器 – Android手机病毒分析及研究


 

更多的Android ADB命令学习
获取序列号:
adb get-serialno

查看连接计算机的设备:
adb devices

重启机器:
adb reboot

重启到bootloader,即刷机模式:
adb reboot bootloader

重启到recovery,即恢复模式:
adb reboot recovery

查看log:
adb logcat

终止adb服务进程:
adb kill-server

重启adb服务进程:
adb start-server

获取机器MAC地址:
adb shell  cat /sys/class/net/wlan0/address

获取CPU序列号:
adb shell cat /proc/cpuinfo

安装APK:
adb install <apkfile> //比如:adb install baidu.apk

保留数据和缓存文件,重新安装apk:
adb install -r <apkfile> //比如:adb install -r baidu.apk

安装apk到sd卡:
adb install -s <apkfile> // 比如:adb install -s baidu.apk

卸载APK:
adb uninstall <package> //比如:adb uninstall com.baidu.search

卸载app但保留数据和缓存文件:
adb uninstall -k <package> //比如:adb uninstall -k com.baidu.search

启动应用:
adb shell am start -n <package_name>/.<activity_class_name>

查看设备cpu和内存占用情况:
adb shell top

查看占用内存前6的app:
adb shell top -m 6

刷新一次内存信息,然后返回:
adb shell top -n 1

查询各进程内存使用情况:
adb shell procrank

杀死一个进程:
adb shell kill [pid]

查看进程列表:
adb shell ps

查看指定进程状态:
adb shell ps -x [PID]

查看后台services信息:
adb shell service list

查看当前内存占用:
adb shell cat /proc/meminfo

查看IO内存分区:
adb shell cat /proc/iomem

将system分区重新挂载为可读写分区:
adb remount

从本地复制文件到设备:
adb push <local> <remote>

从设备复制文件到本地:
adb pull <remote>  <local>

列出目录下的文件和文件夹,等同于dos中的dir命令:
adb shell ls

进入文件夹,等同于dos中的cd 命令:
adb shell cd <folder>

重命名文件:
adb shell rename path/oldfilename path/newfilename

删除system/avi.apk:
adb shell rm /system/avi.apk

删除文件夹及其下面所有文件:
adb shell rm -r <folder>

移动文件:
adb shell mv path/file newpath/file

设置文件权限:
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf

新建文件夹:
adb shell mkdir path/foldelname

查看文件内容:
adb shell cat <file>

查看wifi密码:
adb shell cat /data/misc/wifi/*.conf

清除log缓存:
adb logcat -c

查看bug报告:
adb bugreport

获取设备名称:
adb shell cat /system/build.prop

查看ADB帮助:
adb help

跑monkey:
adb shell monkey -v -p your.package.name 500
参考链接:

《 “搭建Android开发环境 & adb命令的学习” 》 有 12 条评论

  1. Android白盒审计方面的资料/工具

    360火线
    http://magic.360.cn/zh/document.html
    http://magic.360.cn/zh/article_zh.html
    `
    find-sec-bug
    static sanitizer

    火线团队与信息安全部门深度合作,特别定制了适用于360公司产品的安卓APP安全检查规则。目前火线扫描规则共覆盖六大类:
    1. APP安全检查
    2. 代码规范检查
    3. 内存泄露检查
    4. 日志输出检查
    5. 空指针检查
    6. 多线程检查
    `

    Tool to look for several security related Android application vulnerabilities
    https://github.com/linkedin/qark

  2. Android 逆向分析笔记
    https://lichao890427.github.io/wiki/android%20reverse%20engineering/
    `
    文章目录

    概述
     分析步骤
      通用逆向分析步骤
      安卓上APK调试步骤
      安卓上linux程序调试步骤
     分析工具
      APK改之理
      JD-GUI
      JEB
      Dex2jar工具集
      Apktool反编译&打包工具
     常见文件格式
      Apk(使用aapt解析xml)
      Dex
      Jar
      Odex
      Aar
      So
     工具转换图
     Android设备上重要目录
    Java层
    常用工具
     adb
     aapt
     am & pm
    有源码调试APK
     Android studio
     Adb wifi
    无源码调试apk
     使用AndroidStudio和Apktool工具调试
     使用jdb调试
      查看参数
      设置源码从而进行逐行调试
      行断点
      初始断点
      调试命令
     无源码调试dex
    Linux层
     常用工具
      Gdbserver
      Strace
     有源码so调试
      Ndk-gdb
      Gdb-Gdbserver
     无源码调试So
      使用Arm版Gdb在移动端直接调试
      IDA调试
      Gdb-Gdbserver
      Gikdbg
       调试so
     调试Android上Linux程序
      技巧:如何在so入口下断点?
    Java层/Linux层联合调试
     有源码联合调试
     无源码联合调试
      操作步骤
      最简单的gdb中,断在加载so时刻的方法
     Android linux内核层调试
    使用Hook
     常用Hook/Inject工具简介
    实例:360手机卫士卸载后弹窗分析过程
     现象
     文件注入
      分析日志
      定位关键代码
      结论
    GDB调试
     反汇编一段地址
     表达式计算
     查看寄存器
     查看栈参数
     查看局部变量
     查看内存
     修改内存
     断点
      一次断点
      条件/线程断点
      观察断点
      范围断点
      硬件断点
      拦截当前函数退出
      捕获断点
      跟踪断点
    查看调用栈
    流程控制
     反向调试
    显示当前加载模块
    强制加载模块
    替换当前调试模块
    进程转储
    进程空间
    由地址获对应的符号
    查找符号
    执行外部命令
    显示线程
    打印c++对象虚表
    `

  3. ws-scrcpy – 用浏览器远程控制 Android 手机,实现云手机效果
    https://www.appinn.com/ws-scrcpy/

    Web client prototype for scrcpy.
    https://github.com/NetrisTV/ws-scrcpy

    scrcpy – Display and control your Android device
    https://github.com/Genymobile/scrcpy

    Android云真机解决方案
    https://shuibo.me/2020/08/09/android-cloud-phone.html
    `
    在平台搭建过程中,对比调研了现有一些比较知名的云真机服务平台,如下:

    * 360开测
    * 阿里MQC
    * UC岩鼠
    * TestBird
    * 腾讯WeTest
    * 腾讯优测
    * Testin云测
    * 百度MTC

    这些平台基本上都是基于开源框架 STF 或 scrcpy 搭建的远程安卓真机控制。
    `

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注