能力值:
( LV2,RANK:10 )
2 楼
哪个帮我编译看看?
#include <iostream>
#include <windows.h>
#include <Tlhelp32.h>
using namespace std; bool EnablePrivilege( PCSTR name )
{//提升进程权限
//获得指定的权限值
TOKEN_PRIVILEGES priv = { 1, { 0, 0, SE_PRIVILEGE_ENABLED } };
bool bLookup = LookupPrivilegeValue( NULL, name, &priv.Privileges[0].Luid );
if( !bLookup )
{
//OutLog("查找指定权限值失败");
return false;
}
//打开进程的访问标记
HANDLE hToken = NULL;
bool bOpenToken = OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken );
if( !bOpenToken )
{
//OutLog("打开进程的访问标记失败");
return false;
}
//调整权限
bool bAdjustpriv = AdjustTokenPrivileges( hToken, false, &priv, sizeof( priv ), 0, 0 );
if( !bAdjustpriv )
{
//OutLog("调整权限失败");
CloseHandle( hToken );
return false;
}
CloseHandle( hToken );
return true;
}
void main()
{
char lpDllName[100] = {0};
GetCurrentDirectory( 100, lpDllName );
strcat( lpDllName, "\\InjectProcessDll.dll" );
cout<<"Dll当前路径:"<<lpDllName<<endl;
HANDLE hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hSnapshot == NULL )
{
cout<<"Create Snapshot false."<<endl;
cin.get();
return;
}
PROCESSENTRY32 stProcessEntry32 = {0};
stProcessEntry32.dwSize = sizeof(PROCESSENTRY32);
Process32First( hSnapshot, &stProcessEntry32 );
bool bFind = false;
do
{
if( strncmp( stProcessEntry32.szExeFile, "explorer.exe", strlen("explorer.exe") ) == 0 )
{
bFind = true;
break;
}
}while( Process32Next( hSnapshot, &stProcessEntry32 ) );
CloseHandle( hSnapshot );
if( !bFind )
{
cout<<"查找explorer进程失败."<<endl;
cin.get();
return;
}
DWORD dwPId = stProcessEntry32.th32ProcessID;
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, false, dwPId );
if( hProcess == NULL )
{
cout<<"打开explorer进程失败."<<endl;
cin.get();
return;
}
LPVOID lpDllNameAddr = VirtualAllocEx( hProcess, NULL, strlen(lpDllName)+1, MEM_COMMIT, PAGE_READWRITE );
if( lpDllNameAddr == NULL )
{
cout<<"explorer进程中申请内存失败."<<endl;
CloseHandle(hProcess);
cin.get();
return;
}
cout<<"在目标进程:"<<stProcessEntry32.szExeFile<<"中申请的空间地址:"<<hex<<lpDllNameAddr<<endl;
DWORD dwRes = 0;
bool bRet = WriteProcessMemory( hProcess, lpDllNameAddr, lpDllName, strlen(lpDllName), &dwRes );
if( !bRet )
{
cout<<"explorer进程写信息失败."<<endl;
VirtualFreeEx( hProcess, lpDllNameAddr, strlen(lpDllName)+1, MEM_DECOMMIT );
CloseHandle(hProcess);
cin.get();
return;
}
HMODULE hModuleKernel32 = GetModuleHandle("kernel32.dll");
DWORD lp = (DWORD)LoadLibraryA;
LPTHREAD_START_ROUTINE lpLoadLibraryAddr = (LPTHREAD_START_ROUTINE)GetProcAddress( hModuleKernel32, "LoadLibraryA" );
if( lpLoadLibraryAddr != NULL )
{
cout<<"获得函数地址:"<<hex<<lpLoadLibraryAddr<<endl;
HANDLE hRemote = CreateRemoteThread( hProcess, NULL, 0, lpLoadLibraryAddr, lpDllNameAddr, 0, NULL );
if( hRemote != NULL )
{
cout<<"创建远程线程成功,句柄:"<<hex<<hRemote<<endl;
WaitForSingleObject( hRemote, INFINITE );
CloseHandle( hRemote );
cout<<"远程线程运行结束"<<endl;
cin.get();
}
else
cout<<"创建远程线程失败."<<endl;
}
else
cout<<"获取LoadLibrary地址失败"<<endl;
VirtualFreeEx( hProcess, lpDllNameAddr, strlen(lpDllName)+1, MEM_DECOMMIT );
CloseHandle(hProcess);
cin.get();
return; }
能力值:
( LV3,RANK:20 )
3 楼
不会弄呀...也不知道你说的是什么.
能力值:
( LV2,RANK:10 )
4 楼
我的意思是说,这份源码只有重新解压出来才能编译通过,改过任何一个地方或者复制的都不能编译通过。不知道是不是我编译器的原因。想请你们帮编译看看能不能过
能力值:
( LV2,RANK:10 )
5 楼
把编译报错发出来。
能力值:
( LV2,RANK:10 )
6 楼
e:\vc\visualc\vc60\vc6cn\vc98\include\ios(9) : fatal error C1083: Cannot open include file: 'streambuf': No such file or directory
执行 cl.exe 时出错.
我有这个文件,路径也没错,而且把源文件解压出来后,打开编译没问题,就是不能改。
能力值:
( LV4,RANK:50 )
7 楼
不要用iostream,,改成下面的
#include <iostream.h>
#include <windows.h>
#include <Tlhelp32.h>
去掉using namespace std
能力值:
( LV3,RANK:20 )
8 楼
换编译器吧,vc6老古董编译器了
能力值:
( LV2,RANK:10 )
9 楼
LZ你可以去下载一个VS,虽然大了点,要么就重新下载另外一个版本的VC,还有,LZ说的“小女子愿意以身相许了”,别人给你解答问题你就这样?那你对技术也太痴迷了吧?
能力值:
( LV2,RANK:10 )
10 楼
重新下载一个源码,编译恢复正常了。再次打开上次编译不过的源文件又能通过编译。只是没办法注入成功,唉,去年才发出的源码现在就不能用了。
能力值:
( LV2,RANK:10 )
11 楼
看过,学习中
能力值:
( LV2,RANK:10 )
12 楼
Hi 如果你的系统是win7的话 CreateRemoteThread调用是不会成功的
能力值:
( LV2,RANK:10 )
13 楼
和你操作系统版本 相关吧??环境说一下..
还有.一看就是人妖....你那身子谁要?
能力值:
( LV2,RANK:10 )
14 楼
搜了下楼主id,果然是人妖
能力值:
( LV4,RANK:50 )
15 楼
哥是来鄙视妖妖的说