2011年6月20日

现在的杀软云安全功能太招人厌了,杀毒能力上不去,搞些噱头,把我们机子上一些正常的程序也上传了,相信大家都头疼不已。其原理是比较md5,那么,如果,杀软不能访问我们的程序,它就不可能去作比较了,也就是说,以独占方式打开程序,就可以达到阻止“云安全”的目的。以下是delphi版代码

    program createfile;

    uses

    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\工具软件\任务管理.EⅩE');//这是要保护的程序名

    end.

    /

    这是vc6.0代码

    //VC-ConsoleWithApi

    #include <windows.h>

    //提权函数

    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\\工具软件\\任务管理.EⅩE");

    return 0;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值