Golang Go语言中使用 Golang 写了一个 PE 格式解析库

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言中使用 Golang 写了一个 PE 格式解析库

Golang 标准库自带了 debug/pe 模块,但并不是很强大,不支持解析 ARM64,也不支持解析 Delay 导入库,不支持解析导出函数,于是我把 debug/pe 抽出来,写了一个增强的可执行文件格式解析库 https://github.com/fcharlie/buna,目前支持解析 ARM64 PE 文件,也能正确解析 PE 导出函数,然后还移植了一个 golang 编写的 demangle 库,给其增加了 MSVC C++ 函数的 demangle.

想要玩的朋友很可以看看。

写 C++ 的朋友们可以看看 https://github.com/fcharlie/bela/tree/master/src/belawin,这个是 C++ 17 开发的,我的 baulk Privexec 都在使用。


更多关于Golang Go语言中使用 Golang 写了一个 PE 格式解析库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

太专业没人回复。。。

更多关于Golang Go语言中使用 Golang 写了一个 PE 格式解析库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


不懂就问:这库一般在解决哪些问题或者哪些场景下会用到?做逆向么?

做逆向还得深入弄一下 这个做个查看器还行

在Golang中编写一个PE(Portable Executable)格式解析库是一项非常具有挑战性和实用价值的任务。PE格式是Windows操作系统上可执行文件、目标代码文件、动态链接库等文件的标准格式,理解并解析它需要对二进制文件格式有深入的了解。

首先,你需要熟悉PE文件格式的结构,包括DOS头、PE头、节表等关键部分。每个部分都有其特定的字段和含义,你需要在代码中准确地读取和解析这些字段。

在编写解析库时,你可以使用Golang的encoding/binary包来处理二进制数据的读写。这个包提供了方便的方法来读取和写入固定大小的二进制数据,非常适合处理像PE文件这样的结构化二进制数据。

此外,为了增强库的健壮性和可靠性,你需要考虑各种可能的异常情况,比如文件损坏、格式不正确等。你可以通过添加错误处理和验证机制来提高库的鲁棒性。

最后,不要忘记为你的解析库编写单元测试,以确保它的正确性和稳定性。单元测试可以帮助你在修改代码时快速发现潜在的问题,并提高代码的质量。

总之,编写一个PE格式解析库是一个复杂但有趣的任务。它需要你深入理解PE文件格式、熟练掌握Golang的二进制数据处理技巧,并注重代码的健壮性和可测试性。希望这些建议能对你有所帮助,祝你项目顺利!

回到顶部