深度剖析:黑神化悟空的防御机制,为何成为破解难题?

2024-08-28 14:28

本文主要是介绍深度剖析:黑神化悟空的防御机制,为何成为破解难题?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度剖析:黑神化悟空的防御机制,为何成为破解难题?

黑神话悟空还没发售就被破解? #国产游戏 #悟空 #西游记

推荐阅读:

全红婵抖音魅力无限,粉丝数量历史性突破1000万大关!

奥运激情日!8月9日赛事看点全解析,带你领略体育魅力

七夕不踩雷!MBTI类型恋人送礼指南,超实用推荐

海淀很潮,流行起来!一场关于创新与美学的盛宴

孙颖莎王楚钦首战告捷?悬念揭晓,精彩不容错过!

原文地址:https://www.bsw80.com/category-7.html

经过分析,黑神话的程序还暗藏了一个彩蛋,我感觉是用来嘲讽 d 加密破解团队皇后 n press 你想知道是什么吗?黑猴子反盗版的原理是什么?会拖慢游戏运行速度吗?看完本期视频你就知道了,为了搞清楚黑猴到底是如何防止盗版的,我又请来了喜欢逆向的变量。

首先必须要声明一下,破解游戏是违法行为,本视频不会传授任何破解方法。看了本视频也不会给黑神话悟空带来任何被破解的风险,所以请大家放心观看。首先作为单机游戏黑神话悟空的反盗版对抗点要搞清楚。对了,它的对抗核心思想就是不能脱离平台运行,这个平台就是 we game 和Steam,别看目标是那么简单,但为了实现却需要很大的功夫。通过我们的分析,游戏的反破解分为静态和动态两个层面。首先是静态层面,也是大家能感知到的,就是游戏程序文件变大了很多,我们打开 Steam 版本的游戏目录,我们看到悟空的主程序高达 800 多兆,而经过边量的分析,游戏文件膨胀了至少上百倍,里面有 151 万个函数,这就是代码膨胀的特征。为啥要代码膨胀呢?代码膨胀本身就是给原有代码添加无关的代码,目标当然是提高逆向破解的难度。

深度剖析:黑神化悟空的防御机制,为何成为破解难题?

我们来看一个例子。当然黑猴是 C + + 边形,为了大家能理解,我用一个简单的 Python 程序来讲解一个函数实现了两个数相加,那么膨胀后的代码是这样的。可以看到这里增加了一个无用的随机数,一个无用的 range 检查,还有一个无用的 if 条件判断,而且这个 if 条件判断的逻辑永远不会触发,是不是这段代码给你看了之后需要更多的时间去理解,何况逆向你还看不到具体代码。你看到的还是一堆汇编代码,破解难度就增加了很多。然后我举的例子,代码撑死膨胀了 4 倍,而黑神话悟空的膨胀了上百倍,所以大家可以看到难度有多大。除了代码膨胀,还有代码混淆、代码等价交换,目的都是为了提高立项工程的难度,拖延被破解的时间。

除了这个黑猴悟空还有非常多的地方,他入了 CPU ID。经过边量的统计,至少有 3, 000 多次 CPU ID,插入 CPU ID 指令可以获取 CPU 的详细信息,说白了就是获取计算机硬件唯一标识符,这在反盗版的领域,特别是软件本地授权非常重要,可以有效防止游戏程序被非法拷贝。

深度剖析:黑神化悟空的防御机制,为何成为破解难题?

除了这一点,通过 CPU ID 还可以判断当前环境是不是虚拟机,毕竟很多地下工程都是要在虚拟机下进行的,所以真的要破解难度可能真要堪比登天了。以上就是静态层面的反破解了,接下来就是游戏的运行过程中动态反破解,如何动态反破解的?那就是哈希,哈希可以理解为数字指纹,你只要知道指纹能代表内容的唯一性就可以了,只要内容变了一个字节,指纹就变了。这个哈希主要针对三个地方,一个是系统核心的 d l、 n t DL kernel 32、 kernel base。还有一个是进程环境快PEB,还有一个是共享数据结构 k user share data 系统核心 DL 检查主要是防止注入破解代码到这几个 DL 中。进程块 PEB 的哈希是 Windows 操作系统中的一个进程级的数据结构,包含了与进程相关的多个信息,比如加载的模块列表、命运行参数等等。 PEB 检查用于判断是否存在板调试或者进程环境被修改。游戏程序可能会通过检查 PEB 的结构中的标志位,例如 PEB 点 Bing debug 来判断进程是否处于调试状态。哈希值的变化可以提示此类修改可以。

user share data 是 Windows 内核中的一个共享数据结构,所有用户模式进程都可以读到其中的信息。该结构包含了一些全局变量,比如系统时间时区信息、版本信息等等。通过检查这部分的数据变化,可以判断游戏是否被调试。可以看到这三种检查的目的就是反调试,反调试的技术主要目的是增加软件运行时逆向工程的难度,通过阻止调试器,从而阻止调试器的正常工作回到刚开始的问题,黑猴的反破解技术有没有影响游戏的性能?我的答案是肯定的,但这个影响是不好估算的,毕竟我目前也拿不到脱密版的游戏,只能说你对电脑 CPU 性能越差影响越大。如果你玩黑猴的帧数主要的天花板是显卡,那么说明反破解并没有影响到你。

深度剖析:黑神化悟空的防御机制,为何成为破解难题?

以上是黑猴子主要反破解手段,当然可能还有其他地方,如果评论区里有人知道,可以补充。另外边亮还发现了一个有趣的点,就是这个游戏是有特殊接口,具体接口怎么进我就不方便公开透露。只不过这个借口里面带了一个密钥,很有趣,是一个女人的名字。我感觉是为了嘲讽帝家密破解小组 m press 皇后而设,后续变量将为大家揭开这层面纱。记得关注它,黑神话悟空作为国产第一款 3A 大作,销量已经破了 1, 000 万套,之所以有这么喜人的成绩,我想游戏本身的防盗版技术实力和广大玩家对正版游戏的观念转变有很大的关系。我依然记得当年仙剑 4 上市的时候满大街的破解版以及上海软新官方网站再见若有缘这五个字,所以游戏商业的成败和是否能扛住破解尤为重要。作为曾经的游戏从业者,看到黑神话悟空的成功,我自然非常欣慰,我希望这款游戏能成为火种,点燃更多中国 3A 单机游戏。大家是不是和我有一样的想法,让国产游戏不等于氪金网游。

这篇关于深度剖析:黑神化悟空的防御机制,为何成为破解难题?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115019

相关文章

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操