一、Drozer源码编译与打包

Drozer由agent.apk与server端组成,其中server端就是由python语言实现,里面包括了比如app等各module。要想理解各module的运行原理或者说各command,可以下载源码进行深入的学习。

Drozer的github地址:https://github.com/FSecureLABS/drozer

当源码clone到本地,执行setup.py安装各依赖时,注意,得使用python 2.7版本。如果用的是python 3.x,则在安装时会报其他语法错误。

1.1、报google.protobuf找不到

在安装的时候,可能会报找不到google.protobuf这个Module。解决办法如下:
先下载protobuf的python源码以及windows安装包

  • protoc-3.14.0-rc-1-win64.zip
  • protobuf-python-3.14.0-rc-1.zip

接下来cd到protobuf-pyhton的python目录下,执行python setup.py build,执行这时时,如果有报如下错误:

则将protoc-3.14.0-rc-1-win64.zip解压,将bin/下的protoc.exe拷贝到protobuf-python-3.14.0-rc-1的src目录下。然后再次执行python setup.py build命令。没报错表示成功,利用python.exe输入import google.protobuf测试是否成功:

二、打包drozer安装包

cd 到drozer根目录下面,执行命令:python setupy.py bdist_msi,执行完成后,会在dist/目录下生成xxx.msi安装包:

接下来就是安装drozer-2.4.3.win-amd64.msi。在安装drozer服务的过程中,会提示让你选择关联的python路径,如果你本地装有多个版本的python的话,这时建议你选择python 2.7.x的。因为就drozer来说,那个版本相对稳定些。
接下来就是在手机(需ROOT)或模拟器上安装drozer-agent.apk,然后打开服务开关,在cmd输入命令adb forward tcp:31415 tcp:31415 这里要注意前面的31415是指电脑的端口,后一个31415是指手机的端口。最后再用drozer.bat console connect连接服务,开始渗透分析。

三、如何自定义Drozer模块

drozer源码使用模块化的架构,所有模块都放在modules包下:


以命令run app.package.attacksurface com.android.browser为例(列出浏览器应用的攻击面),其对应的py为:

因此用python自定义drozer模块时,需要注意:

  • path 变量的赋值;

当自定义的模块创建好后,怎么才让在drozer的console控制台上生效,能启动起来呢?这就涉及到python中模块的管理与安装问题。
首先,我们为drozer创建一个本地repo仓库,用来管理自定义的各种模块。
在drozer 控制台上输入以下命令:

module repository create D:/developer/drozer_repo

就会在指定的路径创建仓库。接下来就是在drozer_repo里面创建模块(文件夹名):

下面以test模块为例,假如现在编写了一个sunny2.py,内容如下:

from drozer.modules import Moduleclass GetInteger(Module):name = "Sunny"description = "Drozer's test Class,which just for Sunny's unit test"examples = """Find activities that can handle web addresses:dz> run app.sunnyTest.getinteger"""author = "Sunny"date = "2020-11-8"license = "BSD (3 clause)"path = ["test", "sunny"]def execute(self, arguments):random = self.new("java.util.Random")integer = random.nextInt()self.stdout.write("Result:int: %d\n" % integer)

创建完成后,将sunny2.py文件放到test目录 下,然后再在drozer 控制台输入命令安装此模块:

module install D:/developer/drozer_repo/sunny2.py

安装完成后它会在drozer_repo目录下自动生成sunny2文件夹。接下来就在drozer控制台可以运行此自定义模块了。

Drozer自定义模块以及安装使用相关推荐

  1. python 自定义模块的发布和安装

    [学习笔记] 自定义模块  使用的是pycharm 说白了就是.py文件都可以作为模块导入,像定义一个文件 名字为Mycode __all__ = ["add","sub ...

  2. python自定义安装哪些不需要_【1】python模块:自定义模块的3种导入方式

    一.定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块.如果不懂 ...

  3. Node.js(一)——(Node.js安装及使用,通过Node.js搭建服务器,模块化及自定义模块,npm/yarn/nvm,内置模块fs的使用,buffer及stream,新闻列表案例)

    目录 1.Node.js介绍 2.安装Node.js 3.使用Node.js实现第一个服务器 3.1初步感受Node.js 3.2Google Chrome 默认非安全端口列表,尽量避免以下端口. 3 ...

  4. 如何在React Native中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  5. python如何自定义模块_python自定义模块和开源模块使用方法

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  6. python中的time库安装步骤-python中time模块需要安装么

    time是python自带的模块,用于处理时间问题,提供了一系列的操作时间的函数. time模块中时间表现的格式主要有三种:(推荐学习:Python视频教程) timestamp时间戳,是以秒表示从& ...

  7. php自定义模块,简单介绍OpenCart自定义模块

    OpenCart模块可以自定义模块显示位置.排序.是否开启等功能,用起来十分方便. OpenCart用到的模块管理非常多,首页幻灯.导航.最新商品.特价商品.热卖商品等. 如何自定义一个模块?其实也挺 ...

  8. python导入自定义文件_python引入导入自定义模块和外部文件的实例

    项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包 如果是web 下,比如说django ,那么你新建一个app,把你需要导入的说用东东,都写到这个app中,然后在setting中的app ...

  9. 如何在 React Native 中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

最新文章

  1. OpenCV3实现人脸识别(三)——训练与识别自己的人脸数据
  2. method=post和method=get的区别是啥【汇总】
  3. 关于SAP Fiori Smart Template开发的一些实际例子
  4. 打造跨平台.NET Core后台服务
  5. Apollo技能图谱2.0焕新发布 更新7大能力91个知识点
  6. tcp协议的端口状态
  7. Riophae/Vue-treeselect 的文档 及一些相关的问题
  8. [ CQOI 2014 ] 数三角形
  9. PreferenceScreen的应用
  10. web测试点和app测试点
  11. debian linux ntfs,让Debian支持ntfs文件系统读写
  12. Python-并发、并行、协成的简易理解
  13. JAVA——从基础学起(五)类和对象
  14. VS code常用插件
  15. 离散数学中谓词逻辑推理规则总结,附各规则英文
  16. Python 优雅地利用两点经纬度计算地理空间距离
  17. Shell脚本读取mysql结果集各数据项的值
  18. win7java浏览器崩溃_win7系统IE浏览器出现各种崩溃问题的解决方法
  19. android 点击热区,扩大UIButton点击热区
  20. python 中arange函数_python基础之np.arange函数

热门文章

  1. Keras封装实现经典深度网络框架 VGG-16, ZF-Net,Alex-Net,LeNet,Google-Net,ResNet, DenseNet-50
  2. nvm 基础安装与坑点
  3. 计算机的id密码,Apple ID或密码不正确在电脑上找回图解
  4. 如果把地球的历史比作一天……
  5. 93%以上企业获新融资 岂安科技成微软加速器全球校友
  6. 如何落地业务建模(5) 云时代的挑战
  7. 「日本直聘」软件工程师
  8. BP算法与python代码实现
  9. 2019多校联讯 test 3 T2
  10. MAC电脑终端主机名被篡改为bogon