Golang 程序与 Radare2 逆向

逆向工程 雷达2
2021-07-03 14:08:07

我试图了解如何使用radare2 反转golang 程序。为了练习,我在 Go 中创建了一个最小的程序:

package main
import "fmt"
func main() {
    fmt.Println("Hello World!")
}

在下面生成的汇编代码中,我找到了主函数 (main.main),但我无法弄清楚如何显示传入 Println 的参数的字符串。

;-- sym.go.main.main:
mov rcx, qword fs:[0xfffffffffffffff8]
cmp rsp, qword [rcx + 0x10]
jbe 0x485097
sub rsp, 0x48
mov qword [var_40h], rbp
lea rbp, [var_40h]
xorps xmm0, xmm0
movups xmmword [var_30h], xmm0
lea rax, [0x004958e0]
mov qword [var_30h], rax
lea rax, obj.main.statictmp_0 ; 0x4c8490
mov qword [var_38h], rax
lea rax, [var_30h]
mov qword [rsp], rax
mov qword [var_8h], 1
mov qword [var_10h], 1
call sym.fmt.Println
mov rbp, qword [var_40h]
add rsp, 0x48
ret
call sym.runtime.morestack_noctxt
jmp sym.main.main

有小费吗 ?我是新来的。

1个回答

对于未来的人:现在 IDA 对 golang 有本机支持,并且对 x64 版本免费,请查看免费软件版本。(此处)(2021 年 6 月 15 日)

这是我在GO分析和逆向工程中使用的一套工具,我相信在简化之前对你使用它会非常有用,但你仍然需要IA-32/64,GO的知识-RE KIT,我必须给你的另一个提示是“密切关注 debbug 部分”,GO 开发人员经常忘记 debbug 部分,这可以让你在分析时更轻松,这里是我治愈的有用材料列表会帮助你:

  1. 逆转 Linux 恶意软件 GO
  2. 像专业人士一样反转 GO 二进制文件
  3. Defcon - 逆向 golang
  4. 实用工具