过游戏保护NP或TP的几种方法和思路

本文介绍了通过使用特定工具和技巧来规避游戏保护系统NP或TP的方法,包括暂停NP进程、全局卸载dll以及编程虚拟化NP消息。强调了观察和理解保护系统的工作原理对于成功规避的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前有很多这方面的文章,但是大多涉及hook和汇编,新手门都是看了等于没看,还不如不看.但是本人通过实践,感觉就算是新手,只要善于组合使用一些现成的工具,依然可以达到目的.

先说下最新版本的np,虽然一些老的办法会被检测出来,但是基本原理是没有变化的,每次np更新,就像防毒软件更新病毒库一样,不一定是要抓住了你的程序才可以检测出来,任何类似的变种都可以检测出来的.所以可能你的程序从来没发布过,但是在新版本的np下依然会被检测到,很可能是你使用的方法,其他人也使用了,并且这种方法被np获取到了.
再者说下过np的定义,很多人觉得一定要剥离np才算过,其实我觉得,只要np不对你的操作产生影响,就算是过np了,毕竟我们只要能达到我们的目的,np是否在运行其实都无所谓的.
下面就来说下必要的工具:by-Taki

1.进程工具,比如XueTr 版本不限制,最好拥有多个版本,因为不同版本特征不同,自己好控制,另外这个工具本身没有加壳,所以你可以做你想做的任何更改.

2.Wsyscheck,和XueTr类似,只是功能不一样,这个支持全局卸载dll,暴力卸载np时很有用.

3.ce,这个很普通,但是希望是自己用原代码增加一个可以手动输入pid进行操作的功能,因为在np运行或暴力破解后,你依然无法通过标准的ce来枚举进程. by-Taki

4.进程标题修改程序,这种工具有很多,比如安博士游戏辅助软件保护伞,这个工具功能比较多,也有进程挂起等,不过在np下不能运行,所以只有在np起动前或暴力卸载后使用. 现在进入主题,首先说下如果暂停np,那时下某个比较热门的游戏做比喻吧,游戏名字就不说了,反正人家是大户,花50万抓辅助软件的那个.首先是运行xuetr,然后启动游戏,如果没有意外,在输入用户名后密码后,刷新xuetr的进程界面,里面会看到np进程GameMon.des,右击点暂停进程,至此,np的检测功能算是完全无效了.现在你可以想干什么干什么了.有些人可能会说,开着xuetr进入游戏,np会报告说114错误,那是因为xuetr被检测到了,为了不被检测到,你可以使用不同版本

根据提供的链接内容,该项目的算法训练过程主要包括以下几个步骤: ### 1. 训练数据准备 首先,需要准备训练数据。数据集是从一个文件中读取的,文件格式为制表符分隔的文本文件。数据集包含用户对书签打标签的记录,每条记录包括用户ID、书签ID标签ID。 #### 代码示例: ```python import pandas as pd class TagBased(object): def __init__(self, data_path, sep='\t'): self.data_path = data_path self.sep = sep self.calc_result = {} self.table = self.__load_data(data_path, sep) def __load_data(self, data_path, sep): table = pd.read_table(data_path, sep=sep) return table ``` ### 2. 计算训练数据的各种频率 通过 `fit` 方法,计算训练数据中的各种频率,包括用户对物品的标签频率、用户对标签的使用频率、标签对物品的使用频率以及标签对用户的使用频率。 #### 代码示例: ```python def fit(self, train_data): self.calc_result = self.__calc_frequency(train_data) def __calc_frequency(self, table): # user -> item user_item = table.groupby(by=['userID', 'bookmarkID'])['tagID'].count() # user -> tag user_tag = table.groupby(by=['userID', 'tagID'])['bookmarkID'].count() # tag -> item tag_item = table.groupby(by=['tagID', 'bookmarkID'])['userID'].count() # tag -> user tag_user = table.groupby(by=['tagID', 'userID'])['bookmarkID'].count() return {"user_item": user_item, "user_tag": user_tag, "tag_item": tag_item, "tag_user": tag_user} ``` ### 3. 预测 使用 `predict` 方法,根据用户ID推荐方法,生成推荐列表。推荐方法包括 `simple`、`norm` `tfidf` 三种。 #### 代码示例: ```python def predict(self, user_id, n, method='simple'): return self.__calc_item_recommendation(user_id, self.calc_result['user_item'], self.calc_result['user_tag'], self.calc_result['tag_item'], n, method) def __calc_item_recommendation(self, user_id, user_item, user_tag, tag_item, n, method): marked_item = user_item[user_id].index recommend = {} marked_tag = user_tag.loc[user_id] marked_tag_sum = marked_tag.values.sum() for tag_index, tag_count in marked_tag.iteritems(): selected_item = tag_item.loc[tag_index] selected_item_sum = selected_item.values.sum() tag_selected_users_sum = self.calc_result['tag_user'].loc[tag_index].values.sum() for item_index, tag_item_count in selected_item.iteritems(): if item_index in marked_item: continue if item_index not in recommend: if method == 'norm': recommend[item_index] = (tag_count / marked_tag_sum) * (tag_item_count / selected_item_sum) elif method == 'simple': recommend[item_index] = tag_count * tag_item_count elif method == 'tfidf': recommend[item_index] = tag_count / np.log(1 + tag_selected_users_sum) * tag_item_count else: raise TypeError("Invalid method `{}`, `method` only support `norm`, `simple` and `tfidf`".format(method)) else: if method == 'norm': recommend[item_index] += (tag_count / marked_tag_sum) * (tag_item_count / selected_item_sum) elif method == 'simple': recommend[item_index] += tag_count * tag_item_count elif method == 'tfidf': recommend[item_index] += tag_count / np.log(1 + tag_selected_users_sum) * tag_item_count else: raise TypeError("Invalid method `{}`, `method` only support `norm`, `simple` and `tfidf`".format(method)) sorted_recommend = sorted(recommend.items(), key=lambda x: x[1], reverse=True)[:n] return {user_id: dict(sorted_recommend)} ``` ### 4. 评估 使用 `eval` 方法,评估推荐结果的准确性召回率。通过比较推荐列表测试数据中的实际用户行为,计算准确率召回率。 #### 代码示例: ```python def eval(self, n, test_data): t1 = time.time() test_data_user_id = test_data['userID'].unique() total_tp = 0 tpfn = 0 tpfp = 0 check = [] for user_id in test_data_user_id: train_recommend = self.predict(user_id, n) user_test_data = test_data[test_data['userID'] == user_id] total_tp += self.__eval(train_recommend, user_test_data) tpfn += len(user_test_data['bookmarkID'].unique()) tpfp += n check.append((user_id, total_tp, tpfn, tpfp)) recall = total_tp / tpfn precision = total_tp / tpfp print("Recall: %10.4f" % (recall * 100)) print("Precision: %10.4f" % (precision * 100)) print(time.time() - t1) return recall, precision, check def __eval(self, train_recommend, test_data): user_id = [i for i in train_recommend.keys()][0] test_data_item = test_data['bookmarkID'].unique() tp = len(set(test_data_item) & set(train_recommend[user_id].keys())) return tp ``` ### 总结 1. **训练数据准备**:从文件中读取数据,并将其加载到Pandas DataFrame中。 2. **计算频率**:通过 `fit` 方法计算用户对物品的标签频率、用户对标签的使用频率、标签对物品的使用频率以及标签对用户的使用频率。 3. **预测**:使用 `predict` 方法,根据用户ID推荐方法,生成推荐列表。 4. **评估**:通过 `eval` 方法,评估推荐结果的准确性召回率。 这些步骤共同构成了基于标签的推荐算法的完整实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值