本文参考并拷贝了网上很多人的文章,仅作为个人思路总结。由于环境搭建复杂,步骤繁多,因此制作本文章,留以查看。

    如想详细了解adb命令,可直接在目录中点击进入1.4.2 adb命令总结。

    如想了解(逍遥)模拟器上运行drozer agent,与电脑drozer的连接步骤,可直接点击二、连接。

    如有侵权,请联系,我将主动删除。

drozer安装与使用总结(含adb命令总结)

  • 一、环境的安装
    • 1.1 电脑下载安装依赖
      • 1.1.1 jdk1.7
      • 1.1.2 python2.7.15
      • 1.1.3 逍遥模拟器
    • 1.2 电脑下载安装drozer
    • 1.3 在模拟器上安装手机drozer agent
    • 1.4 adb管理工具
      • 1.4.1 配置及说明
      • 1.4.2 adb命令总结
        • a、查看应用列表
        • b、安装apk
        • c、卸载apk
        • d、清除应用数据与缓存命令
        • e、Android四大组件相关命令
        • f、日志相关命令
        • g、查看设备情况
        • h、修改设置
        • i、实用功能
        • j、查看进程
  • 二、连接过程
    • 1、查看连接设备
    • 2、端口转发
    • 3、开启drozer控制台
  • 三、drozer使用
    • 3.1 通过app.package.list模块获取要检测的app的包名
    • 3.2 使用app.package.info模块查看apk基本信息
    • 3.3 使用app.package.attacksurface模块识别攻击面
    • 3.4 使用app.activity.info模块查看activity组件信息
    • 3.5 使用app.broadcast.info模块查看暴露的广播组件接口
    • 3.6 使用app.provider.info模块查看content provider(数据提供接口)组件信息
    • 3.7 使用app.service.info模块查看service组件信息
    • 3.8 文件操作

一、环境的安装

1.1 电脑下载安装依赖

1.1.1 jdk1.7

    安装jdk1.7(我之前安装的为1.8,也可以用)。Java是安卓的主要开发语言,与手机交互时使用。jdk安装、环境变量配置可参考链接链接https://www.cnblogs.com/lsdb/p/6497816.html。

    用户变量下:

 编缉Path变量在最后添加:;C:\Program Files\Java\jdk1.8.0_131\bin

    系统变量下:

 新建JAVA_HOME变量:C:\Program Files\Java\jdk1.8.0_131新建CLASSPATH变量:C:\Program Files\Java\jdk1.8.0_131\lib

1.1.2 python2.7.15

    安装python2.7.15https://www.python.org/downloads/release/python-2715/。drozer使用python2.7编写不支持python3.x,所以只能装python2.7。原先电脑中装python 2.7.18,但无法运行drozer console connect显示模块不存在。更换版本为2.7.15.运行正常。将python的两个路径分别加入系统变量中的Path变量中。

    系统变量下:

 C:\Users\******\Desktop\Python27\C:\Users\******\Desktop\Python27\Scripts

1.1.3 逍遥模拟器

    将逍遥模拟器MEmu.exe的安装路径D:\Program Files\Microvirt\MEmu也添加入系统变量中的Path变量中。

1.2 电脑下载安装drozer

    下载链接:https://github.com/mwrlabs/drozer/releases/。选择系统相应的包,选windows的msi安装包。

1.3 在模拟器上安装手机drozer agent

    可将agent安装包存放于电脑中,而后如图点击安装将drozer agent安装到手机。

    agent下载地址:https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk

    双击打开启agent,如下图确保右下角按钮显示为“开启”(如果显示为关闭,在其上点击将其切换为开启即可)。

1.4 adb管理工具

1.4.1 配置及说明

    参考链接:

        adb下载安装及使用
        adb命令整理大全
        开发者工具ADB命令行使用汇总——ADB安装(初学者手册)
        微信公众号「闷骚的程序员」关于adb的最全解释

    adb----Android Debug Bridge,一般在Android SDK安装目录下的platform-tools文件夹下就有,也可以另外下载安装。它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互。借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。

    环境变量配置:

    环境变量中编辑PATH,新增D:\ChromeCoreDownloads\adb

    运行在pc端的adb server:

    ADB Server是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,ADB Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上。运行在设备端的常驻进程adb demon (adbd):程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务。

    运行在pc端的adb client:

    命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的ADB服务器,如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向ADB servcer发送服务请求。

1.4.2 adb命令总结

a、查看应用列表

     查看模拟手机上所有应用列表:

 adb shell pm list packages


    查看系统应用列表:

 adb shell pm list packages -s


    查看第三方应用列表:

 adb shell pm list packages -3

b、安装apk

 adb install "-lrtsdg" "path_to_apk"“-lrtsdg”:-l:将应用安装到保护目录 /mnt/asec;-r:允许覆盖安装;-t:允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用;-s:将应用安装到 sdcard;-d:允许降级覆盖安装;-g:授予所有运行时权限;path_to_apk:apk的绝对路径。示例安装淘宝apk:adb install -l /data/local/tmp/taobao.apk

c、卸载apk

 adb uninstall -k "packagename"“packagename”:表示应用的包名,以下相同;-k 参数可选,表示卸载应用但保留数据和缓存目录。示例卸载手机淘宝:adb uninstall com.taobao.taobao

d、清除应用数据与缓存命令

 adb shell pm clear "packagename"相当于在设置里的应用信息界面点击「清除缓存」和「清除数据」。示例:adb shell pm clear com.taobao.taobao 表示清除手机淘宝数据和缓存。

e、Android四大组件相关命令

    Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器,具体不做多讲,常用的有以下(注意grep为linux下过滤命令):

    查看前台 Activity命令:

 adb shell dumpsys activity activities | grep mFocusedActivity

    查看正在运行的 Services命令:

 adb shell dumpsys activity services "packagename"其中参数不是必须的,指定 “packagename” 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。

    查看应用详细信息命令:

 adb shell dumpsys package "packagename"

    调起 Activity命令格式:

 adb shell am start [options] 例如:adb shell am start -n com.tencent.mm/.ui.LauncherUI表示调起微信主界面

    调起 Service命令格式:

 adb shell am startservice [options] 例如:adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService 表示调起微信的某 Service。

    强制停止应用命令:

 adb shell am force-stop "packagename"例如强制停止淘宝:adb shell am force-stop com.taobao.taobao

    模拟按键/输入:

 adb shell input keyevent keycode 不同的 keycode有不同的功能
keycode 功能
3 HOME键
4 返回键
5 打开拨号应用
6 挂断电话
26 电源键
27 拍照(需要在相机应用里)
61 Tab键
64 打开浏览器
67 退格键
80 拍照对焦键
82 菜单键
85 播放/暂停
86 停止播放
92 向上翻页键
93 向下翻页键
111 ESC键
112 删除键
122 移动光标到行首或列表顶部
123 移动光标到行末或列表底部
124 插入键
164 静音
176 打开系统设置
207 打开联系人
208 打开日历
209 打开音乐
220 降低屏幕亮度
221 提高屏幕亮度
221 提高屏幕亮度
223 系统休眠
224 点亮屏幕
231 打开语音助手
276 如果没有 wakelock 则让系统休眠

    滑动解锁:

    如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。

 adb shell input swipe 300 1000 300 500(其中参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。)

    输入文本:

    在焦点处于某文本框时,可以通过 input 命令来输入文本。

 adb shell input text *** (***即为输入内容)

f、日志相关命令

    打印日志:
    Android 的日志分为如下几个优先级(priority):
        V —— Verbose(最低,输出得最多)
        D —— Debug I —— Info
        W —— Warning
        E —— Error
        F—— Fatal
        S —— Silent(最高,啥也不输出)
    某级别过滤日志则会将该级别及以上的日志输出。

 adb logcat *:W 会将 Warning、Error、Fatal 和 Silent 日志输出。

    (注: 在 macOS 下需要给 :W 这样以 作为 tag 的参数加双引号,如 adb logcat “:W”,不然会报错 no matches found: :W。)

adb logcat 打印当前设备上所有日志
adb logcat *:W 过滤打印严重级别W及以上的日志
adb logcat l findstr ***> F:\log.txt 把仅含***的日志保存到F盘的log.txt文件中
adb logcat -c 清除屏幕上的日志记录
adb logcat -c && adb logcat -s ActivityManager l grep "Displayed” 客户端程序启动时间获取日志
adb logcat > F:\log.txt 打印当前设备上所有日志保存到F盘的log.txt文件中
adb logcat l findstr *** 打印过滤仅含***的日志
adb logcat l findstr ***> F:\log.txt 把仅含***的日志保存到F盘的log.txt文件中

    按 tag 和级别过滤日志:

 adb logcat ActivityManager:I MyApp:D *:S表示输出 tag ActivityManager 的Info以上级别日志,输出tag MyApp的Debug 以上级别日志,及其它tag的Silent级别日志(即屏蔽其它tag日志)。adb logcat -v 选项指定日志输出格式。日志支持按以下几种 :默认格式brief、process、tag、raw、time、long指定格式可与上面的过滤同时使用。比如:adb logcat -v long ActivityManager:I *:S

    清空日志:

 adb logcat -c

    内核日志:

 adb shell dmesg

g、查看设备情况

    查看设备信息型号命令:

 adb shell getprop ro.product.model

    电池状况命令:

 adb shell dumpsys battery

    屏幕分辨率命令:

 adb shell wm size

    如果使用命令修改过,那输出可能是:
         Physical size: 1080x1920
         Override size: 480x1024
    表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。
    屏幕密度命令:

 adb shell wm density

    如果使用命令修改过,那输出可能是:
        Physical density: 480
        Override density: 160
    表明设备的屏幕密度原来是 480dpi,当前被修改为 160dpi。
    显示屏参数:

 adb shell dumpsys window displays输出示例:WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)Display: mDisplayId=0init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731deferred=false layoutNeeded=false其中 mDisplayId为显示屏编号,init是初始分辨率和屏幕密度,app的高度比 init里的要小,表示屏幕底部有虚拟按键,高度为1920 - 1794 = 126px 合42dp。

    android_id查看命令:

 adb shell settings get secure android_id

    查看Android 系统版本:

 adb shell getprop ro.build.version.release

    查看设备ip地址:

 adb shell ifconfig | grep Mask或者adb shell netcfg

    查看CPU 信息命令:

 adb shell cat /proc/cpuinfo

    查看内存信息命令:

 adb shell cat /proc/meminfo

    设备的更多硬件与系统属性:

 adb shell cat /system/build.prop

    单独查看某一硬件或系统属性:

 adb shell getprop <属性名>
属性名 含义
ro.build.version.sdk SDK 版本
ro.build.version.release Android 系统版本
ro.product.model 型号
ro.product.brand 品牌
ro.product.name 设备名
ro.product.board 处理器型号
persist.sys.isUsbOtgEnabled 是否支持 OTG
dalvik.vm.heapsize 每个应用程序的内存上限
ro.sf.lcd_density 屏幕密度
rro.build.version.security_patch Android 安全补丁程序级别

h、修改设置

    修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。

    修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的设置值。

    修改分辨率命令:

 adb shell wm size 480x1024

    恢复原分辨率命令:

 adb shell wm size reset

    修改屏幕密度命令:

 adb shell wm density 160 表示将屏幕密度修改为 160dpi;

    恢复原屏幕密度命令:

 adb shell wm density reset

    修改显示区域命令:

 adb shell wm overscan 0,0,0,200 四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。

    恢复原显示区域命令:

 adb shell wm overscan reset

    关闭 USB 调试模式命令:

 adb shell settings put global adb_enabled 0 需要手动恢复:「设置」-「开发者选项」-「Android 调试」

    状态栏和导航栏的显示隐藏:

 adb shell settings put global policy_control

    可由如下几种键及其对应的值组成,格式为 =:=。

key 含义
immersive.full 同时隐藏
immersive.status 隐藏状态栏
immersive.navigation 隐藏导航栏
immersive.preconfirms ?

    这些键对应的值可由如下值用逗号组合:

value 含义
apps 所有应用
* 所有界面
packagename 指定应用
-packagename 排除指定应用
 举例:adb shell settings put global policy_control immersive.full=* 表示设置在所有界面下都同时隐藏状态栏和导航栏。adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3 表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。

    恢复正常模式:

 adb shell settings put global policy_control null

i、实用功能

    截图保存到电脑:

 adb exec-out screencap -p > sc.png然后将 png 文件导出到电脑:adb pull /sdcard/sc.png

    录制屏幕:

 录制屏幕以 mp4 格式保存到 /sdcard:adb shell screenrecord /sdcard/filename.mp4 需要停止时按 Ctrl+C,默认录制时间和最长录制时间都是 180 秒。如果需要导出到电脑:adb pull /sdcard/filename.mp4

    挂载、查看连接过的 WiFi 密码、开启/关闭 WiFi、设置系统日期和时间都需要root权限,不做多说。

    使用 Monkey 进行压力测试:

    Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。

 adb shell monkey -p < packagename > -v 500 表示向 指定的应用程序发送 500 个伪随机事件。

j、查看进程

 adb shell ps

    查看实时资源占用情况:

 adb shell top

    查看进程 UID:

 adb shell dumpsys package | grep userId=

二、连接过程

1、查看连接设备

    双击打开逍遥模拟器。而后按win+r,输入cmd,输入adb devices,显示已连接设备。该设备ip即为逍遥模拟器ip,端口默认为5555。(怎么修改,无从知晓)

2、端口转发

 adb forward tcp:31415 tcp:31415

3、开启drozer控制台

 drozer console connect


    连接成功

    连接成功后,控制台显示dz> 。


三、drozer使用

    使用list查看支持哪些模块。

 list


    然后,使用help module_name,或者run module_name -h查看各module的用法。

    最后,通过run module_name module_options来对app进行检测。

3.1 通过app.package.list模块获取要检测的app的包名

  run app.package.list -f package_name

3.2 使用app.package.info模块查看apk基本信息

 run app.package.info -a package_name

3.3 使用app.package.attacksurface模块识别攻击面

    所谓攻击面,应该就是指可export的安卓四大组件(activaty、broadcast receiver、content provider、service)。

    如果查看到四大组件中有可export的,就去具体看可export的组件有没有问题。

 run app.package.attacksurface package_name


    输出结果:
    Attack Surface:
    3 activities exported 暴露的控件接口
    0 broadcast receivers exported 暴露的广播接收器
    0 content providers exported 数据提供接口,数据泄漏
    3 services exported service服务接口

    解释参考链接:

        【安全测试工具】Drozer介绍及使用

    解释:

    Activity控件接口:

    应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。

    intent介绍:

    可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcasts。

    Intent有以下几个属性: 动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。其中最常用的是Action属性和Data属性。通过Drozer完整的发送intent消息命令格式为:

    run app.activity.start [-h] [–action ACTION] [–category CATEGORY [CATEGORY …]] [–component PACKAGE COMPONENT] [–data-uri DATA_URI][–extra TYPE KEY VALUE] [–flags FLAGS [FLAGS …]] [–mimetype MIMETYPE]

    BroadcastReceive广播接收器:

    应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager 来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

    content providers exported数据提供接口:

    android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式, 其他应用可以通过ContentResolver类(见ContentProviderAccessApp例子)从该内容提供者中获取或存入数据(相当于在应用外包了一层壳), 只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处:统一数据访问方式。

    service服务接口:

    services服务接口,一般常驻,连接上公开的service后,可通过service提供的接口调起其他activity等。

    检测到攻击面,可进行的攻击:

    activities exported 越权攻击,发送伪造消息等;
    broadcast receivers exported 发送恶意广播,伪造广播消息,越权攻击等;
    content providers exported 数据泄漏,SQL注入等;
    services exported 越权攻击,服务拒绝,权限提升等;

3.4 使用app.activity.info模块查看activity组件信息

 run app.activity.info -a package_name


    对activity尝试进行攻击:

    (1)来一把越权攻击:绕过登录页直接拉activity,看到有activity启动不需要权限,尝试用drozer直接拉起这些activity看看。

 run  app.activity.start  --component  com.example   com.example.activity.WelcomeActivity

    (2)发送伪造的残缺消息,刻意制造不完整的intent,发送给对应的activity。

 run app.activity.start --action android.intent.action.SEND --component com.example com.example.activity.share.ShareToSessionActivity

    intent中缺少extra部分。

3.5 使用app.broadcast.info模块查看暴露的广播组件接口

 run app.broadcast.info -a   com.example  -i  获取暴露的广播组件信息

    尝试拒绝服务攻击,向广播组件发送不完整intent(空action或空extras)。

 run app.broadcast.send --component com.example com.example.sdk.communication.AppRegisterReceiver --extra string TEXT "hahahaha"

    传递空的action。

3.6 使用app.provider.info模块查看content provider(数据提供接口)组件信息

  run app.provider.info -a package_name


     如果有暴露的content组件接口,可能存在:

    数据泄漏问题;
    –直接访问URI获取敏感信息;–目录遍历;
    构造特殊的URI进行SQL注入;

     获取content provider的信息:

 run app.provider.info -a  com.example  -i

     使用drozer的scanner模块去猜测可能存在的URIs:

 run scanner.provider.finduris -a  com.example

     检测可注入的URI的注入点:

 run scanner.provider.injection  -a  com.example

     SQL注入的方式,如果上一步有拿到可注入的URI,获取某个表(如Key)中的数据:

 run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"

3.7 使用app.service.info模块查看service组件信息

 run app.service.info -a package_name


     获取公开的service服务接口信息:

     run app.service.info -a  com.example -i

     直接启动服务看下

 run app.service.start --action com.example.plugin.game.service.GameDownloadService --component  com.example com.example.plugin.game.service.GameDownloadService

3.8 文件操作

    安装minimal来可以获取暂时的root权限

 run tools.setup.minimalsu

    进入shell模式,查看/data/data/com.example下是否有明文存储敏感信息。
    在AndroidManifest.xml中android:allowBackup字段是否为true。当这个标志被设置为true或不设置该标志时应用程序数据可以备份和恢复,adb调试备份允许恶意攻击者复制应用程序数据。有名的栗子新浪微博android客户端越权泄密事件。

    疑难问题可参考以下链接:

    https://www.jianshu.com/p/28635f35cf8f

    制作不易,点个赞再走吧!

drozer安装与使用总结(含adb命令总结)相关推荐

  1. app测试(手机自动化测试)----(含adb命令,monkey命令)

    [持续更新中] 1.环境搭建: (1). 安装 jdk1.8 [测试 java -version] [appium 运行需要] (2). 安装 sdk [appium 运行需要 ][不要写中文路径,不 ...

  2. Android常用adb命令-获取应用安装路径

    adb shell pm list package - 获取 apk 对应的包名 或 adb shell pm list package <要搜索的字符串> adb shell pm pa ...

  3. [整理]ADB命令行学习笔记

    global driver # 元素定位 driver.find_element_by_id("id") # id定位 driver.find_element_by_name(&q ...

  4. adb connect 连不上_使用ADB命令卸载安卓手机系统软件

    有句话怎么说的?哦,是这样说的:"我就喜欢看你想干掉我却又干不掉我的样子!"当你买了一部安卓手机,发现手机上塞满了各种你根本不想要也用不着却又卸载不了的软件,心中难免万" ...

  5. android 环境配置和安装, Android系统包说明,基本控件,常用代码,ADB 命令行,APK文件确解,小技艺,...

    一.             环境配置和安装(Android2.2) 参考文章:这里 1.1     JDK 1.2     SDK 下载地址:http://dl.google.com/android ...

  6. Android使用adb命令安装应用-连接usb

    adb命令最全,墙都不扶,就服他,好东西要记录和分享 全网最全adb命令_国内某知名游戏公司小菜鸡工程师-CSDN博客 接下来开始正文 一.配置adb的环境变量 如果没有配置,请移步Java配置环境变 ...

  7. Android开发之adb命令安装apk的问题

    众所周知,有时候我们只有apk安装包不一定可以直接在AS跑起来,所以有了adb命令安装 使用adb命令的前提: 1.你的首先配置adb的环境变量查看环境变量配置方法 2.配置好后请检查是否配置成功?如 ...

  8. android 代码发adb,Android预安装软件adb命令编译源码

    Android预安装软件&adb命令&编译源码 发布时间:2020-06-02 17:28:41 来源:51CTO 阅读:895 作者:年少的风 1.预安装软件: 将eclipse下的 ...

  9. adb命令安装apk 来学习吧

    1.将需要安装的apk放在platform-tools下 2.将手机和电脑连接,在cmd中输入 adb devices查看 3.使用adb命令安装apk,在cmd中输入:adb install apk ...

最新文章

  1. UF_DRAW_set_view_display 使用问题
  2. linux下的ps命令
  3. 打破冷漠僵局文章_研究僵局–第3部分
  4. es通过mapping创建索引出错
  5. mybatis基于注解(三)
  6. linux 添加deepin ppa,Deepin 添加PPA源问题
  7. java vc_vc++与 java有什么不同
  8. Markdown流程图实用工具汇总Obsidian+excalidraw
  9. xsmax无法进入dfu模式_iPhoneXSMax怎么强制重启-如何进入DFU模式
  10. 根轨迹 matlab 怎么画一半儿,现有 1020 个西瓜,第一天卖一半多两个,以后每天都卖剩下的一半多两个,编程计算几天后能把所有西瓜都卖完? 请编程实现_学小易找答案...
  11. android webView加载页面时显示出全部网页内容
  12. the owning Session was closed
  13. [渝粤教育] 平顶山学院 学前心理学 参考 资料
  14. 【人工智能】深度学习、神经网络图
  15. 国科大学习资料--人工智能原理与算法-第十三次作业解析(学长整理)
  16. 05-SA8155 QNX I2C框架及代码分析
  17. EasyUI 系列之 combobox 默认选中第一个 添加请选择选项
  18. 20170118修改商品流水
  19. 特斯拉、软件与颠覆,下一家震惊世界的科技公司会是谁?
  20. 2022年全球与中国LED嵌入式照明行业发展趋势及投资战略分析报告

热门文章

  1. 李阳:征服英语的三十个好习惯
  2. 家用无线路由做MAC绑定防止卡王***
  3. 为什么硬件钱包比你想象的更重要?
  4. 天意U盘维护系统,2019支持NVME硬盘,无线破解,8PE+10PE双UEFI启,天意PE三分区
  5. 提出一个问题:《纪念碑谷》
  6. 两种常用压控电流源设计
  7. 上海科技大学计算机本科2020,上海科技大学
  8. 湖大计算机网络复试,湖南大学信息科学与工程学院复试情况
  9. graph Laplacian 拉普拉斯矩阵
  10. C语言超牛简单源码计算超大整数的阶乘