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;
    }
  • 相关阅读:
    脚本
    vim 马哥
    动态删除节点
    动态插入节点
    动态创建内容
    获取html元素内容
    设置元素的属性
    获取元素的属性
    jquery中:input和input的区别
    jQuery选择器总结
  • 原文地址:https://www.cnblogs.com/harmonica11/p/14127099.html
Copyright © 2011-2022 走看看