远程注入代码,远程调用Call

    xiaoxiao2025-03-25  15

     1、远程注入代码,调用打坐CALL

       

     HANDLE CreateRemoteThread(

     HANDLE hProcess,        //在指定的进程句柄里创建线程

     LPSECURITY_ATTRIBUTES lpThreadAttributes,  //安全结构指针 nil

     DWORD dwStackSize,      // 初始创建线程堆栈大小0

     LPTHREAD_START_ROUTINE lpStartAddress,//CALL地址

     LPVOID lpParameter,     // 给远程CALL 传递的参数 nil

     DWORD dwCreationFlags,  // 创建标志 0

     LPDWORD lpThreadId      // 返回创建线程ID@tid

    );

    LPVOID VirtualAllocEx(

     HANDLE hProcess,  //进程句柄 

     LPVOID lpAddress, // 指定分配空间的起始地址

     DWORD dwSize,     // 分配空间大小

     DWORD flAllocationType,

                        // 分配空间类型

     DWORD flProtect   // 空间页面访问权限

    );

     

      用spy++获取标题:'Element Client

     

     

    2、远程调用CALL

    CreateRemoteThread

     ThreadHandle:=  CreateRemoteThread(hProcess,nil, 0,打坐CALL地址, nil, 0, 返回远程创建线程ID);

    //FindWindow 获取窗口

    //GetWindowThreadProcessId //获取窗口的线程TID

    //OpenProcess              //打开进程 获取进程句柄

    //VirtualAllocEx(hProcess,nil,Size,MEM_COMMIT orMEM_RESERVE,PAGE_EXECUTE_READWRITE);

    //WriteProcessMemory

    //CreateRemoteThread

    //WaitForSingleObject

    //GetExitCodeThread

    //VirtualFreeEx

    asm

      push 1

      mov ecx,$95E800

      add ecx,$1C

      mov ecx,[ecx] //ecx=Pointer(ecx^)

      add ecx,$24    // ecx=ecx+$24

      mov ecx,[ecx]

      add ecx,$918

      mov ecx,[ecx]

      add ecx,$14

      mov ecx,[ecx]

      add ecx,$1C

      mov ecx,[ecx]

      mov ebx,$452b20

      call ebx

      end;

     

    var

      h:HWND;

     tid,hProcess:Thandle;

      Calladdr:Pointer;

      writeByte:DWORD;

    begin

       h:=findwindow(nil,'Element Client');

       windows.GetWindowThreadProcessId(h,tid);

       hProcess:=windows.OpenProcess(windows.PROCESS_ALL_ACCESS,false,tid);

        //在游戏进程里分配内存空间

        Calladdr:=VirtualAllocEx(hProcess,nil,windows.MAX_PATH,windows.MEM_COMMITOR windows.MEM_RESERVE,windows.PAGE_EXECUTE_READWRITE);

        //在游戏内存空间里写入代码

       WriteProcessMemory(hProcess,Calladdr,@sitCall,MAX_PATH,writeByte);

        //调用远程代码

       CreateRemoteThread(hProcess,nil,0,Calladdr,nil,0,writeByte);

        VirtualFreeEx(hProcess,nil,windows.MAX_PATH,windows.MEM_COMMITOR windows.MEM_RESERVE);

    end;

    转载请注明原文地址: https://ju.6miu.com/read-1297368.html
    最新回复(0)