免费活动线报,各类软件源码,QQ技术等!
导航

首页 > 自学教程 >

[系统底层] 修改电脑机器码

魅影 2021-01-28 08:47 自学教程

今天我就来和大家讲讲游戏攻防之Hwid Spoofer


1.什么是Hwid Spoofer呢?
我们逐个来进行解析,Hwid的完整单词也就是hardware id,也就是中文的硬件id的意思
而Spoofer也就是欺骗器的意思了,结合起来就是硬件id的欺骗器


2.Hwid Spoofer的作用是什么?
作用还是蛮多的哈,但是主要还是用在和反作弊的对抗上面

我们都知道,一些反作弊利用电脑的Hwid去跟踪监视那些作弊者或者开发者,防止他们继续在游戏中作弊。
反作弊会获取电脑的Hwid信息后,发送到服务器,然后进行哈希比对,发现这电脑的Hwid作弊太多次了的话,就直接封号处理
而使用了Hwid Spoofer之后,我们电脑的硬件信息全部变了,比如说CPU序列号、显卡序列号、硬盘序列号、网卡Mac之类的全部改变了
这样子反作弊就以为当前电脑是安全的,我们就可以继续在游戏中作弊

3.Hwid Spoofer如何工作的?
Hwid Spoofer可以分为内核层模式的和用户层模式,很多情况下需要两者结合才能真正安全
不同反作弊去获取电脑Hwid信息的方式是不一样的,比如BE和EAC,它们有相同之处也有不同之处
它们有的通过DeviceIoControl函数获取Hwid
它们有的通过RegOpenKey函数获取Hwid
它们有的通过CreateFile函数获取Hwid
.......
了解了它们如何获取Hwid,我们就能通过Hook去操作,也能通过修改内存数据去操作,亦或者通过直接修改真正的硬件数据去操作......



硬盘序列号可以当Hwid
网卡Mac可以当Hwid
注册表里面的一些Guid也可以当Hwid
游戏缓存文件也可以当Hwid
.......
所以说,要应用层+内核层才能得到好的效果
内核层工作 : 修改硬盘序列号,修改网卡Mac,修改显卡Guid,修改主板序列号,修改CPU序列号....
应用层工作 : 修改注册表,删除跟踪缓存文件.....


---------------------------------------------------------------------------------------------------------------我是一条无情的分割线


我们今天将的就是内核层的Hwid Spoofer实现
其实说简单也简单,说不简单也不简单
简单在于只是修改Irp派遣函数和定位到指定内存后修改字节数据
不简单在于考虑兼容性,Windows内核里面的一些实现是随系统的更新而发生变化,两个版本的Win10或许不同

我们今天就针对一下内容进行交流 :
1.硬盘序列号
2.显卡Guid
3.主板序列号
4.网卡Mac

硬盘序列号效果 :



显卡序列号效果 :



主板序列号效果 :




网卡Mac效果 :





先说怎么样获取硬盘序列号吧

硬盘序列号的获取主要是用函数CreateFile传入PhysicalDriveX打开物理硬盘对象
然后用DeviceIoControl函数传入IOCTL_STORAGE_QUERY_PROPERTY或者SMART_RCV_DRIVE_DATA来得到序列号
不懂的可以去参考 : https://blog.csdn.net/abcd19892012/article/details/12970317
在CMD里面输入 wmic diskdrive get serialnumber 也可以得到当前的硬盘序列号


我们第一步就是替换派遣函数

 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
bool start_hook()
{
        //这里就是派遣函数的替换,相当于进行函数hook操作
 
        // disk guid spoofer
        g_original_partmgr_control = n_util::add_irp_hook(L"\\Driver\\partmgr", my_partmgr_handle_control);
 
        // disk serial spoofer
        g_original_disk_control = n_util::add_irp_hook(L"\\Driver\\disk", my_disk_handle_control);
 
        // disk volumn spoofer
        g_original_mountmgr_control = n_util::add_irp_hook(L"\\Driver\\mountmgr", my_mountmgr_handle_control);
 
        return g_original_partmgr_control && g_original_disk_control && g_original_mountmgr_control;
}




add_irp_hook函数的实现也是很简单

 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
PDRIVER_DISPATCH add_irp_hook(const wchar_t* name, PDRIVER_DISPATCH new_func)
{
        UNICODE_STRING str;
        RtlInitUnicodeString(&str, name);
 
        PDRIVER_OBJECT driver_object = 0;
        NTSTATUS status = ObReferenceObjectByName(&str, OBJ_CASE_INSENSITIVE, 0, 0, *IoDriverObjectType, KernelMode, 0, (void**)&driver_object);
        if (!NT_SUCCESS(status)) return 0;
 
        PDRIVER_DISPATCH old_func = driver_object->MajorFunction[IRP_MJ_DEVICE_CONTROL];
        driver_object->MajorFunction[IRP_MJ_DEVICE_CONTROL] = new_func;
        n_log::printf("%ws hook %llx -> %llx \n", name, old_func, new_func);
 
        ObDereferenceObject(driver_object);
 
        return old_func;
}



明天继续吧.......

THE END 本文来自V民之家,由站长【魅影】发布,请尊重原创版权且转载请务必保留文章出处。
转载注明出处:V民之家>>[系统底层] 修改电脑机器码
本站所有度盘资源,提取码均为vmin,如是其它,文章末尾会注明
本站免责声明:V民之家的资源部分来源于网络,如有侵权不妥之处,请联系站长进行删除处理。若本文为外挂辅助或其他软件,皆来自于网络,不保证长久实效性和可用性,如有封号病毒以及其他风险和版权争议等情况与本站无关。站内所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:[email protected]
本站已运行: