随笔——简单的DLL远程线程注入
2014-05-27 23:51
211 查看
#include "Windows.h" #include "stdio.h" #include "string.h" #include "stdafx.h" typedef VOID (*PFUNMSG)(char *); #pragma comment (lib,"Dll_test") void InjectDll(DWORD dwPid, char *szDllName) { if(dwPid == 0) { MessageBox(NULL, "Process name error!","Error",MB_OK); return; } else if(strlen(szDllName) == 0) { MessageBox(NULL, "Dll name error!","Error",MB_OK); return; } char *pFunName = "LoadLibraryA"; HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwPid); if(hProcess == NULL) { return ; } int nDllLen = strlen(szDllName) + sizeof(char); PVOID pDllAddr = VirtualAllocEx(hProcess, NULL, nDllLen, MEM_COMMIT, PAGE_READWRITE); if(pDllAddr == NULL) { CloseHandle(hProcess); return ; } DWORD dwWriteNum = 0; WriteProcessMemory(hProcess,pDllAddr,szDllName,nDllLen,&dwWriteNum); FARPROC pFunAddr = GetProcAddress(GetModuleHandle("Kernel32.dll"),pFunName); HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pFunAddr, pDllAddr, 0, NULL); WaitForSingleObject(hThread,INFINITE); CloseHandle(hThread); CloseHandle(hProcess); } int main() { InjectDll(3600,"C:\\Documents and Settings\\Administrator\\桌面\\dll_test\\Dll_test.dll"); return 0; }
DLL的目录不要包含空格,否则总会报错。
这里使用DLL的静态调用方式,使用语句:
#pragma comment (lib,"Dll_test")所需要的.dll和.lib都需要复制到目标文件夹下。
相关文章推荐
- delphi来写你的第一个dll文件,非常简单!
- 简单dll动态链接库的建立和应用
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 一个简单示例:利用jawin完成调用window中dll的调用
- c#.net下简单的Ajax例子——Ajax.dll
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- VC++MFC 简单的DLL加载动态链接库
- DLL 随笔
- win32 dll简单例子
- delphi来写你的第一个dll文件,非常简单!
- 简单之美:Java技术沙龙随笔 推荐
- VS2005 Web项目安装部署:利用预编译的Dll 隐藏.cs文件 的简单实现
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 动态链接库 简单的DLL (转载)
- DLL简单介绍
- 给DLL初学者——全程键盘钩子的一种简单实现
- VC dll 的简单区别
- 简单的注入dll的类
- 一个简单的HOOK API的DLL
- 如何正确简单的创建dll