|
|
@@ -14,11 +14,13 @@ import (
|
|
|
"bytes"
|
|
|
"debug/elf"
|
|
|
"fmt"
|
|
|
- "golang.org/x/arch/arm64/arm64asm"
|
|
|
- "golang.org/x/arch/x86/x86asm"
|
|
|
"os"
|
|
|
"strings"
|
|
|
"syscall"
|
|
|
+
|
|
|
+ "golang.org/x/arch/arm64/arm64asm"
|
|
|
+ "golang.org/x/arch/x86/x86asm"
|
|
|
+
|
|
|
//"time"
|
|
|
"unsafe"
|
|
|
)
|
|
|
@@ -88,6 +90,7 @@ type JvmInjector struct {
|
|
|
NetSendFuncCheck bool
|
|
|
}
|
|
|
Uprobe UprobeData
|
|
|
+ Rootfs string
|
|
|
}
|
|
|
|
|
|
func (j *JvmInjector) checkEnc(code []byte, start, len uint64, enc uint32) error {
|
|
|
@@ -589,8 +592,9 @@ func printCodeData(data LibNetInfo) {
|
|
|
|
|
|
func (j *JvmInjector) jvmInjectLib() int {
|
|
|
dll := C.CString(j.DebugLibNetInfo.LibPath) // 替换为实际的DLL路径
|
|
|
+ rootfs := C.CString("") // 替换为实际的DLL路径
|
|
|
defer C.free(unsafe.Pointer(dll)) // 确保在使用完字符串后释放内存
|
|
|
- result := C.cw_inject_library(C.int(j.Pid), C.int(1), dll)
|
|
|
+ result := C.cw_inject_library(C.int(j.Pid), C.int(1), dll, rootfs)
|
|
|
fmt.Printf("Result: %d\n", result)
|
|
|
return int(result)
|
|
|
}
|