资源共享吧|易语言论坛|逆向破解教程|辅助开发教程|网络安全教程|www.zygx8.com|我的开发技术随记

 找回密码
 注册成为正式会员
楼主: admin

第1课明文发包CALL查找-x64高级C++辅助游戏逆向第三期

  [复制链接]

5

主题

315

帖子

0

精华

终身高级VIP会员

懒人一个

Rank: 7Rank: 7Rank: 7

资源币
224
积分
346
贡献
0
在线时间
68 小时
注册时间
2018-3-14
最后登录
2024-4-27

终身VIP会员

发表于 2023-4-13 18:14:11 | 显示全部楼层

祝资源共享吧越来越火!
回复 支持 反对

使用道具 举报

1

主题

40

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
3
积分
41
贡献
0
在线时间
19 小时
注册时间
2021-11-17
最后登录
2024-5-13

终身VIP会员

发表于 2023-4-16 19:01:31 | 显示全部楼层
ddddddd
回复

使用道具 举报

2

主题

49

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
7
积分
51
贡献
0
在线时间
8 小时
注册时间
2023-4-21
最后登录
2023-7-28

终身VIP会员

发表于 2023-4-21 20:36:57 | 显示全部楼层
优秀
回复

使用道具 举报

1

主题

13

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
6
积分
14
贡献
0
在线时间
2 小时
注册时间
2023-4-22
最后登录
2023-11-23

终身VIP会员

发表于 2023-4-23 07:37:51 | 显示全部楼层
6666666
回复

使用道具 举报

2

主题

130

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
7
积分
132
贡献
0
在线时间
6 小时
注册时间
2023-4-24
最后登录
2024-1-21

终身VIP会员

发表于 2023-4-25 23:06:24 | 显示全部楼层
669666666
回复

使用道具 举报

4

主题

244

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
174
积分
571
贡献
0
在线时间
25 小时
注册时间
2016-1-4
最后登录
2024-5-13

终身VIP会员

发表于 2023-4-28 18:12:53 | 显示全部楼层
下载下载下载下载下载下载下载下载下载下载下载
回复 支持 反对

使用道具 举报

2

主题

68

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
7
积分
70
贡献
0
在线时间
18 小时
注册时间
2022-3-22
最后登录
2024-5-13

终身VIP会员

发表于 2023-5-3 10:36:17 | 显示全部楼层
1
回复

使用道具 举报

2

主题

48

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
7
积分
50
贡献
0
在线时间
49 小时
注册时间
2022-12-19
最后登录
2024-5-15

终身VIP会员

发表于 2023-5-7 15:35:20 | 显示全部楼层
感谢分享。。。
回复

使用道具 举报

8

主题

268

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
48
积分
273
贡献
0
在线时间
83 小时
注册时间
2019-3-19
最后登录
2024-4-18

终身VIP会员

发表于 2023-5-12 23:52:51 | 显示全部楼层
学习               
回复 支持 反对

使用道具 举报

2

主题

100

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
43
积分
103
贡献
0
在线时间
30 小时
注册时间
2019-3-29
最后登录
2024-4-2

终身VIP会员

发表于 2023-5-13 02:30:55 | 显示全部楼层
#include <windows.h>
#include <iostream>
#include <vector>
#include <memory>

// 函数声明
DWORD GetProcessID(const wchar_t* szProcessName);
BOOL InjectDLL(DWORD dwPid);

int main()
{
    DWORD dwPid = GetProcessID(L"target_process.exe");
    if (dwPid == 0xFFFFFFFF)
    {
        std::cout << "GetProcessID failed." << std::endl;
        return 1;
    }
    if (!InjectDLL(dwPid))
    {
        std::cout << "InjectDLL failed." << std::endl;
        return 1;
    }
    std::cout << "InjectDLL success." << std::endl;
    return 0;
}

DWORD GetProcessID(const wchar_t* szProcessName)
{
    // 创建快照
    std::unique_ptr<void, decltype(&CloseHandle)> hSnap(CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL), &CloseHandle);
    if (hSnap == nullptr)
    {
        std::cout << "CreateToolhelp32Snapshot failed." << std::endl;
        return 0xFFFFFFFF;
    }

    // 遍历进程列表,查找指定名称进程
    PROCESSENTRY32W pe = { sizeof(pe) };
    for (BOOL bRet = Process32FirstW(hSnap.get(), &pe); bRet; bRet = Process32NextW(hSnap.get(), &pe))
    {
        if (wcscmp(szProcessName, pe.szExeFile) == 0)
            return pe.th32ProcessID;
    }
    return 0xFFFFFFFF;
}

BOOL InjectDLL(DWORD dwPid)
{
    std::vector<BYTE> Shellcode = { 0x48, 0x83, 0xEC, 0x28, 0x48, 0x8B, 0xC1, 0x48, 0x8D, 0x54, 0x24, 0x20, 0x48, 0x8B, 0x49, 0x18, 0xB8,
                                    0x00, 0x00, 0x00, 0x00, 0xFF, 0xD0, 0x48, 0x83, 0xC4, 0x28, 0xC3 };

    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid);
    if (hProcess == NULL)
    {
        std::cout << "OpenProcess failed." << std::endl;
        return FALSE;
    }
    SIZE_T nShellcodeSize = Shellcode.size();

    // 在目标进程分配一块内存,放Shellcode
    LPVOID pRemoteShellcode = VirtualAllocEx(hProcess, NULL, nShellcodeSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    if (pRemoteShellcode == NULL)
    {
        std::cout << "VirtualAllocEx failed." << std::endl;
        return FALSE;
    }

    // 将Shellcode写入目标进程空间中
    if (!WriteProcessMemory(hProcess, pRemoteShellcode, Shellcode.data(), nShellcodeSize, NULL))
    {
        std::cout << "WriteProcessMemory failed." << std::endl;
        return FALSE;
    }

    // 找到目标线程
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
    DWORD dwThreadId = 0;
    THREADENTRY32 te;
    for (BOOL ret = Thread32First(hSnap, &te); ret; ret = Thread32Next(hSnap, &te))
    {
        if (te.th32OwnerProcessID == dwPid)
        {
            dwThreadId = te.th32ThreadID;
            break;
        }
    }
    CloseHandle(hSnap);

    // 指定目标线程,执行Shellcode
    HANDLE hThread = OpenThread(THREAD_SET_CONTEXT, FALSE, dwThreadId);
    DWORD dwRet = QueueUserAPC((PAPCFUNC)pRemoteShellcode, hThread, NULL);
    if (dwRet == 0)
    {
        std::cout << "QueueUserAPC failed." << std::endl;
        return FALSE;
    }

    // 等待远程线程结束
    WaitForSingleObject(hThread, INFINITE);

    return TRUE;
}
回复 支持 反对

使用道具 举报

 点击右侧快捷回复  

本版积分规则

小黑屋|资源共享吧 ( 琼ICP备2021005790号-1 )

GMT+8, 2024-5-16 07:00 , Processed in 0.066723 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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