郁金香 初级班 知识总结

HANDLE 进程句柄获取()
{
    HWND ifnd = FindWindowA("MainWindow", "植物大战僵尸中文版");
    DWORD PID, TID;
    TID = GetWindowThreadProcessId(ifnd, &PID);
    HANDLE 全局进程句柄 = OpenProcess(PROCESS_ALL_ACCESS, 0, PID);
    return 全局进程句柄;
}


HWND 游戏窗口句柄(){
    FindWindowA("GxWindowClassD3d", "魔兽世界");
}

DWORD R4(UINT_PTR 地址)
{
    __try
    {
        return *(DWORD*)地址;//ReadProcessMemory
    }
    __except (1)
    {
        return 0;
    }
}


 int 读内存(UINT_PTR 读地址1)
{
     HANDLE 进程句柄 = 进程句柄获取();
    //存储地址数据
    unsigned int 返回值 = 0;
    //读取游戏内存
    ReadProcessMemory(进程句柄, (LPCVOID)读地址1, &返回值, 4, NULL);
    
    return 返回值;
}

int 写地址(UINT_PTR 读地址,int 修改值) {
    HANDLE 全局进程句柄 = 进程句柄获取();
    int b=WriteProcessMemory(全局进程句柄, (LPCVOID)读地址, &修改值, 4, NULL);
    if (b == 0)
    {
    printf("修改失败\n");
    if (全局进程句柄 == 0)
    {
        printf("进程句柄未找到 可能是由于游戏未打开 或者游戏类名或者名字错误\n");
        
    }
    };

}

char 文件路径[] = "C:\\Users\\cxyck\\Desktop\\植物大战僵尸\\1.dll";


void DLL写入()
{
    HWND 窗口句柄 = 0;
    DWORD pid = 0;
    HANDLE 进程句柄 = 0;
    char mu[] = "植物大战僵尸中文版";
    窗口句柄 = FindWindowA(NULL, mu);
    GetWindowThreadProcessId(窗口句柄, &pid);
    进程句柄 = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);



    void* nj = 0;
    printf("%p\n", 进程句柄);
    nj = VirtualAllocEx(进程句柄, NULL, 4 * 1024, MEM_COMMIT, PAGE_READWRITE);

    printf("%p\n", nj);
    WriteProcessMemory(进程句柄, nj, 文件路径, 0x555, 0);
    CreateRemoteThread(进程句柄, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, nj, 0, 0);
    printf("%p", nj);
}




函数
VirtualAllocEx ---在指定进程的虚拟空间保留或提交内存区域
nj = VirtualAllocEx(进程句柄, NULL, 4 * 1024, MEM_COMMIT, PAGE_READWRITE);



WriteProcessMemory---此函数能写入某一进程的内存区域(直接写入会出Access Violation错误),故需此函数入口区必须可以访问,否则操作将失败。

CreateRemoteThread----创建一个新的线程 多了一个进程句柄的参数 跨进程创建线程
CreateThread //创建一个新的线程






MessageBoxA--信息弹窗





AllocConsole显示控制台
FreeConsole();//关闭控制台
{freopen_s(&file,"CONOUT$", "w+t", stdout); //输出重定向CreateFile CreateFileA CreateFileW}
控制台防止卡线程

::SetTimer---定时器
::SetTimer(游戏窗口句柄, 10086, 1, 主线代码());//定时器 也可以挂主线程 主线代码中就是挂的主线程代码


ReadProcessMemory--读内存
ReadProcessMemory(进程句柄, (LPCVOID)读地址1, &返回值, 4, NULL);




WriteProcessMemory---写内存
WriteProcessMemory(全局进程句柄, (LPCVOID)读地址, &修改值, 4, NULL);

FindWindowA 通过窗口标题或者类名 来获取窗口句柄

GetWindowThreadProcessId 获取窗口所在的进程PID

OpenProcess 获取目标进程句柄

FreeLibraryAndExitThread //释放DLL并退出当前线程

Sleep 延时

不是很多

posted @ 2022-10-28 17:27  逆向狗  阅读(59)  评论(0)    收藏  举报