[MRCTF2020]hello_world_go-buuctf

本文记录了一次通过ida反编译64位无壳程序解决buuctf挑战的过程,重点在于遇到的GO语言二进制文件特性。博主发现GO语言的函数混乱,通过查找明文flag找到了解题线索。同时,了解到GO语言的连续栈机制和调用约定的特殊性,以及在逆向分析中面临的困难。文章还提及了IDAGolangHelper插件,但未深入掌握其使用。最后,博主认为对GO语言的深入理解和学习是必要的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

buuctf做题记录

查壳

在这里插入图片描述
64位无壳

IDA反编译

F5了main_main函数,看函数列表的时候就觉得不对劲,之后查了查这道题似乎是GO语言写的,属于是新的知识点。
在这里插入图片描述
函数很乱,对GO语言没有了解,所以在判断语句周围点出数据查看,找到明文flag。(按’a’转换成字符串形式)
在这里插入图片描述

小记

GO语言了解甚少,如果不是这种明文flag感觉很难找到函数逻辑,查资料时找到了一个叫IDAGolangHelper的插件,不过不是很会用,学习内容+1.
(IDA似乎给了个GO1.13,可能因为插件没有这个版本才没用?)

GO语言

IDAGolangHelper下载

Go 语言二进制文件有它自己的特殊性:

  1. Go 语言内置一些复杂的数据类型,并支持类型的组合与方法绑定,这些复杂数据类型在汇编层面有独特的表示方式和用法。比如 Go 二进制文件中的 string 数据不是传统的以 0x00 结尾的 C-St
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值