首页
社区
课程
招聘
[分享]代码注入实例
发表于: 2017-5-3 21:02 6462

[分享]代码注入实例

2017-5-3 21:02
6462

简单实例描述代码注入:
简单描述:代码注入是一种向目标进程注入代码,并使之独立运行的技术,一般调用CreateRemoteThread() 创建远程线程的方式完成
原理:分别将代码和数据写入远程线程,最终将代码和数据以线程参数的形式使之运行

Dll注入与代码注入的比较:
1.Dll注入,将数据和代码放进dll文件,然后将整个dll注入到远程进程中。
2.代码注入直接将数据代码写进远程进程,使之运行。
优点:
1.代码注入占用内存小
2.难以查找痕迹(dll注入可通过进程查看工具如 Process Explorer等查看)
3.不需要额外的dll文件,
4.dll注入技术主要用在负复杂代码量大的时候,
源码分析:
//预定义 变量以及函数指针

typedef struct _THREAD_PARAM {

    FARPROC pFunc[2];               // LoadLibraryA(), GetProcAddress()

    char    szBuf[4][128];          // "user32.dll", "MessageBoxA", "www.reversecore.com", "ReverseCore"

} THREAD_PARAM, *PTHREAD_PARAM;

 

typedef HMODULE (WINAPI *PFLOADLIBRARYA)

(

    LPCSTR lpLibFileName

);

 

typedef FARPROC (WINAPI *PFGETPROCADDRESS)

(

    HMODULE hModule,

    LPCSTR lpProcName

);

 

typedef int (WINAPI *PFMESSAGEBOXA)

(

    HWND hWnd,

    LPCSTR lpText,

    LPCSTR lpCaption,

    UINT uType

);


BOOL InjectCode(DWORD dwPID)

{

    HMODULE         hMod            = NULL;

    THREAD_PARAM    param           = {0,};

    HANDLE          hProcess        = NULL;

    HANDLE          hThread         = NULL;

    LPVOID          pRemoteBuf[2]   = {0,};

    DWORD           dwSize          = 0;

 

    hMod = GetModuleHandleA("kernel32.dll");

 

    // set THREAD_PARAM

    param.pFunc[0] = GetProcAddress(hMod, "LoadLibraryA");

    param.pFunc[1] = GetProcAddress(hMod, "GetProcAddress");

    strcpy_s(param.szBuf[0], "user32.dll");

    strcpy_s(param.szBuf[1], "MessageBoxA");

    strcpy_s(param.szBuf[2], "www.reversecore.com");

    strcpy_s(param.szBuf[3], "ReverseCore");

 

    // Open Process

    if ( !(hProcess = OpenProcess(PROCESS_ALL_ACCESS,   // dwDesiredAccess

                                  FALSE,                // bInheritHandle

                                  dwPID)) )             // dwProcessId

    {

        printf("OpenProcess() fail : err_code = %d\n", GetLastError());

        return FALSE;

    }

 

    // Allocation for THREAD_PARAM

    dwSize = sizeof(THREAD_PARAM);

    if( !(pRemoteBuf[0] = VirtualAllocEx(hProcess,          // hProcess

                                      NULL,                 // lpAddress

                                      dwSize,               // dwSize

                                      MEM_COMMIT,           // flAllocationType


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 2
支持
分享
最新回复 (7)
雪    币: 1431
活跃值: (4418)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
2
不知道是不是我电脑出了问题,整屏幕都是代码
2017-5-3 21:13
0
雪    币: 2325
活跃值: (4913)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
都是代码厉害了·!
2017-5-3 21:59
0
雪    币: 1432
活跃值: (3067)
能力值: ( LV9,RANK:156 )
在线值:
发帖
回帖
粉丝
4
学习一下。
2017-5-3 22:01
0
雪    币: 465
活跃值: (667)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
黑手鱼 不知道是不是我电脑出了问题,整屏幕都是代码[em_10]
呵呵,代码溢屏了,水印?
2017-5-3 22:12
0
雪    币: 1431
活跃值: (4418)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
6
ssarg 呵呵,代码溢屏了,水印?
真是我电脑问题。。。。。
2017-5-4 08:02
0
雪    币: 1441
活跃值: (299)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
7
不是大家、电脑出问题啦,是编辑的时候出点问题。,。
2017-5-4 13:03
0
雪    币: 205
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
你好方便加个微信吗有些问题想向您请教13263582639
2019-10-3 21:03
0
游客
登录 | 注册 方可回帖
返回
//