寻找无符号go程序的main函数一直以来都是个让人头疼的问题,很多golang编写的程序为了增加逆向的难度,大部分都经过了不同程度的混淆或者抹去了部分符号信息,导致无法简单地通过main.main这个函数名来定位main函数。
接下来总结一下我最近分析无符号go得出的方法。
拿最近遇到的一个混淆了函数名的go样本来举例:函数名全部做了混淆,可以依稀地从字符串中找到一些go语言编译留下的痕迹:
接下来开搞,主要的思路就是找call:
第一步,ctrl+E跳转到入口点,跟进jmp指向的代码:
跟进jmp后,滑到最下面的retn处,倒回去找call: