CreateReomteThread() API方式注入DLL

一、远程线程方法注入DLL

1、运行notepad.exe查看pid号

2、运行debugview工具

3、使用InjectDll.exe程序演示dll注入,命令 InjectDll.exe pid myhack.dll

4、此时在debugview中检测到dll注入

5、查看notepad.exe进程也可以看到新注入的myhack.dll

6、在文件夹下看到下载的index.html文件,可以查看其内容

二、myhack.cpp源码

#include "windows.h"
#include "tchar.h"

#pragma comment(lib, "urlmon.lib")

#define DEF_URL     	(L"http://www.naver.com/index.html")	//要下载的源文件地址 
#define DEF_FILE_NAME   (L"index.html")							//本地保存的文件名称 

HMODULE g_hMod = NULL;

DWORD WINAPI ThreadProc(LPVOID lParam)
{
    TCHAR szPath[_MAX_PATH] = {0,};

    if( !GetModuleFileName( g_hMod, szPath, MAX_PATH ) )
        return FALSE;
	
    TCHAR *p = _tcsrchr( szPath, '\\' );
    if( !p )
        return FALSE;

    _tcscpy_s(p+1, _MAX_PATH, DEF_FILE_NAME);

    URLDownloadToFile(NULL, DEF_URL, szPath, 0, NULL);	//指定URL下载文件 

    return 0;
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    HANDLE hThread = NULL;

    g_hMod = (HMODULE)hinstDLL;

    switch( fdwReason )
    {
    case DLL_PROCESS_ATTACH : 
        OutputDebugString(L"<myhack.dll> Injection!!!");	//输出调试信息 
        hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);	//创建进程,执行dll中操作 
        CloseHandle(hThread);
        break;
    }

    return TRUE;
}

三、myhack.dll调试

接下来对notepad.exe中的myhack.dll进行调试定位

1、运行notepad程序,在OD中选择文件 — 附加 添加已运行的notepad

2、设置调试 — 事件 — 中断于新模块dll

3、启动Injection.exe程序注入myhack.dll。此时调试器中断在myhack.dll加载上(如果没有停在此处,F9执行直到停在myhack.dll处)

4、右键选择跟随入口来到入口地址100013EB处

此处就是myhack.dll注入到notepad后的汇编代码

您可能还喜欢...