创建高权限进程

低权限IE和高权限进程通过管道通信时的权限问题 BOOL CreatePipeSecurity(PSECURITY_ATTRIBUTES *ppSa) { BOOL bSuccess = TRUE; DWORD dwError = ERROR_SUCCESS; PSECURITY_DESCRIPTOR pSd = NULL; PSECURITY_ATTRIBUTES pSa = NULL; PCWSTR szDDL = L 阅读详情
Author:  sinister
Email:   sinister@whitecell.org
Homepage: http://www.whitecell.org
Date:    2006-02-12

/*****************************************************************
  文件名        : wssrun.c
  描述          : 创建高权限进程
  作者          : sinister
  最后修改日期  : 2006.2.09

*****************************************************************/


//
// 写这个初衷是为了让 Windows 任务管理器可以结束掉一些服务
// 和僵死进程,用 pslist/pskill 之类工具无法获得象任务管理
// 器那样丰富的信息,还得来回切换,麻烦的很。最初想写个驱动
// 监视任务管理器运行,使用 SYSTEM 进程 TOKEN 替换来达到目的。
// 后来觉得通用性不好,就改用了这种方法。此方法还可使 regedit
// 查看、编辑 SAM 等注册表键,何乐而不为。
//
// wssrun taskmgr.exe
// wssrun regedit.exe
//


#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude

#pragma comment(lib,"Shlwapi.lib")


/////////////////////////////////////////////////////////////////
// 函数类型 :自定义工具函数
// 函数模块 :
////////////////////////////////////////////////////////////////
// 功能 :提升当前进程权限
// 注意 :
/////////////////////////////////////////////////////////////////
// 作者 : sinister
// 发布版本 : 1.00.00
// 发布日期 : 2006.2.09
/////////////////////////////////////////////////////////////////
// 重   大   修   改   历   史
////////////////////////////////////////////////////////////////
// 修改者 :
// 修改日期 :
// 修改内容 :
/////////////////////////////////////////////////////////////////

BOOL
EnableDebugPriv( LPCTSTR szPrivilege )
{
  HANDLE hToken;
  LUID sedebugnameValue;
  TOKEN_PRIVILEGES tkp;

  if ( !OpenProcessToken( GetCurrentProcess(),
                          TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
                          &hToken ) )
  {
    return FALSE;
  }
  if ( !LookupPrivilegeValue( NULL, szPrivilege, &sedebugnameValue ) )
  {
    CloseHandle( hToken );
    return FALSE;
  }

  tkp.PrivilegeCount = 1;
  tkp.Privileges[0].Luid = sedebugnameValue;
  tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

  if ( !AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )
  {
    CloseHandle( hToken );
    return FALSE;
  }

  return TRUE;
}

/////////////////////////////////////////////////////////////////
// 函数类型 :自定义工具函数
// 函数模块 :
////////////////////////////////////////////////////////////////
// 功能 :通过指定进程名得到其进程 ID
// 注意 :
/////////////////////////////////////////////////////////////////
// 作者 : sinister
// 发布版本 : 1.00.00
// 发布日期 : 2006.2.09
/////////////////////////////////////////////////////////////////
// 重   大   修   改   历   史
////////////////////////////////////////////////////////////////
// 修改者 :
// 修改日期 :
// 修改内容 :
/////////////////////////////////////////////////////////////////

DWORD
GetProcessId( LPCTSTR szProcName )
{
  PROCESSENTRY32 pe;  
  DWORD dwPid;
  DWORD dwRet;
  BOOL bFound = FALSE;

  //
  // 通过 TOOHLP32 函数枚举进程
  //

  HANDLE hSP = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
  if ( hSP )
  {
    pe.dwSize = sizeof( pe );

    for ( dwRet = Process32First( hSP, &pe );
          dwRet;
          dwRet = Process32Next( hSP, &pe ) )
    {
      //
      // 使用 StrCmpNI 比较字符传,可忽略大小写
      //
      if ( StrCmpNI( szProcName, pe.szExeFile, strlen( szProcName ) ) == 0 )
      {
        dwPid = pe.th32ProcessID;
        bFound = TRUE;
        break;
      }
    }

    CloseHandle( hSP );

    if ( bFound == TRUE )
    {
      return dwPid;
    }
  }

  return NULL;
}

/////////////////////////////////////////////////////////////////
// 函数类型 :自定义工具函数
// 函数模块 :
////////////////////////////////////////////////////////////////
// 功能 : 创建具有高权限的进程
// 注意 :
/////////////////////////////////////////////////////////////////
// 作者 : sinister
// 发布版本 : 1.00.00
// 发布日期 : 2006.2.09
/////////////////////////////////////////////////////////////////
// 重   大   修   改   历   史
////////////////////////////////////////////////////////////////
// 修改者 :
// 修改日期 :
// 修改内容 :
/////////////////////////////////////////////////////////////////

BOOL
CreateSystemProcess( LPTSTR szProcessName )
{
  HANDLE hProcess;
  HANDLE hToken, hNewToken;
  DWORD dwPid;

  PACL pOldDAcl = NULL;
  PACL pNewDAcl = NULL;
  BOOL bDAcl;
  BOOL bDefDAcl;
  DWORD dwRet;

  PACL pSacl = NULL;
  PSID pSidOwner = NULL;
  PSID pSidPrimary = NULL;
  DWORD dwAclSize = 0;
  DWORD dwSaclSize = 0;
  DWORD dwSidOwnLen = 0;
  DWORD dwSidPrimLen = 0;

  DWORD dwSDLen;
  EXPLICIT_ACCESS ea;
  PSECURITY_DESCRIPTOR pOrigSd = NULL;
  PSECURITY_DESCRIPTOR pNewSd = NULL;

  STARTUPINFO si;
  PROCESS_INFORMATION pi;

  BOOL bError;

  if ( !EnableDebugPriv( "SeDebugPrivilege" ) )
  {
    printf( "EnableDebugPriv() to failed!/n" );

    bError = TRUE;
    goto Cleanup;
  }

  //
  // 选择 WINLOGON 进程
  //
  if ( ( dwPid = GetProcessId( "WINLOGON.EXE" ) ) == NULL )
  {
    printf( "GetProcessId() to failed!/n" );  

    bError = TRUE;
    goto Cleanup;
  }

  hProcess = OpenProcess( PROCESS_QUERY_INFORMATION, FALSE, dwPid );
  if ( hProcess == NULL )
  {
    printf( "OpenProcess() = %d/n", GetLastError() );  

    bError = TRUE;
    goto Cleanup;
  }

  if ( !OpenProcessToken( hProcess, READ_CONTROL | WRITE_DAC, &hToken ) )
  {
    printf( "OpenProcessToken() = %d/n", GetLastError() );

    bError = TRUE;
    goto Cleanup;
  }

  //
  // 设置 ACE 具有所有访问权限
  //
  ZeroMemory( &ea, sizeof( EXPLICIT_ACCESS ) );
  BuildExplicitAccessWithName( &ea,
                               "Everyone",
                               TOKEN_ALL_ACCESS,
                               GRANT_ACCESS,
                               0 );

  if ( !GetKernelObjectSecurity( hToken,
                                 DACL_SECURITY_INFORMATION,
                                 pOrigSd,
                                 0,
                                 &dwSDLen ) )
  {
    //
    // 第一次调用给出的参数肯定返回这个错误,这样做的目的是
    // 为了得到原安全描述符 pOrigSd 的长度
    //
    if ( GetLastError() == ERROR_INSUFFICIENT_BUFFER )
    {
      pOrigSd = ( PSECURITY_DESCRIPTOR ) HeapAlloc( GetProcessHeap(),
                                                    HEAP_ZERO_MEMORY,
                                                    dwSDLen );
      if ( pOrigSd == NULL )
      {
        printf( "Allocate pSd memory to failed!/n" );

        bError = TRUE;
        goto Cleanup;
      }

      //
      // 再次调用才正确得到安全描述符 pOrigSd
      //
      if ( !GetKernelObjectSecurity( hToken,
                                     DACL_SECURITY_INFORMATION,
                                     pOrigSd,
                                     dwSDLen,
                                     &dwSDLen ) )
      {
        printf( "GetKernelObjectSecurity() = %d/n", GetLastError() );
        bError = TRUE;
        goto Cleanup;
      }
    }
    else
    {
      printf( "GetKernelObjectSecurity() = %d/n", GetLastError() );
      bError = TRUE;
      goto Cleanup;
    }
  }

  //
  // 得到原安全描述符的访问控制列表 ACL
  //
  if ( !GetSecurityDescriptorDacl( pOrigSd, &bDAcl, &pOldDAcl, &bDefDAcl ) )
  {
    printf( "GetSecurityDescriptorDacl() = %d/n", GetLastError() );

    bError = TRUE;
    goto Cleanup;
  }

  //
  // 生成新 ACE 权限的访问控制列表 ACL
  //
  dwRet = SetEntriesInAcl( 1, &ea, pOldDAcl, &pNewDAcl );
  if ( dwRet != ERROR_SUCCESS )
  {
    printf( "SetEntriesInAcl() = %d/n", GetLastError() );
    pNewDAcl = NULL;

    bError = TRUE;
    goto Cleanup;
  }

  if ( !MakeAbsoluteSD( pOrigSd,
                        pNewSd,
                        &dwSDLen,
                        pOldDAcl,
                        &dwAclSize,
                        pSacl,
                        &dwSaclSize,
                        pSidOwner,
                        &dwSidOwnLen,
                        pSidPrimary,
                        &dwSidPrimLen ) )
  {
    //
    // 第一次调用给出的参数肯定返回这个错误,这样做的目的是
    // 为了创建新的安全描述符 pNewSd 而得到各项的长度
    //
    if ( GetLastError() == ERROR_INSUFFICIENT_BUFFER )
    {
      pOldDAcl = ( PACL ) HeapAlloc( GetProcessHeap(),
                                     HEAP_ZERO_MEMORY,
                                     dwAclSize );
      pSacl = ( PACL ) HeapAlloc( GetProcessHeap(),
                                  HEAP_ZERO_MEMORY,
                                  dwSaclSize );
      pSidOwner = ( PSID ) HeapAlloc( GetProcessHeap(),
                                      HEAP_ZERO_MEMORY,
                                      dwSidOwnLen );
      pSidPrimary = ( PSID ) HeapAlloc( GetProcessHeap(),
                                        HEAP_ZERO_MEMORY,
                                        dwSidPrimLen );
      pNewSd = ( PSECURITY_DESCRIPTOR ) HeapAlloc( GetProcessHeap(),
                                                   HEAP_ZERO_MEMORY,
                                                   dwSDLen );

      if ( pOldDAcl == NULL ||
           pSacl == NULL ||
           pSidOwner == NULL ||
           pSidPrimary == NULL ||
           pNewSd == NULL )
      {
        printf( "Allocate SID or ACL to failed!/n" );

        bError = TRUE;
        goto Cleanup;
      }

      //
      // 再次调用才可以成功创建新的安全描述符 pNewSd
      // 但新的安全描述符仍然是原访问控制列表 ACL
      //
      if ( !MakeAbsoluteSD( pOrigSd,
                            pNewSd,
                            &dwSDLen,
                            pOldDAcl,
                            &dwAclSize,
                            pSacl,
                            &dwSaclSize,
                            pSidOwner,
                            &dwSidOwnLen,
                            pSidPrimary,
                            &dwSidPrimLen ) )
      {
        printf( "MakeAbsoluteSD() = %d/n", GetLastError() );

        bError = TRUE;
        goto Cleanup;
      }
    }
    else
    {
      printf( "MakeAbsoluteSD() = %d/n", GetLastError() );

      bError = TRUE;
      goto Cleanup;
    }
  }

  //
  // 将具有所有访问权限的访问控制列表 pNewDAcl 加入到新的
  // 安全描述符 pNewSd 中
  //
  if ( !SetSecurityDescriptorDacl( pNewSd, bDAcl, pNewDAcl, bDefDAcl ) )
  {
    printf( "SetSecurityDescriptorDacl() = %d/n", GetLastError() );

    bError = TRUE;
    goto Cleanup;
  }

  //
  // 将新的安全描述符加到 TOKEN 中
  //
  if ( !SetKernelObjectSecurity( hToken, DACL_SECURITY_INFORMATION, pNewSd ) )
  {
    printf( "SetKernelObjectSecurity() = %d/n", GetLastError() );

    bError = TRUE;
    goto Cleanup;
  }

  //
  // 再次打开 WINLOGON 进程的 TOKEN,这时已经具有所有访问权限
  //
  if ( !OpenProcessToken( hProcess, TOKEN_ALL_ACCESS, &hToken ) )
  {
    printf( "OpenProcessToken() = %d/n", GetLastError() );  

    bError = TRUE;
    goto Cleanup;
  }

  //
  // 复制一份具有相同访问权限的 TOKEN
  //
  if ( !DuplicateTokenEx( hToken,
                          TOKEN_ALL_ACCESS,
                          NULL,
                          SecurityImpersonation,
                          TokenPrimary,
                          &hNewToken ) )
  {
    printf( "DuplicateTokenEx() = %d/n", GetLastError() );  

    bError = TRUE;
    goto Cleanup;
  }


  ZeroMemory( &si, sizeof( STARTUPINFO ) );
  si.cb = sizeof( STARTUPINFO );

  //
  // 不虚拟登陆用户的话,创建新进程会提示
  // 1314 客户没有所需的特权错误
  //
  ImpersonateLoggedOnUser( hNewToken );


  //
  // 我们仅仅是需要建立高权限进程,不用切换用户
  // 所以也无需设置相关桌面,有了新 TOKEN 足够
  //


  //
  // 利用具有所有权限的 TOKEN,创建高权限进程
  //
  if ( !CreateProcessAsUser( hNewToken,
                             NULL,
                             szProcessName,
                             NULL,
                             NULL,
                             FALSE,
                             NULL, //NORMAL_PRIORITY_CLASS | Create_NEW_CONSOLE,
                             NULL,
                             NULL,
                             &si,
                             &pi ) )
  {
    printf( "CreateProcessAsUser() = %d/n", GetLastError() );  

    bError = TRUE;
    goto Cleanup;
  }

  bError = FALSE;

  Cleanup:
  if ( pOrigSd )
  {
    HeapFree( GetProcessHeap(), 0, pOrigSd );
  }
  if ( pNewSd )
  {
    HeapFree( GetProcessHeap(), 0, pNewSd );
  }
  if ( pSidPrimary )
  {
    HeapFree( GetProcessHeap(), 0, pSidPrimary );
  }
  if ( pSidOwner )
  {
    HeapFree( GetProcessHeap(), 0, pSidOwner );
  }
  if ( pSacl )
  {
    HeapFree( GetProcessHeap(), 0, pSacl );
  }
  if ( pOldDAcl )
  {
    HeapFree( GetProcessHeap(), 0, pOldDAcl );
  }

  CloseHandle( pi.hProcess );
  CloseHandle( pi.hThread );
  CloseHandle( hToken );
  CloseHandle( hNewToken );
  CloseHandle( hProcess );

  if ( bError )
  {
    return FALSE;
  }

  return TRUE;
}


void
main( int argc, char** argv )
{
  if ( argc < 2 )
  {
    printf( "Usage: wssrun /n" );
    return ;
  }

  if ( CreateSystemProcess( argv[1] ) == FALSE )
  {
    printf( "wssrun: CreateSystemProcess() to failed!/n" );
    return ;
  }
}
[Win32] 服务程序开发(3)Session 0隔离(下)创建SYSTEM权限可交互进程 本博文由优快云博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.youkuaiyun.com/zuishikonghuan/article/details/47662727 在上上篇博文中,我说了如何编写一个系统服务,上一篇,介绍了如何穿透Session 0在当前用户的桌面上创建一个进程,但是缺陷很明显,如果UAC处于开启状态,创 阅读详情

相关推荐

Agent框架系列:1-低代码智能体平台深度解析Dify、Coze、n8n

Dify、Coze 和 n8n 是三大主流低代码智能体平台,各有侧重。Dify 适合企业级 AI 应用,具备强大的 RAG 和知识库管理能力,技术栈为 Python + React。Coze 由字节推出,主打零代码和快速原型开发,集成 60+ 插件,极适合非技术用户。n8n 以工作流自动化和系统集成为核心,支持 400+ 外部应用,基于 Node.js + Vue,扩展性极强。选择建议:非技术团队选 Coze,AI 应用选 Dify,复杂自动化与集成选 n8n。可根据实际需求混合使用,最大化平台优势。

3090

关于windows上的lsass.exe进程

关于windows上的lsass.exe进程作者:eygle出处:http://blog.eygle.com日期:December 26, 2004« 安装cronolog,格式化Apache的日志文件 | Blog首页 | 配置AWStats,Apache日志分析工具 » 今天见到有人问lsass.exe进程,翻了点东西,记录些东西在这里。lsass - lsas

eygle's life 2万+

从量子兔AlphaPi硬件拆解到ESP32-C3库开发实战

本文详细拆解了量子兔AlphaPi开发板的硬件构成,重点分析了其核心ESP32-C3芯片及外围传感器。通过逆向工程揭示了GPIO引脚定义与通信协议,并实战演示了如何从零开发MicroPython库,驱动按键、加速度计及LED点阵,最终整合成一个互动平衡球游戏项目,展现了开源硬件在教育与二次开发中的潜力。

weixin_29164497的博客 460

从管理员身份获得 SYSTEM 权限的四种方法

本文总结了 4 种方法获得 SYSTEM 权限来运行 regedit.exe 文件,源代码很容易修改成命令行方式运行指定的程序。1. 以服务方式运行2. 添加 ACL 的方法3. HOOK ZwCreateProcessEx 函数4. 远程线程的方法这几种方法都不是我想出来的,我只不过是总结了一下,用 Win32ASM 重写了代码而以。关于这个大家可以看文章末尾的参考资料。下面简单的分析每一种方法

Fido 2889

Transformer在量化交易中的应用:从时序预测到策略生成

Transformer模型凭借其强大的自注意力机制,在自然语言处理领域取得了革命性突破。其核心原理是通过并行计算和动态权重分配,有效捕捉序列数据中的长距离依赖关系。这一特性使其在金融时间序列分析中展现出巨大技术价值,能够处理市场数据中的复杂非线性模式和长期关联。在量化交易场景下,Transformer可将价格、成交量等连续数据通过离散化分桶处理,转化为类似文本的序列,进而进行预测或直接生成交易信号。本文以QuantGPT项目为例,探讨了如何将这一前沿AI架构迁移应用于金融领域,涵盖了从数据作为“语言”的编码

weixin_26757949的博客 368

Oracle监听配置

Oracle监听配置## 标题 选择“监听程序配置”,然后下一步。 选择重新配置,然后下一步/。 不用管,按下一步。 下一步。 选择“否”,下一步。 选择"本地net服务名配置",然后下一步。 选择“重新配置”,然后下一步。 服务名 是"Oracle",然后下一步。 主机为你的IP地址,在doc系统下通过"ipconfig"获取IP地址。然后输入,然后下一步。 选择“是,进行测试...

m0_46079215的博客 807

创建高权限进程的方法

原文转自:http://www.3800hk.com/news/w45/123569.html写这个初衷是为了让 Windows 任务管理器可以结束掉一些服务和僵死进程,用 pslist/pskill 之类工具无法获得象任务管理器那样丰富的信息,还得来回切换,麻烦的很。最初想写个驱动监视任务管理器运行,使用 SYSTEM 进程 TOKEN 替换来达到目的。 后来觉得通用性不好,就改用了这种

weixu_2008的专栏 1205

基于YOLOv8的人群聚集检测系统:含UI界面设计与数据集应用

人群聚集检测是智慧城市、公共安全和疫情防控等领域的重要任务。本文结合YOLOv8最新目标检测技术,设计并实现了一个高效的人群聚集检测系统,支持可视化UI界面操作,方便用户实时检测和分析视频中的人群密度。本文详细介绍了系统设计思路、使用的数据集、YOLOv8模型训练和推理过程,以及UI界面的开发与整合。最后通过实验验证了该系统的实用性和性能表现。更灵活的模型架构强化的特征融合网络(PAN++)自动混合精度训练支持支持多任务学习(目标检测+分类+分割)预训练模型丰富,适应多种应用场景。

YOLO 434

管理员身份获得 SYSTEM 权限的四种方法

本文总结了 4 种方法获得 SYSTEM 权限来运行 regedit.exe 文件,源代码很容易修改成命令行方式运行指定的程序。1. 以服务方式运行2. 添加 ACL 的方法3. HOOK ZwCreateProcessEx 函数4. 远程线程的方法  这几种方法都不是我想出来的,我只不过是总结了一下,用 Win32ASM 重写了代码而以。关于这个大家可以看文章末尾的参考资料。下面简单的分析每一种

编程爱好者 7161

从毫K级温控到分子级洁净:光刻机环境控制系统的技术演进与专利格局

摘要 光刻机环境控制系统是半导体制造中的"隐形精密工程",通过毫K级温度控制(±0.002℃)、超高洁净度(ISO Class 1)等核心技术为纳米级光刻提供环境保障。本文系统分析了温度、湿度、洁净度、流场和压力控制五大技术方向的发展趋势,揭示了从单参数控制向多参数协同智能控制的转型路径。研究显示:1)温度控制正从PID向神经网络智能控制演进;2)EUV光刻将湿度控制推至ppbv级;3)洁净度控制扩展到分子级污染物管理。头部厂商中,ASML侧重系统集成,Nikon专注浸没流场,Canon

huanghm88的专栏 322

2025华为OD机试真题+全流程解析+备考攻略+面试技巧+机考经验分享+Java/python/JS/C++/C语言实现

本专栏包含华为 OD 机试最新的 A卷+B卷+C卷+D卷+E卷题库,为全网最全、最新题库,500+真题。每一篇文章都包含了题目描述、解题思路以及实现代码。同时免费提供最新的在线OJ 刷题系统。已有上百名小伙伴通过刷真题题库通过了华为od机考,拒绝一切形式的代考,替考行为!!!以下是本专栏详细内容介绍:本专栏提供在线OJ刷题系统:OJ题库OJ系统注册&使用教程:OJ使用教程其他专栏以及答疑介绍:50+ 高频面试手撕真题,已有上百位小伙伴高频认证。1:机试没过,半年的冷冻期。2:已经订阅过我专栏的同学,推荐新人

MISAYAONE的博客 2226

DACL &amp; SACL

任意访问控制列表( Discretionary ACL )、系统访问控制列表( System ACL )。任意访问控制列表包含了用户和组的列表,以及相应的权限,允许或拒绝。每一个用户或组在任意访问控制列表中都有特殊的权限。而系统访问控制列表是为审核服务的,包含了对象被访问的时间,他们都是在sd中的! 什么是sd呢?先来看看安全对象吧 安全对象Securable Object是拥有SD的Wi...

因热爱而执着,因执着而成功。 3521

17|CI/CD 集成与质量门禁:让精准测试进入发布流水线

本文讲解精准测试如何接入 CI/CD 流水线,并通过质量门禁辅助发布决策。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 68

[转载]创建高权限进程

 [转载]创建高权限进程文章作者:sinister信息来源:白细胞Author:  sinisterEmail:  sinister@whitecell.orgHomepage:http://www.whitecell.org Date:   2006-02-12/*************************************************************

synjones的专栏 661

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

黑客技巧谈之创建高权限进程的方法

写这个初衷是为了让 Windows 任务管理器可以结束掉一些服务和僵死进程,用 pslist/pskill 之类工具无法获得象任务管理器那样丰富的信息,还得来回切换,麻烦的很。最初想写个驱动监视任务管理器运行,使用 SYSTEM 进程 TOKEN 替换来达到目的。 后来觉得通用性不好,就改用了这种方法。此方法还可使Regedit查看、编辑 SAM 等注册表键,何乐而不为。

求索 1042

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

绕过Win7 UAC 创建高权限进程

测试环境Win7 7600 1.遍历进程查找微软medium Intergrity 进程2.创建线程Ixxxxx Obj3.进行一些操作,并启动新进程 测试成功!

Orlando的积累知识库 1033

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB 创建SYSTEM用户进程

Option Explicitchenhui530 VB创建SYSTEM用户进程2007-5-29Private Const PROCESS_Create_THREAD = &H2Private Const PROCESS_QUERY_INFORMATION = &H400Private Const PROCESS_VM_WRITE = &H20Private Const PROCESS_V

lotuso的专栏 539

以SYSTEM权限运行程序

program SysTemRun;     uses     Windows,     tlhelp32,     AccCtrl,     AclAPI;         function UpperCase(const S: string): string;   var     Ch: Char;     L: Integer;     Source, Dest:

gj333的专栏 884

创建SYSTEM用户权限的进程

#include #include #include #include #include typedef NTSTATUS (WINAPI *pfRtlAdjustPrivilege)( ULONG Privilege, BOOLEAN Enable, BOOLEAN CurrentThread, PBOOLEAN Enabled); void AdjustPri

csafu的专栏 2649

"SYSTEM"用户创建进程

sysrun.ccl sysrun.cpp Shlwapi.lib advapi32.lib#include #include 

975

模拟高权限用户

我不知道这能不能算一个好点子,但我觉得这真的不错:模拟一个权力更大的用户进行某些无法完成的操作。 举个例子来说:你在Administrator用户下,打开文件1.exe的安全设置页面,添加并设置Guest用户的权限为file control拒否,如下图所示:   这样,按照正常的办法,Guest用户将访问不到1.exe文件了。但是一点其他的办法都没有吗?也不是的,我告诉你一个:模拟高

丸子头的专栏 1072
上一篇: 还未结束就能把自身删除的程序
下一篇: 使用API判断网络是否连通(InternetGetConnectedState / IsNetworkAlive)
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值