zoukankan      html  css  js  c++  java
  • 远程线程注入

    1,打开一个进程
    2,在进程内分配一块内存
    3,把要导入的库名写入空间
    4,创建远程线程,以LoadLibrary为线程函数,写入的库名为参数
    DWORD Inject(DWORD PID, WCHAR* ModuleName) {
        HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
        if (hProcess == NULL) {
            MessageBox(0, L"无法打开进程",0,0);
            return 0;
        }
        DWORD LEN = (wcslen(ModuleName) + 1) * sizeof(WCHAR);
        LPVOID moduleNameAddr= VirtualAllocEx(hProcess, NULL, LEN, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
        if (moduleNameAddr == NULL) {
            ::CloseHandle(hProcess);
            MessageBox(0, L"无法分配内存", 0, 0);
            return 0;
        }
        BOOL writeCheck = WriteProcessMemory(hProcess, moduleNameAddr, ModuleName, LEN, NULL);
        if (writeCheck == FALSE) {
            VirtualFreeEx(hProcess, moduleNameAddr, LEN, MEM_RELEASE);
            MessageBox(0, L"无法写入内存", 0, 0);
            ::CloseHandle(hProcess);
            return 0;
        }
        HANDLE hThread = ::CreateRemoteThread(hProcess, NULL, NULL,
            (LPTHREAD_START_ROUTINE)LoadLibraryW,
            moduleNameAddr, NULL, NULL);
        if (hThread == NULL) {
            VirtualFreeEx(hProcess, moduleNameAddr, LEN, MEM_RELEASE);
            MessageBox(0, L"创建线程失败", 0, 0);
            ::CloseHandle(hProcess);
            return 0;
        }
        ::CloseHandle(hProcess);
        ::CloseHandle(hThread);
        MessageBox(0, L"注入成功", L"", 0);
        return 0;
    }
  • 相关阅读:
    Subsets
    Search a 2D Matrix II
    Search a 2D Matrix
    Search Insert Position
    Search for a Range
    Sort Colors
    Sort List
    语音笔记04-3 TEHO,COR
    语音笔记04-2 拨号规则
    语音笔记04-1 CME实验
  • 原文地址:https://www.cnblogs.com/harmonica11/p/14127099.html
Copyright © 2011-2022 走看看