首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Golang(CreateRemoteThread)的DLL注入

使用Golang(CreateRemoteThread)的DLL注入
EN

Stack Overflow用户
提问于 2021-09-29 19:20:27
回答 1查看 939关注 0票数 1

我试着用Golang做DLL注入。

代码:

代码语言:javascript
复制
package main

import (
    "fmt"
    "github.com/JamesHovious/w32"
    "syscall"
)

func main(){
    //just a random dll
    dllPath := "C:\\Windows\\System32\\wevtapi.dll"
    procID := 8124
    hProc, handleErr  := w32.OpenProcess(w32.PROCESS_ALL_ACCESS, false, uint32(procID))
    if handleErr != nil{
        fmt.Println("handleErr:", handleErr)
    }
    kernel32DLL, dllLoadErr := syscall.LoadLibrary("kernel32.dll")
    if dllLoadErr != nil{
        fmt.Println("dllLoadErr:", dllLoadErr)
    }
    addr, addrErr := syscall.GetProcAddress(syscall.Handle(kernel32DLL), "LoadLibraryA")
    if addrErr != nil{
        fmt.Println("addrErr:", addrErr)
    }
    arg, allocErr := w32.VirtualAllocEx(hProc, 0, len(dllPath)*2, w32.MEM_RESERVE | w32.MEM_COMMIT, w32.PAGE_READWRITE)
    if allocErr != nil{
        fmt.Println("allocErr:", allocErr)
    }
    writeErr := w32.WriteProcessMemory(hProc, uint32(arg), []byte(dllPath), 0)
    if writeErr != nil{
        fmt.Println("writeErr:", writeErr)
    }
    _, _, threadErr := w32.CreateRemoteThread(hProc, nil, 0, uint32(addr), arg, 0)
    if threadErr != nil{
        fmt.Println("threadErr:", threadErr)
    }
}

它不返回任何错误,但我在process中看不到目标进程下的wevtapi.dll。我所针对的进程是32位版本的Notepad++。可执行文件也被编译为32位。我搞不懂为什么不起作用了。

加法:我使用64位版本的windows

EN

回答 1

Stack Overflow用户

发布于 2021-09-30 10:12:11

密码很好用。问题是使用64位动态链接库(C:\Windows\System32\wevtapi.dll)。64位窗口上的32位DLL位于C:\ windows \SysWOW64 64中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69382287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档