Drozer自定义模块以及安装使用

Posted 安静的Sunny

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Drozer自定义模块以及安装使用相关的知识,希望对你有一定的参考价值。

一、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安装包

接下来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 Module

class 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自定义模块以及安装使用的主要内容,如果未能解决你的问题,请参考以下文章

drozer使用

drozer的常用命令

Drozer的安装和使用

Drozer

APP测试-drozer安装和使用

drozer工具的安装与使用:之二使用篇