go 逆向初探

2022-03-26

安装go

1.官网下载go

官网下载链接

普通的下载安装go,想必大家都会,这里不过多叙述

但是有要注意的点

如果你安装好了go,go安装程序会自动帮你配置环境变量,这是很正常的,但是go还有不正常的地方,他在用户变量里帮你擅自添加了go的工程文件夹

在系统变量里的path中会添加

这是正常的,不要去修改它

在用户变量里,它会添加

这是你当前用户的go工作区,可以修改

在用户变量里的path,它会添加

这是当前go工作区内的bin目录(这是存放调试go程序的工具用的,稍后会再说)

如果你修改了GOPATH,那么这个变量也要相应的修改,它是GOPATH中的bin目录

2.VScode安装拓展

在VScode的应用商店里面搜索Go

用如图所示的插件

安装完后,创建 步骤1描述的 工作区

比如 我的GOPATH是 C:\Users\wsxk\Documents\go

我就在这个path下创建go目录

然后创建 bin目录、pkg目录、src目录(放源代码)

3.尝试编写go程序

第一次尝试F5

插件会它提示你在bin目录下安装调试工具

直接全下( 注意要用vpn连上外网,不然你会下载失败)

下载成功后就可以开始编写代码了

概述

这里主要讲一下go语言的汇编机制,不定时更新(

主要是因为go它不按常理出牌啊

底层机制弄得和传统不一样,要用起来就很麻烦

1.汇编寄存器传参

和普通的linux64位程序(rdi,rsi,rdx,rcx,r8,r9)不同

举个例子

感觉不仅用到了栈,还用到了寄存器

之后有空再来深究(

2.栈帧机制

go一开始会预留空间作为栈帧,rbp的用处不是很大(可有可无

一般都是去 rsp+xxh+var_xx来作为索引

可以看到 rsp+40h就是栈帧