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后的汇编代码