MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 远路注入代码,进程崩溃

远路注入代码,进程崩溃

www.MyException.Cn  网友分享于:2013-02-26  浏览:24次
远程注入代码,进程崩溃
注入的代码如下:
C/C++ code

#include <Windows.h>
#include <iostream>
using namespace std;
int EnableDebugPriv(const char * name)
{
    HANDLE hToken;
    TOKEN_PRIVILEGES tp;
    LUID luid;
    //打开进程令牌环
    if(!OpenProcessToken(GetCurrentProcess(),
        TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
        &hToken) )
    {
        MessageBox(0,"OpenProcessToken error.\n","",0);
        return true;
    }
    //获得进程本地唯一ID
    if(!LookupPrivilegeValue(NULL,name,&luid))
    {
        MessageBox(0,"LookupPrivilege error!\n","",0);
    }

    tp.PrivilegeCount = 1;
    tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    tp.Privileges[0].Luid = luid;
    //调整权限
    if(!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL) )
    {
        MessageBox(0,"AdjustTokenPrivileges error!\n","",0);
        return true;
    }

    return false;
}
int main(){
    int result=EnableDebugPriv("SeDebugPrivilege");
    if (result)
    {
        MessageBox(NULL,"提权失败","提示",MB_OK);
        return 1;
    }
    HWND hWnd=FindWindow(NULL,"MyGame");
    if (!hWnd)
    {
        MessageBox(NULL,"窗口未开启","提示",MB_OK);
        return 1;
    }
    DWORD pId;
    GetWindowThreadProcessId(hWnd,&pId);
    HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pId);
    if(!hProcess){
        MessageBox(NULL,"进程打开失败","提示",MB_OK);
        return 1;
    }
    //在远程进程中分配内存
    DWORD tId;
    HANDLE hThread=CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)(0X00F91730),NULL,NULL,&tId);//0X00DC2E30 这个是我的被注入程序的一个函数的开始头`
    if (!hThread)
    {
        MessageBox(NULL,"创建远程进程失败","提示",MB_OK);
        return 1;
    }

    MessageBox(NULL,"代码已成功注入","提示",MB_OK);
    return 0;
}


被注入程序的函数:
Assembly code

00F91730 > .  A1 C854F900   MOV EAX,DWORD PTR DS:[blood]
00F91735   .  56            PUSH ESI
00F91736   .  83C0 14       ADD EAX,14

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有