借助Ghidra逆向分析Go二进制程序
发布时间:2022-07-11 15:21:48 所属栏目:安全 来源:互联网
导读:Go(又称Golang)是Google公司于2007年设计的一种开源编程语言,并于2012年向公众开放。多年来,它在开发者中广受欢迎,但它并不总是被用于善意的用途。正如经常发生的那样,它也吸引了恶意软件开发者的注意。 对于恶意软件开发者来说,使用Go语言是一个诱人的
Go(又称Golang)是Google公司于2007年设计的一种开源编程语言,并于2012年向公众开放。多年来,它在开发者中广受欢迎,但它并不总是被用于“善意”的用途。正如经常发生的那样,它也吸引了恶意软件开发者的注意。 对于恶意软件开发者来说,使用Go语言是一个诱人的选择,因为它支持交叉编译,也就是说,可以把Go语言编写的代码编译成在不同操作系统上运行的二进制文件。这样的话,就能够让攻击者的生活变得更加轻松,因为他们不必为每个目标环境开发和维护不同的代码库了,岂不快哉。 对Go二进制程序进行逆向分析的必要性 由于Go编程语言的某些特性的原因,逆向工程师在处理Go二进制文件时通常会遇到许多阻力。尽管目前的逆向分析工具(例如反汇编器)可以很好地分析非常流行的语言(例如C、C++、.NET)编写的二进制文件,但是Go语言却带来了新的挑战,使得分析工作变得更加繁琐。 Ghidra是美国国家安全局开发的一个开源逆向分析工具,我们经常使用它来进行恶意软件的静态分析。我们可以为Ghidra创建自定义脚本和插件,以按需实现特定的功能。在这里,我们将利用Ghidra的这个特性,通过创建自定义的脚本来帮助我们分析Go二进制程序。 本文讨论的主题是在Hacktivity2020在线会议上公布的,相关的幻灯片和其他材料可以在我们的Github存储库中下载。 利用Ghidra逆向分析Go二进制程序(上篇) Ghidra的Functions窗口列出了二进制文件中已经定义的所有函数。在非剥离型的编译版本中,函数名称都会显示出来,这对逆向工程师来说具有很大的帮助。 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |