我想打印當前程序的虛擬內存內容從0x10000
到0x50000
(在我的系統上包含系統調用蹦牀的區域)。如何fmt.Println()內存不是由go程序分配的?
package main
import (
"syscall"
"unsafe"
)
func main() {
syscall.Syscall(SYS_WRITE, uintptr(1), uintptr(unsafe.Pointer(0x10000)), uintptr(0x40000))
}
然而,當我試圖編譯我收到錯誤:
cannot convert 65536 (type int) to type unsafe.Pointer
在我的情況,cgo
被禁用(import "C"
失敗在編譯時)。
也是syscall.Syscall(SYS_WRITE
是唯一的方法嗎?
我在golang認識。我知道這可以被認爲是越界讀取,但這是需要知道是否啓用了特定的系統調用。 – user2284570