我正在學(xué)習(xí)golang,我想在golang中實現(xiàn)一個簡單的Linux反調(diào)試方法。我有一個 CPP 代碼,它的工作方式與我預(yù)期的相同。但不能在 golang 中做同樣的事情。你們能指導(dǎo)我如何在 go 中做同樣的事情嗎?這是我用作參考的 C++ 代碼。#include <stdio.h>#include <sys/ptrace.h>bool isBeingTraced(){ return ptrace(PTRACE_TRACEME, 0, 1, 0) == -1;}int main(){ if (isBeingTraced()) { printf("don't trace me !!\n"); return 1; } printf("Not being traced... (maybe)\n"); return 0;}我想在 go lang 中做同樣的事情。在 go 中是否可以做同樣的事情?package mainimport "fmt"func main() { if isBeingTraced() { fmt.Println("don't trace me !!") return } fmt.Println("Not being traced... (maybe)")}func isBeingTraced() bool { return true // How to Implement that Cpp Function here?}
1 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗 獲得超7個贊
這里是發(fā)布的 c++ 代碼的 golang 等效代碼。
package main
import (
? ? "fmt"
? ? "syscall"
)
func main() {
? ? if isBeingTraced() {
? ? ? ? fmt.Println("don't trace me !!")
? ? ? ? return
? ? }
? ? fmt.Println("Not being traced...? (maybe)")
}
func isBeingTraced() bool {?
? ? _, _, res := syscall.RawSyscall(syscall.SYS_PTRACE, uintptr(syscall.PTRACE_TRACEME), 0, 0)
? ? return res == 1
}
但我對這段代碼的問題是,在調(diào)用 PTRACE_TRACEME 后無法調(diào)用 exec.Command() 。將嘗試找到解決此問題的方法。如果我有的話,我會在這里引用。
- 1 回答
- 0 關(guān)注
- 144 瀏覽
添加回答
舉報
0/150
提交
取消