美文网首页
常用的命令

常用的命令

作者: 约你一起偷西瓜 | 来源:发表于2020-06-30 18:19 被阅读0次

    ADB

    - 查看FocusedActivity(顶部activity)
    adb shell dumpsys activity | findstr "mFoc" 
    adb shell dumpsys activity activities | findstr "cmp="  
    
    - 查看activity信息
    adb shell dumpsys activity---------------查看ActvityManagerService 所有信息
    adb shell dumpsys activity activities----------查看Activity组件信息
    adb shell dumpsys activity services-----------查看Service组件信息
    adb shell dumpsys activity providers----------产看ContentProvider组件信息
    adb shell dumpsys activity broadcasts--------查看BraodcastReceiver信息
    adb shell dumpsys activity intents--------------查看Intent信息
    adb shell dumpsys activity processes---------查看进程信息
    
    - 安装/卸载 APK
    # 安装APK
    adb install <apkfile> //比如:adb install baidu.apk
    # 指定平台安装APK
    adb install --abi armeabi-v7a <apkfile>
    # 保留数据和缓存文件,重新安装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
    # 卸载APK但保留数据和缓存文件
    adb uninstall -k <package> //比如:adb uninstall -k com.baidu.search
    
    - 带su执行
    //带su执行
    # 不是所有的机型都适用
    adb shell "su -c ./data/local/tmp/frida/frida_server"
    # 带su顺序执行多条命令
    adb shell "su -c ' cd /data/local/tmp/frida;ls -l'"
    
    - 查看信息(进程/内存/属性)
    // 查看信息
    # 查看设备cpu和内存占用情况
    adb shell top
    # 查看占用内存前6的app
    adb shell top -m 6
    # 刷新一次内存信息,然后返回:(adb shell top --help)
    adb shell top -n 1
    # 查询各进程内存使用情况
    adb shell procrank
    # 查看进程列表:
    adb shell ps
    # 查看指定进程状态:
    adb shell ps -x [PID]
    # 查看Android系统的属性
    adb shell prop
    # 查看当前内存占用
    adb shell cat /proc/meminfo
    
    - 查看信息(进程/内存/属性)
    # 启动应用程序:
    adb shell am
          -a: 指定action
          -D: enable debugging
          -N: enable native debugging
    eg:   adb shell am start -a android.intent.action.CALL -d tel:10086
          adb shell am start -a android.intent.action.VIEW -d http://google.com
          //打开微信
          adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI
          //打开支付宝
          adb shell am start com.eg.android.AlipayGphone/.AlipayLogin
    # 杀死一个进程:
    adb shell kill [pid]
          //杀死支付宝
          adb shell am force-stop com.eg.android.AlipayGphone
    
    - 事件模拟
    // 事件模拟
    # 点击事件
    adb shell input tap 500 500
    # home键
    adb shell input keyevent 3
    # 返回键
    adb shell input keyevent 4
    # 截图(保存到SDCard)
    adb shell /system/bin/screencap -p /sdcard/screenshot.png
    # 从SD卡导出到电脑
    adb pull /sdcard/screenshot.png /Users/lzy/Desktop
    
    # 录屏
    adb shell screenrecord /sdcard/test.mp4
    adb pull /sdcard/test.mp4 /Users/dhht/Desktop/test.mp4
    # 亮屏
    adb shell input keyevent 26
    # 上下滑动
    adb shell input swipe 700 2000 700 1000
    # 左右滑动
    adb shell input swipe 100 1000 1000 1000
    # 解锁
    adb shell input keyevent 82
    # 锁定
    adb shell input keyevent 26
    # 输入密码,并回车:
    adb shell input text 123456 && adb shell input keyevent 66
    # 屏幕长亮
    adb shell svc power stayon true      [true|false|usb|ac|wireless]
    # 打开wifi/关闭wifi
    adb shell svc wifi enable
    adb shell svc wifi disable
    # 打开蓝牙/关闭蓝牙
    adb shell service call bluetooth_manager 6
    adb shell service call bluetooth_manager 9
    //
    # 关机重启
    adb reboot
    adb shell reboot
    adb shell reboot -p
    //
    # 获取屏幕分辨率
    adb shell wm size
    adb shell wm density
    



    Frida

    //Frida相关使用
    # 修改默认端口
     ./fd_server -l 0.0.0.0:6666
    adb forward tcp:27042 tcp:6666
    # 查看进程pid
    frida-ps -U 
    # 跟踪native方法
    //-i 筛选函数名  -I 指定hook该库所有函数(frida-trace -U  -I linker com.lzy.t)
    frida-trace -U  -i dlopen <PkgName>
    # 跟踪native方法(Spawn)
    frida-trace -U  -i dlopen -f <PkgName>
    # 运行时候附加
    frida -U <PkgName> -l <ScriptPath> 
    # Spawn方式启动
    frida -U -f <PkgName> -l <ScriptPath> --no-pause
    # 附加顶层应用,可以使用lamda表达式
    frida -FU --runtime=v8 <ScriptPath> 
    
    
    详见 :https://github.com/frida/frida



    Objection

    - 启动
    # 直接Hook
    objection -g <packageName> explore
    # Spawn方式Hook
    objection -g packageName explore --startup-command 'android hooking watch xxx' 
    
    - Hook Java
    //Hook Java
    # Hook Java类(快速定位方法调用)
    android hooking watch class com.xxx.xxx
    # Hook Java方法
    android hooking watch class_method com.xxx.xxx.methodName --dump-args --dump-backtrace --dump-return
    # 设置返回值(只支持bool类型)
    android hooking set return_value com.xxx.xxx.methodName false
    # 列出所有Activity
    android hooking list activities
    # 获取栈顶Activity/Fragment
    android hooking get current_activity
    
    - 启动指定Activity
    android intent launch_activity com.xxx.xxx.MainActivity
    android intent launch_service com.xxx.xxx.MainService
    
    - 枚举activity/services/receivers/classes/class_methods
    android hooking list activities
    android hooking list services
    android hooking list receivers
    android hooking list classes
    android hooking list class_methods
    
    - Hook代码快捷生成
    //Hook代码快捷生成
    # 生成简洁的hook代码
    android hooking generate simple com.xiaojianbang.app.MainActivity
    # 生成详细的hook代码
    android hooking generate simple com.xiaojianbang.app.MainActivity
    
    - Memory
    memory list modules //枚举当前进程模块
    memory list exports [lib_name] //查看指定模块的导出函数
    memory list exports libart.so --json /root/libart.json //将结果保存到json文件中
    memory search --string --offsets-only //搜索内存
    
    - Root检测模拟
    # 尝试关闭app的root检测
    android root disable
    # 尝试模拟root环境
    android root simulate
    
    - Activity Heap (方法主动调用)
    //Activity Heap (方法主动调用)
    # 堆内存中搜索指定类的实例, 可以获取该类的实例id
    search instances search instances com.xx.xx.class
    # 直接调用指定实例下的方法
    android heap execute [ins_id] [func_name]
    # 自定义frida脚本, 执行实例的方法
    android heap execute [ins_id]
    
    - 内存漫游
    # 列出内存中所有的类
    android hooking list classes
    # 在内存中所有已加载的类中搜索包含特定关键词的类
    android hooking search classes [search_name] 
    # 在内存中所有已加载的方法中搜索包含特定关键词的方法
    android hooking search methods [search_name] 
    # 直接生成hook代码
    android hooking generate simple [class_name]
    
    - 任务管理器
    # 查看任务列表
    jobs list
    # 关闭任务
    jobs kill [task_id]
    
    - 关闭app的ssl校验
    android sslpinning disable
    
    - 监控系统剪贴板
    # 获取Android剪贴板服务上的句柄并每5秒轮询一次用于数据。 如果发现新数据,与之前的调查不同,则该数据将被转储到屏幕上。
    help android clipboard
    
    - 执行命令行
    help android shell_exec [command]
    
    详见 :https://github.com/sensepost/objection



    Dwarf

    # 直接Hook
    dwarf -t android 6094
    # Spawn方式Hook
    dwarf -t android <packageName>
    # ios android local
    dwarf -t android/ios/local
    
    详见 :https://github.com/iGio90/Dwarf



    jnitrace (JNI函数跟踪)

    # 基础使用
    jnitrace -l libxxx.so <packageName>
    
    # 显示详细的堆栈日志   -b <fuzzy|accurate|none>  默认accurate
    jnitrace -b fuzzy -l libnative-lib.so com.lzy.t
    
    # 启动模式    -m <spawn|attach>  默认spawn
    jnitrace -m attach -l libnative-lib.so com.lzy.t
    
    # 包含(include)-i <regex>  不包含(exclude)-e <regex>
    jnitrace -i NewStringUTF -e GetEnv libnative-lib.so com.lzy.t
    
    # -I 指定函数内的jni调用  -E 排除指定函数内的jni函数打印
    jnitrace -I JNI_Onload -E Java_com_lzy_t_MainActivity_test libnative-lib.so com.lzy.t
    
    # -o path/output.json 指定控制台文本保存到本地(注意 / 的使用)
    
    # -p path/to/script.js 指定jnitrace 启动前需要执行的js脚本
    # -a path/to/script.js 指定jnitrace 启动后需要执行的js脚本
    
    # --hide-data-用于减少控制台中显示的输出数量。此选项将隐藏显示为十六进制转储或字符串取消引用的其他数据。
    # --ignore-env -使用此选项将隐藏应用程序使用JNIEnv结构进行的所有调用。
    # --ignore-vm -使用此选项将隐藏应用程序使用JavaVM结构进行的所有调用
    
    
    详见 :https://github.com/chame1eon/jnitrace



    IDA调试SO

    # 调试模式启动APP
    adb shell am start -D -n 包名/类名
    # 启动IDA Server
    ./android_server -p23946   -p参数用来修改端口号(23946是默认端口号)
    # 开启端口转发
    adb forward tcp:23946 tcp:23946
    # 断点三项
    Suspend on process entry point
    Suspend on thread start/exit
    Suspend on library load/
    # 调试器连接(DDMS查看端口号)
    jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=端口号
    



    AS调试Smali

    //AS调试Smali
    # apktool反编译apk(d反编译,b回编译)
    apktool d xxx.apk
    # AS安装插件smalidea
    https://bitbucket.org/JesusFreke/smali/downloads/
    # 找到进程PID
    linux : adb shell ps | grep xxx
    windows : adb shell ps | findstr xxx
    # 转发控制权到JDWP指定的TCP端口
    adb forward tcp:8888 jdwp:xxxx<PID>
    # as中配置操作
    配置Remote指定端口8888
    # 最后Attach
    
    smalidea :https://wwe.lanzous.com/iZeH6enmdli



    JEB调试Smali

    1.apktool修改debuggable
    2.apk拖进JEB
    3.调试模式启动APK:adb shell am start -N -D com.xxx.xxx/.MainActivity
    4.JEB->调试器->开始->附加
    
    ------------- 快捷键 -------------
    
    Ctrl+B     设置/移除 断点
    Ctrl+R     运行到光标位置
    Ctrl+F6    步进
    F6         步过
    F7         跳出
    F8         运行
    
    ------------- jdwp -------------
    
    info                           : Display basic information about the debuggee
    libs|modules [name-filter]     : Display information about the target modules
    resume [tid]                   : Run or resume the target, a thread, or the default thread (tid 0)
    pause                          : Pause the target
    detach                         : Detach the target (if possible)
    kill|terminate                 : Kill the target (unstable)
    threads                        : List the process threads
    thread [tid]                   : Set or get the default thread
    step|stepi                     : Step "into" one instruction in the default thread
    stepo                          : Step "over" one instruction in the default thread
    stepu                          : Step "up"/"out" (run until return) in the default thread
    b|bp [address]                 : Set or list breakpoints
    bc [index]                     : Clear one or all breakpoints
    classes                        : List the classes loaded by the VM
    signature|sig [OPTION]... cid  : Information about a specific class
    fields [OPTION]... cid         : List the fields of a type
    methods [OPTION]... cid        : List the methods of a type
    call|invoke [OPTION]... cid method : invoke a method.
    read|get [OPTION]... objectId  : Read an object or array.
    set [OPTION]... objectId new_value : Set a method variable or parameter as a typed-value
    pull remotePath localPath      : adb-pull on steroid
    
    get v0:string
    
    

    相关文章

      网友评论

          本文标题:常用的命令

          本文链接:https://www.haomeiwen.com/subject/dqbxqktx.html