吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 507|回复: 12
收起左侧

[已解决] 求助编程如何实现x64注入

[复制链接]
朱朱你堕落了 发表于 2024-8-14 11:45
500吾爱币
本帖最后由 朱朱你堕落了 于 2024-8-15 08:22 编辑

自行解决了。

最佳答案

查看完整内容

可以的,无非就是壳会不会去检测文件被修改过而已,用的api是DetourBinaryEditImports。 还有另外一种注入方式,就是创建进程时注入(DetourCreateProcessWithDllEx),原理是创建挂起的进程,然后修改导入表(改内存,不改文件),微软还提供了DetourRestoreAfterWith这个API,写在dllmain可以还原之前的导入表,这样壳就检测不到了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Aurelion 发表于 2024-8-14 11:45
本帖最后由 Aurelion 于 2024-8-14 15:14 编辑
朱朱你堕落了 发表于 2024-8-14 14:21
对无壳有管用吧,如果有壳就不管用了吧?有壳的还能让他导入表编辑?

可以的,无非就是壳会不会去检测文件被修改过而已,用的api是DetourBinaryEditImports。
还有另外一种注入方式,就是创建进程时注入(DetourCreateProcessWithDllEx),原理是创建挂起的进程,然后修改导入表(改内存,不改文件),微软还提供了DetourRestoreAfterWith这个API,写在dllmain可以还原之前的导入表,这样壳就检测不到了

点评

按大佬的方法试了下,遇到个问题,搞不明白了,大佬看私信吧,望解惑。  详情 回复 发表于 2024-8-14 16:43
ibilibili 发表于 2024-8-14 12:27
本帖最后由 ibilibili 于 2024-8-14 12:35 编辑

obs有个64位注入器你可以去改改用,开源的。或者直接调用他的exe
这个文章写的调用32位注入https://www.galasp.cn/artcles/190,64位你可以自己写一个
ibilibili 发表于 2024-8-14 12:30
如果你需要启动注入可能需要修改源程序代码

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
朱朱你堕落了 + 1 + 1 我需要弄好的或成品。

查看全部评分

xieemengxin 发表于 2024-8-14 13:56
Xenos,这个有启动时注入。选中EXE 和 dll,点Jnject然后启动程序就会自动注入了。https://github.com/DarthTon/Xenos

不知道你要的是不是这个效果。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
朱朱你堕落了 + 1 + 1 很老的项目了。

查看全部评分

Aurelion 发表于 2024-8-14 14:01
微软的detours库支持导入表编辑,非常强大

点评

对无壳有管用吧,如果有壳就不管用了吧?有壳的还能让他导入表编辑?  详情 回复 发表于 2024-8-14 14:21
 楼主| 朱朱你堕落了 发表于 2024-8-14 14:21
Aurelion 发表于 2024-8-14 14:01
微软的detours库支持导入表编辑,非常强大

对无壳有管用吧,如果有壳就不管用了吧?有壳的还能让他导入表编辑?
 楼主| 朱朱你堕落了 发表于 2024-8-14 16:43
Aurelion 发表于 2024-8-14 14:47
可以的,无非就是壳会不会去检测文件被修改过而已,用的api是DetourBinaryEditImports。
还有另外一种注 ...

按大佬的方法试了下,遇到个问题,搞不明白了,大佬看私信吧,望解惑。
wtujoxk 发表于 2024-8-14 17:08
[C++] 纯文本查看 复制代码
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>

typedef struct {

    LPVOID lpDllAddr;
    HANDLE hRemoteThread;

} INJECTION_RESULT;

//Helper function for search process by name
DWORD FindProcessId(LPCSTR pszProcName) {

    PROCESSENTRY32 pEntry;
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

    if (Process32First(hSnap, &pEntry)) {

        while (Process32Next(hSnap, &pEntry)) {

            if (lstrcmp(pEntry.szExeFile, pszProcName) == ERROR_SUCCESS)
                return pEntry.th32ProcessID;

        }

    }

}

//Function for DLL Injection
INJECTION_RESULT InjectDll(HANDLE hProcess, LPCSTR pszDllPath) {

    INJECTION_RESULT irResult = { 0 };

    LPVOID lpAddr = VirtualAllocEx(hProcess, NULL, lstrlen(pszDllPath) + 1, MEM_COMMIT, PAGE_READWRITE);

    irResult.lpDllAddr = lpAddr;

    if (!lpAddr)
        return {0};

    if (!WriteProcessMemory(hProcess, lpAddr, pszDllPath, lstrlen(pszDllPath) + 1, NULL))
        return {0};

    irResult.hRemoteThread = CreateRemoteThread(hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA"), lpAddr, NULL, NULL);


    return irResult;

}

int main()
{
     
	
	LPCSTR pszPath2Dll = "C:\\Users\\Admin\\Desktop\\DllInjection\\Payload.dll";

    HANDLE hTarget = OpenProcess(PROCESS_ALL_ACCESS, FALSE, FindProcessId("Target.exe"));

    INJECTION_RESULT irResult = InjectDll(hTarget, pszPath2Dll);

    std::cout << "DLL Path allocated at " << irResult.lpDllAddr;
    std::cin.get();
    
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
朱朱你堕落了 + 1 + 1 不注意审题啊,兄弟,答非所问。&amp;amp;#128514;

查看全部评分

ibilibili 发表于 2024-8-14 23:15
xieemengxin 发表于 2024-8-14 13:56
Xenos,这个有启动时注入。选中EXE 和 dll,点Jnject然后启动程序就会自动注入了。https://github.com/Dart ...

实际上Windows的兼容性,老项目应该也可
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表