【问题标题】:How to get functions’s start address using the unsafe package?如何使用 unsafe 包获取函数的起始地址?
【发布时间】:2018-03-14 21:05:13
【问题描述】:

我需要得到一个go函数的第一条cpu指令(不是汇编或cgo),但是在golang中,func dummy() {}&dummy不会导致函数起始地址,但到代表函数的堆栈上的变量起始地址。

所以在我的例子中,&dummy 不会指向一个指针,而是指向一个我在 golang 源代码中找不到描述的晦涩的结构……

【问题讨论】:

  • 更准确地说,我没有比this更进一步。
  • 我想,你应该在go源代码(声明在/src/go/types/type.go)中寻找类型签名,因为函数不是通过指针传递,而是通过签名。

标签: go x86-64 memory-address google-nativeclient


【解决方案1】:

试试这个:

functionLocation := **(**uintptr)(unsafe.Pointer(&orig))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多