文章目录
- 一、什么是扩展 / 插件?
- 实现一个简单的 插件/扩展 系统
- 二、burp 的扩展
- 三、开发步骤
- 总结
一、什么是扩展 / 插件?
关于这个话题,知乎有一个回答题不错,主要也是引用了wikipedia
插件/扩展,是向现有的计算机程序添加特定功能的软件组件。
- 主程序如果希望自身的功能可以被扩展,其需要:
- 提供一组服务 (Service Interface)。其提供(约束)了插件对主体能力可控制的边界。服务定义的越精细,插件控制的粒度越小,能力越大,但耦合度和复杂度也越高。
- 定义一种扩展契约 (Plug-In Interface),其描述了插件应该如何设计以便于主程序发现。并通过插件管理模块 (Plug-In Manager) 来发现、维护插件。
- 插件通过实现主程序规定的扩展契约(通常是一个接口),标明自己的身份,并接收来自主程序的事件响应。通过调动主程序提供的服务,实现和主程序的交互。这一过程,通常都是被主程序以 SDK (Software Development Kit) 的形式封装。
基本上我们日常所有能接触到的应用都或多或少的提供了插件机制,比如操作系统。其上面运行的应用程序即可以理解为它的插件实现。
实现一个简单的 插件/扩展 系统
待定(利用java的反射机制)
二、burp 的扩展
有了上面的思想作为指导,也就回答了“我要怎么做,为什么可以这样做”的问题。burp本身作为一个软件/计算机程序,实现了一些功能,可以对外提供服务,并提供了一些我们使用这些功能的API。体现在Java程序中,这组服务就是SDK/库(lib)/模块(module)/包(package)
,就是我们引入的jar 包
;这些jar包中定义好了一些接口,在java语言中,提供了直接的面向抽象编程,也就是interface
关键字,我们按OOP的思想实现这些interface
即可与burp交互,调用其功能。
burp以前的API–> jar包叫做 Extender API
,2022.9版推出了新的APIMontoya API
,旧版API将逐步弃用。
burp支持我们使用python和ruby开发,这里我们使用burp的原生开发语言java。其他语言的支持,中间多加了一层"翻译程序"
三、开发步骤
- 开发工具 ----> idea2023.2
- 使用语言 ----> Java(JDK17)
- 新建maven项目(maven安装使用自行百度)
- 添加项目依赖
不同的burp版本要使用相应的jar包,版本不对有可能出错。直接在maven仓库搜burp extender
或montoya
,这里我们使用新版的APIMontoya
在pom.xml
配置好并粘贴
- 官方的例子
编写一个类实现BurpExtension
接口,重写initialize
方法,里面就可写我们的功能代码了,然后导出为jar包
- 导入到burp