Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

  • A+
所属分类:逆向工程

Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

Go_Parser

Go_Parser是一款针对IDAPro的Galong二进制代码分析工具,该工具的开发灵感来源于golang_loader_assistjeb-golang-analyzer,是一个功能更加完整的IDAPro Go语言二进制文件解析工具。

功能介绍

支持对Go二进制源码文件中的firstmoduledata结构体进行定位和解析,并对每一个字段进行注释标记;

根据 firstmoduledata 中的信息定位并解析pclntab(PC Line表),并从pclntab中寻找、解析和恢复函数名称和源文件路径。源文件路径将会在IDAPro的输出窗口中打印出来。

解析字符串和字符串指针,为每一个字符串添加注释,为每一个字符串指针执行dref。

根据firstmoduledata 中的信息,寻找并解析所有的type,并为 type的各种属性添加注释,这将帮助恶意软件分析人员更好地分析复杂类型或数据结构定义。

支持解析itab(接口表)。

Go 语言二进制文件中包含的信息将可以用于逆向分析活动中,另外,Go_Parser 还有两个很有用的功能特性:

1、该工具支持恶意格式的文件Header信息,尤其是恶意格式的会话Header信息;

2、以上功能对于buildmode=pie类型的Go二进制代码文件依然有效;

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 可以通过手动指定字符串指针数据的起始、结束位置来解析字符串指针。

工具下载

广大开发人员可以使用下列命令将该工具源码克隆至本地:

git clone https://github.com/0xjiayu/go_parser.git

注意事项

此分支由 Python2 版的 IDAPython API 编写,只在 IDAPro v7.2/v7.0 上测试过,其他的 IDA 版本未经测试;

strings 解析模块从 golang_loader_assist 移植过来,我自己又增加了 string pointers 解析的功能,目前只支持 x86 架构。

项目地址

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

参考资料

https://www.pnfsoftware.com/blog/analyzing-golang-executables/

https://rednaga.io/2016/09/21/reversing_go_binaries_like_a_pro/

http://home.in.tum.de/~engelke/pubs/1709-ma.pdf

https://www.kitploit.com/2020/11/goparser-yet-another-golang-binary.html

Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

精彩推荐





Go_Parser:一款针对IDAPro的Galong二进制代码分析工具
Go_Parser:一款针对IDAPro的Galong二进制代码分析工具Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

本文始发于微信公众号(FreeBuf):Go_Parser:一款针对IDAPro的Galong二进制代码分析工具

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: