我正在学习golang,我想在golang中实现一个简单的Linux反调试方法。我有一个 CPP 代码,它的工作方式与我预期的相同。但不能在 golang 中做同样的事情。你们能指导我如何在 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贡献1876条经验 获得超7个赞
这里是发布的 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
}
但我对这段代码的问题是,在调用 PTRACE_TRACEME 后无法调用 exec.Command() 。将尝试找到解决此问题的方法。如果我有的话,我会在这里引用。
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消