吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4175|回复: 7
收起左侧

[IDA Plugin] go_parser -- Yet Another Golang binary parser for IDAPro

  [复制链接]
风吹屁屁凉 发表于 2021-6-29 16:18

Yet Another Golang binary parser for IDAPro

English | 中文


python3版本使用说明

此版本是在macos上 ida7.4+, python3.8.5 版本测试通过,如果在其他平台上测试存在问题,欢迎提issue或者pr。

另外需要注意,macos上ida7.4是使用系统默认安装的python3,这样可能导致自己安装的第三方库无法加载,需要切换到brew安装的python,具体的切换方法请参考这个脚本


golang_loader_assistjeb-golang-analyzer 启发,为 IDAPro 写了一个更完备的 Go 二进制文件解析工具。

核心功能:

  1. 自动定位 firstmoduledata 的位置并解析;
  2. 根据 firstmoduledata 中的信息定位到 pclntab(PC Line Table),并从 pclntab 入手解析、恢复函数符号,抽取源码文件列表
  3. 解析 strings 和 string pointers
  4. 根据 firstmoduledata 中的信息,解析所有 types 并为 types 各种属性打上有意义的 comment 或 dref;
  5. 解析 itab(Interface Table)。

Go 语言二进制文件中对逆向分析有帮助的信息如下:

另外,go_parser 还有两个很有用的特性:

  1. 以上功能对于 buildmode=pie 类型的 Go binary 文件依然有效;
  2. 对于文件头信息尤其是 Section Header 信息损坏的二进制文件依然有效。

DDGMiner v5029 (MD5: 95199e8f1ab987cd8179a60834644663) 样本中核心的配置文件 struct 解析结果示例如下:

样本源码文件列表:

文件列表:

  • go_parser.py :整套工具的入口文件,在 IDAPro 中 [Alt+F7] 组合键,执行此脚本;
  • common.py: 通用变量和函数定义;
  • pclntbl.py: 解析 pclntab(PC Line Table);
  • strings.py: 解析 strings 和 string pointers;
  • moduldata.py: 解析 firstmoduledata
  • types_builder.py: 解析所有 types
  • itab.py: 解析 itab(Interface Table);

另外, str_ptr.py 可以通过手动指定字符串指针数据的起始、结束位置来解析字符串指针。

Note

  1. 此版本在 IDA7.4+,python3.8.5 上测试过,其他的 IDA 版本未经测试;
  2. strings 解析模块从 golang_loader_assist 移植过来,我自己又增加了 string pointers 解析的功能,目前只支持 x86 架构。

Refer

  1. Analyzing Golang Executables
  2. Reversing GO binaries like a pro
  3. Reconstructing Program Semantics from Go binaries.pdf
  4. Go二进制文件逆向分析从基础到进阶——综述
  5. Go二进制文件逆向分析从基础到进阶——MetaInfo、函数符号和源码文件路径列表
  6. Go二进制文件逆向分析从基础到进阶——数据类型
  7. Go二进制文件逆向分析从基础到进阶——itab与strings
  8. Go二进制文件逆向分析从基础到进阶——Tips与实战案例


https://github.com/0xjiayu/go_parser/releases/

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
janebos + 1 + 1 谢谢@Thanks!
nevinhappy + 1 + 1 鼓励转贴优秀软件安全工具和文档!
这是追求不是梦 + 1 + 1 热心回复!
Jmq421516 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Jmq421516 发表于 2021-6-29 16:19
神器无疑了,感谢分享
iamok 发表于 2021-6-30 08:36
楼主原来就是作者呀,非常好用的工具,已经用了快1年了吧。
希望楼主继续更新对新版本的支持。
tricky6 发表于 2021-6-30 12:11
str_ptr.py 可以通过手动指定字符串指针数据的起始、结束位置来解析字符串指针 这个好
ZRNZNWAPJ 发表于 2021-6-30 18:22
年纪大了 不想学习了
janebos 发表于 2021-7-1 18:32
请问下有没有使用教程?
星空あおあのtom 发表于 2022-7-29 12:11
嗯哼嗯哼~!多谢多谢。
cococohh 发表于 2022-7-29 16:09
FDSFSDFSDFSFSF
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-5 00:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表