千家信息网

PBTK是一款什么工具

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章主要为大家展示了"PBTK是一款什么工具",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"PBTK是一款什么工具"这篇文章吧。套件介绍Protobuf
千家信息网最后更新 2024年11月26日PBTK是一款什么工具

这篇文章主要为大家展示了"PBTK是一款什么工具",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"PBTK是一款什么工具"这篇文章吧。

套件介绍

Protobuf是Google设计的一种序列化格式,目前已被广泛应用在各种Android端、Web端和桌面端应用程序之中。它由一种用于声明数据结构的语言组成,并且能够根据目标的实现方式,来为其编译代码以及其他类型的结构数据。

PBTK(Protobuf toolkit)是一套功能完整的脚本,可以通过统一的GUI来访问,PBTK主要提供了以下两个重要功能:

一、从目标程序中提取Protobuf结构,将其转换回可读的.protos格式,并且支持下列实现:

1、所有主流的Java运行时(base, Lite, Nano, Micro, J2ME),以及完整的Proguard支持;

2、二进制代码包含嵌入式反射元数据(通常是C++,有时是Java和其他绑定);

3、使用JsProtoUrl运行时的Web应用程序;

二、通过一个方便的图形界面编辑、重放和模糊化发送到Protobuf网络端点的数据,该界面允许您实时编辑Protobuf消息的字段并查看结果。

工具安装

PBTK要求使用Python >= v3.5、PyQt 5、Python-Protobuf 3以及其他的依赖组件(例如Chromium、jad和dex2jar等等)来运行提取脚本。

Archlinux用户可以直接运行下列命令来完成安装:

$ yaourt -S pbtk-git$ pbtk

在其他Linux发行版系统中,我们可以直接运行下列命令完成工具的安装:

$ sudo apt install python3-pip git openjdk-9-jre$ sudo pip3 install protobuf pyqt5 requests websocket-client$ git clonehttps://github.com/marin-m/pbtk$ cd pbtk$ ./gui.py

当然了,PBTK也支持在Windows平台杀昂使用,我们安装好依赖组件并运行GUI之后,工具将会提醒我们进行下一步操作,按提示操作即可。

命令行使用

GUI可以通过主脚本来启动:

./gui.py

下列脚本也可以单独进行使用,不需要通过GUI来启动:

./extractors/jar_extract.py [-h] input_file [output_dir]./extractors/from_binary.py [-h] input_file [output_dir]./extractors/web_extract.py [-h] input_url [output_dir]

常规工作流

假设我们需要对一款Android应用程序进行逆向分析,我们可以先选择一个我们熟悉的反编译工具,然后按常规方式并通过HTTP向目标以POST数据的形式发送Protobuf格式内容。

打开PBTK,我们将会看到下图所示界面:

第一步就是将.protos文件转换为text格式,如果目标为Android应用,我们可以打开一个APK文件,然后剩下的就交给PBTK吧!

完成之后,在命令行编辑器中切换到"~/.pbtk/protos/"路径下,该App的.protos文件都在这个路径下。

回到我们的反编译工具,我们可以将感兴趣的数据通过HTTPS来向目标节点进行发送,并通过调用由生成的代码构成的类来序列化Protobuf消息。

后面这个类应该可以直接对应到我们.protos目录中的某一个结构,比如说com.foo.bar.a.b将对应com/foo/bar/a/b.proto。那么接下来,我们选择需要作为输入的.proto文件,然后填写一些相关的节点信息:

我们还可以提供一些样本原始的Protobuf数据并发送至目标节点,相关数据可以通过mitmproxy或Wireshark捕获,或以十六进制编码的形式粘贴进去。

第三步,点击按钮,看看奇迹如何发生!工具将生成一个表示Protobuf结构的树形图(重复的字段以"+"作为后缀,必需的字段没有复选框):

只需在一个区域上鼠标悬停即可获得焦点,如果字段是整数类型,请使用鼠标滚轮将其递增/递减,悬停时也会显示枚举信息。

本地数据存储

PBTK会将提取出的.proto信息存储至"~/.pbtk/protos/"(Linux)或"%APPDATA%\pbtk\protos"(Windows)路径下。基于HTTP节点的数据存储以JSON对象形式在"~/.pbtk/endpoints/":

[{"request": {"transport": "pburl","proto": "www.google.com/VectorTown.proto","url": "https://www.google.com/VectorTown","pb_param": "pb","samples": [{"pb": "!....","hl": "fr"}]},"response": {"format": "other"}}]

以上是"PBTK是一款什么工具"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0