请有DLL注入代码,谢谢了。 如题。通过CreateRemoteThread来注入,总是不能成功。谁有代码呢?请发到邮箱:[email protected] .再次感谢。@ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关键代码一般这样写:HANDLE hProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessID );DWORD dwSize, dwWritten;dwSize = lstrlenA( lpszDll ) + 1;LPVOID lpBuf = VirtualAllocEx( hProcess, NULL, dwSize, MEM_COMMIT, PAGE_READWRITE );if ( NULL == lpBuf ){ CloseHandle( hProcess ); // 失败处理}if ( WriteProcessMemory( hProcess, lpBuf, (LPVOID)lpszDll, dwSize, &dwWritten ) ){ // 要写入字节数与实际写入字节数不相等,仍属失败 if ( dwWritten != dwSize ) { VirtualFreeEx( hProcess, lpBuf, dwSize, MEM_DECOMMIT ); CloseHandle( hProcess ); // 失败处理 }}else{ CloseHandle( hProcess ); // 失败处理}// 使目标进程调用LoadLibrary,加载DLLDWORD dwID;LPVOID pFunc = LoadLibraryA;HANDLE hThread = CreateRemoteThread( hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pFunc, lpBuf, 0, &dwID );// 等待LoadLibrary加载完毕WaitForSingleObject( hThread, INFINITE );// 释放目标进程中申请的空间VirtualFreeEx( hProcess, lpBuf, dwSize, MEM_DECOMMIT );CloseHandle( hThread );CloseHandle( hProcess ); 这个我知道。可是怎么运行DLL中的函数呀?是不是DLL不能用MFC呢?郁闷中 将要执行的函数放在DLLMAIN里面就可以了。 将要执行的函数写在DllMain中,这样就可以在DLL被加载时调用了 那样可以么,以前试的是MFC的DLL,放在了DLL里的InitInstance()函数里了,一执行就锁死了。三楼四楼说的还没有试。等试成功了,一定给分。谢谢啦。小弟要找个时间试一下。呵呵。再有什么不懂得,多多指导哈。 为什么dll 注入后,宿主程序会崩溃呢?我选 的宿主程序是 iexplore.exe 版本是 7 ,是不是iexplore.exe有自我防注入功能呢? mfc中Ondraw()的窗口重绘,调用了函数却重绘不了? ATL封装的COM组件无法连续调用 没有为任何调用堆栈框架加载任何符号。无法显示源代码 用VC,如何将UNICODE字符串转化为ANSI字符串,要源代码。 如何获得本机中应用的端口(TCP/UDP) 扫描端口的疑问?? 关于在C++里调用::PostMessage方法给用java做的窗口发消息? DAO问题,还有内存泄漏?分不够在加,在线等待...... 请问哪儿有PLATFORM SDK开发包下载啊? 急!求助~这是个什么东东? 怎样创建的主窗口无标题栏(非对话框)? 关于生成avi文件后回放的问题 VC++2008 MFC错误
HANDLE hProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessID );DWORD dwSize, dwWritten;
dwSize = lstrlenA( lpszDll ) + 1;
LPVOID lpBuf = VirtualAllocEx( hProcess, NULL, dwSize, MEM_COMMIT, PAGE_READWRITE );
if ( NULL == lpBuf )
{
CloseHandle( hProcess );
// 失败处理
}
if ( WriteProcessMemory( hProcess, lpBuf, (LPVOID)lpszDll, dwSize, &dwWritten ) )
{
// 要写入字节数与实际写入字节数不相等,仍属失败
if ( dwWritten != dwSize )
{
VirtualFreeEx( hProcess, lpBuf, dwSize, MEM_DECOMMIT );
CloseHandle( hProcess );
// 失败处理
}
}
else
{
CloseHandle( hProcess );
// 失败处理
}
// 使目标进程调用LoadLibrary,加载DLL
DWORD dwID;
LPVOID pFunc = LoadLibraryA;
HANDLE hThread = CreateRemoteThread( hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pFunc, lpBuf, 0, &dwID );
// 等待LoadLibrary加载完毕
WaitForSingleObject( hThread, INFINITE );
// 释放目标进程中申请的空间
VirtualFreeEx( hProcess, lpBuf, dwSize, MEM_DECOMMIT );
CloseHandle( hThread );
CloseHandle( hProcess );