网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

前端开发技术团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 开发技术 > 前端开发技术 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

逆向分析与测试套件:Protobuf toolkit,针对Android端、Web端和桌面端应用程序Protobuf

文章来源:重庆软件开发 发布时间:2019-12-25 10:12:16 围观次数:
分享到:

摘要:PBTK是Google设计的序列化格式,广泛用于Android,Web和桌面应用程序,由一种用于声明数据结构的语言组成,并可以根据目标的实现方式为目标编译代码和其他类型的结构化数据

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


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


  1.所有主要的Java运行时(base,Lite,Nano,Micro,J2ME),并全面支持Proguard。

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

  3.使用JsProtoUrl运行时的Web应用程序。


其次,编辑,重放和混淆通过方便的图形界面发送到Protobuf网络端点的数据。 该界面允许实时编辑Protobuf消息的字段并查看结果。

blob.png


工具安装


  PBTK需要Python> = v3.5,PyQt 5,Python-Protobuf 3和其他相关组件(例如Chromium,jad,dex2jar等)来运行提取脚本。


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


  $ yaourt -S pbtk-git

  $ pbtk


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


  $ sudo apt安装python3-pip git openjdk-9-jre

  $ sudo pip3 install protobuf pyqt5请求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应用程序上执行反向分析,我们可以首先选择一个熟悉的反编译工具,然后以POST数据的形式以常规方式通过HTTP将Protobuf内容发送到目标。


  打开PBTK,我们将看到如下所示的界面:

blob.png

第一步是将.protos文件转换为文本格式。 如果目标是Android应用程序,我们可以打开一个APK文件,然后将其余文件留给PBTK!完成后,在命令行编辑器中切换到“~/.pbtk/protos/<your APK name>”路径。 该应用程序的.protos文件都在此路径中。回到我们的反编译工具,我们可以通过HTTPS将感兴趣的数据发送到目标节点,并通过调用由生成的代码组成的类来序列化Protobuf消息。

blob.png

后者应直接对应于我们.protos目录中的结构,例如com.foo.bar.a.b将对应于com / foo / bar / a / b.proto。 然后,我们选择需要输入的.proto文件,然后填写一些相关的节点信息:

blob.png

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


  第三步,单击按钮, 该工具将生成一个表示Protobuf结构的树形图:

blob.png

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


  本地数据存储


  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 Protobuf APP Android Web 应用程序

上一篇:历史上复制次数最多的代码:StackOverflow Java片段有一个Bug
下一篇:软件开发:选择 TypeScript 还是 JavaScript 由开发者决定

热门资讯

鼠标向下滚动