www.jybase.net - 寂涯网络学习基地

404 Error: 抱歉, 您所查找的页面不存在, 可能已被删除或您输错了网址!

404错误,没有发现你要找的页面, 经砖家仔细研究结果如下:

首 页 | 在线视频观看 | 系统综合 | 网站相关 | 教程共享 | 网赚教程共享 | 精品软件下载 | 网盘搜


























免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > windows > 在 Win64 上实现Ring3 级 HIPS

在 Win64 上实现Ring3 级 HIPS

时间:2011-11-06 14:35来源:未知 整理:寂涯网络 点击:

自从更换了显卡,每天必不可少的事情就是玩游戏。不过某些汉化版的游戏实在太不像
话,在安装游戏的同时,竟然还把我的IE主页给修改了!由于Win64上没有可用的HIPS (不
喜欢杀毒软件),而且游戏安装程序基本上都是32位游戏,所以我赶紧拿出以前写的Win32
Ring3 HIPS来防止游戏安装时乱改我的IE 主页。结果呢?在玩《Crysis》64位的时候,竟
然又被修改了IE 主页!经测试发现,《Crysis》64位的 EXE 文件被修改过,每次运行都会
先修改 IE主页,再执行游戏。由于是64位 EXE,原先的 Win32 Ring3 HIPS肯定是没有用
了,只好写一个Win64 Ring3 HIPS。
首先说说修改IE 主页是怎么一回事儿。IE 主页不是记录在一个ini文件里的,而是记
录在注册表里,它的具体位置是:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\Start Page
修改这个键值就能改变IE主页。由于大部分人都是使用 IE,而如果一打开 IE就自动
连接到某个网站,就能给那个网站带来巨大的流量,那个网站就能获取巨额的广告利益。所
以这也就是为什么大多数游戏软件都喜欢乱改IE主页的原因。不过要利用我的电脑给它赚
钱,自然是痴心妄想,于是便有了下文。
知彼知己,百战不殆。我们写一个64 位程序,来实现修改IE主页:

  
#include <stdio.h>
#include <Windows.h>
#define OBJ_CASE_INSENSITIVE 0x00000040L
typedef struct _UNICODE_STRING 
{
    USHORT Length;
    USHORT MaximumLength;
    PWSTR  Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
typedef struct _OBJECT_ATTRIBUTES {
    ULONG           Length;
    HANDLE          RootDirectory;
    PUNICODE_STRING ObjectName; 
 
    ULONG           Attributes;
    PVOID           SecurityDescriptor;
    PVOID           SecurityQualityOfService;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
typedef NTSTATUS (WINAPI *ZWOPENKEY)
(
    __out  PHANDLE KeyHandle,
    __in   ACCESS_MASK DesiredAccess,
    __in   POBJECT_ATTRIBUTES ObjectAttributes
);
typedef NTSTATUS (WINAPI *ZWSETVALUEKEY)
(
    __in      HANDLE KeyHandle,
    __in      PUNICODE_STRING ValueName,
    __in_opt  ULONG TitleIndex,
    __in      ULONG Type,
    __in_opt  PVOID Data,
    __in      ULONG DataSize
);
typedef NTSTATUS (WINAPI *ZWCLOSE)
(  
    __in  HANDLE Handle
);
typedef VOID (WINAPI *RTLINITUNICODESTRING)
(
    __inout   PUNICODE_STRING DestinationString,
    __in_opt  PCWSTR SourceString
);
RTLINITUNICODESTRING RtlInitUnicodeString;
ZWSETVALUEKEY ZwSetValueKey;
ZWOPENKEY ZwOpenKey;
ZWCLOSE ZwClose;
//设置 ObjectAttributes的值
VOID InitializeObjectAttributes (OUT POBJECT_ATTRIBUTES
InitializedAttributes, IN PUNICODE_STRING ObjectName, IN ULONGAttributes, IN
HANDLE RootDirectory, IN PSECURITY_DESCRIPTOR SecurityDescriptor)

    InitializedAttributes->Length = sizeof( OBJECT_ATTRIBUTES ); 
    InitializedAttributes->RootDirectory = RootDirectory;    

    InitializedAttributes->Attributes = Attributes; 
    InitializedAttributes->ObjectName = ObjectName; 
InitializedAttributes->SecurityDescriptor = SecurityDescriptor; 
    InitializedAttributes->SecurityQualityOfService = NULL; 
    return; 
}
//初始化用到的api
void InitApi()
{
//获得 ZwSetValueKey的函数指针

ZwSetValueKey=(ZWSETVALUEKEY)GetProcAddress(LoadLibraryW(L"ntdll.dll"),"ZwS
etValueKey");    
//获得 ZwOpenKey的函数指针

本页地址 http://www.jybase.net/windows/20111106577.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商