轻松过掉DNF游戏保护

合集下载

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

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

过游戏保护NP或TP的⼏种⽅法和思路以前有很多这⽅⾯的⽂章,但是⼤多涉及hook和汇编,新⼿门都是看了等于没看,还不如不看.但是本⼈通过实践,感觉就算是新⼿,只要善于组合使⽤⼀些现成的⼯具,依然可以达到⽬的.先说下最新版本的np,虽然⼀些⽼的办法会被检测出来,但是基本原理是没有变化的,每次np更新,就像防毒软件更新病毒库⼀样,不⼀定是要抓住了你的程序才可以检测出来,任何类似的变种都可以检测出来的.所以可能你的程序从来没发布过,但是在新版本的np下依然会被检测到,很可能是你使⽤的⽅法,其他⼈也使⽤了,并且这种⽅法被np获取到了.再者说下过np的定义,很多⼈觉得⼀定要剥离np才算过,其实我觉得,只要np不对你的操作产⽣影响,就算是过np了,毕竟我们只要能达到我们的⽬的,np是否在运⾏其实都⽆所谓的.下⾯就来说下必要的⼯具:by-Taki1.进程⼯具,⽐如XueTr 版本不限制,最好拥有多个版本,因为不同版本特征不同,⾃⼰好控制,另外这个⼯具本⾝没有加壳,所以你可以做你想做的任何更改.2.Wsyscheck,和XueTr类似,只是功能不⼀样,这个⽀持全局卸载dll,暴⼒卸载np时很有⽤.3.ce,这个很普通,但是希望是⾃⼰⽤原代码增加⼀个可以⼿动输⼊pid进⾏操作的功能,因为在np运⾏或暴⼒破解后,你依然⽆法通过标准的ce来枚举进程. by-Taki4.进程标题修改程序,这种⼯具有很多,⽐如安博⼠游戏辅助软件保护伞,这个⼯具功能⽐较多,也有进程挂起等,不过在np下不能运⾏,所以只有在np起动前或暴⼒卸载后使⽤. 现在进⼊主题,⾸先说下如果暂停np,那时下某个⽐较热门的游戏做⽐喻吧,游戏名字就不说了,反正⼈家是⼤户,花50万抓辅助软件的那个.⾸先是运⾏xuetr,然后启动游戏,如果没有意外,在输⼊⽤户名后密码后,刷新xuetr的进程界⾯,⾥⾯会看到np进程GameMon.des,右击点暂停进程,⾄此,np的检测功能算是完全⽆效了.现在你可以想⼲什么⼲什么了.有些⼈可能会说,开着xuetr进⼊游戏,np会报告说114错误,那是因为xuetr被检测到了,为了不被检测到,你可以使⽤不同版本,或者使⽤保护伞⼯具,将xuetr的标题更改掉,那样np就检测不到,也就不会发⽣错误了.这个⽅法在我写这个⽂章的时候依然有效. by-Taki除了暂停np进程,当然还可以在np运⾏后卸载掉他,根据游戏的不同,这个⽅法操作起来有点技巧,使⽤Wsyscheck⼯具,在游戏运⾏后可以找到np的⼀个dll,名称是npsc.des,右击他点全局卸载,运⽓好的话,这⼀部就完成了,当然新版本的np肯定不会让你就这样搞定他的,所以还需要⼀些技巧.⽐较好的时机是使⽤⼀个调试⼯具,⽐如od或ce有意让游戏检测到,通常使⽤np的游戏,在检测到有调试⼯具的时候都会弹⼀个对话框出来,⼀般你确定这个对话框,游戏就结束了,所以你千万不能确认这个对话匡,因为有对话框的时候,游戏和np之间的处理线程被挂起来了,你在这个时候全局卸载npsc.des概率会⾼很多.在5⽉1⽇前这个办法⽤在我上⾯举例的游戏上还是有效果的,51后我没试过,不敢打包票.上⾯的暴⼒卸载,⽬前在很多游戏还是可以使⽤的,只是每个⼈使⽤的⼯具可能不⼀样,成功概率也就不同.在过np上⾯,我觉得仔细观察那些np下的挂是⼀个⾮常好的习惯.⼤家可以研究下为什么某写挂可以在np下运⾏,你可以把挂的⼀些⽂件⾃⼰分析下,⾃⼰开动脑筋,也许成功是那么的简单. by-Taki也许有朋友会觉得我这个帖⼦纯粹是理论上的,其实如果我真做⼀个视频,⼤家也仅仅是会过了⼀个游戏,换到其他游戏,依样画葫芦肯定是没有⽤的,所以需要⾃⼰举⼀反三.,观察,观察,再观察.这个就算是这个⽉的功课吧,呵呵.本⼈没什么特长,仅仅善于拿来主义.个⼈觉得⽤最少资源获取最⼤功能才是编程精髓.躲过NP的扫描的⼏个⽅法⼀、FPE篇台湾⼈开发的东西,哎。

最新过DNF TP驱动保护视频讲解1

最新过DNF TP驱动保护视频讲解1

用Xuetr 进行扫描,04. 干掉NtOpenProcess 中的Deep InLine Hook:TP Hook NtOpenProcess 的直接效果就是咱在应用层里面调用OpenProcess(DNF 进程) 失败,并且在OD 或者CE 里面也根本找不到DNF 游戏的进程,更别提什么打开或者附加了,这使得咱根本对DNF 无从下手。

研究过TP 的都知道,TP 在NtOpenProcess 中是下了深层的InLine 钩子,这个也早已经不是什么秘密,各个论坛上的都知道,是Hook 的ObOpenObjectByPointer,对于这个,可以使用Xuetr 扫描内核钩子扫描出来(TP 对Xuetr 好像敏感,在XP 机上可能蓝屏)。

在一些简单的InLine Hook 中,咱都是直接拿内核API 的头 5 个或者头7 个字节做Hook,这种Hook 方式是很容易被干掉的,直接SSDT Hook 就可以干掉,对于用SSDT Hook 干掉浅层的InLine Hook 可以参考看雪上堕落天才的文章:文章名称:《SSDT Hook 的妙用- 对抗Ring0 InLine Hook》文章地址:/showthread.php?t=40832不过TP 是做的Deep InLine Hook,也就是Hook 的是NtOpenProcess 深层的地址,而不是函数头,要想用SSDT Hook 来干掉的话,除非自己重写NtOpenProcess,否则很难干掉,而且TP 在对NtOpenProcess 上还有检测,所以即使是重写NtOpenProcess 也很麻烦,因为在重写中也必须要绕过TP 可以被TP 检测到,从而弹出经典的TP 警告框。

在这里咱可以在Kernel Detective 中看到它所做的InLine Hook,首先是启动Kernel Detective,然后在SSDT 子菜单中,找到NtOpenProcess,然后在上面右键,在右键菜单中选择反汇编当前地址,从而就会跳转到NtOpenProcess 的反汇编代码中了,由于我的电脑太烂了,开个虚拟机,再跑个DNF,再主机里面开个Visual Studio 的话,估计半天会没反应,所以这里截图截的都是没有启动DNF 的图,也就是在TP 还没有进行Hook 时候的截图,对于电脑配置好的朋友,可以自己去测试,测试结果除了地址外,其他基本都是一样的,那么如何实现干掉TP 对NtOpenProcess 所做的Hook 呢?一般干掉的意思就是恢复Hook,但是恢复Hook 有一个很严重的问题,那就是很容易就被TP 检测到了,其实可以换个思路,为什么一定要干掉TP 对NtOpenProcess 所做的Hook 呢?就算被干掉了,还得干掉TP 用来检测NtOpenProcess 的Hook 是否被干掉的线程之类的,这样就比较麻烦了,为何不直接绕过TP 的Hook 呢?要想绕过TP 的保护的话,我们也可以下一个InLine Hook,如果发现是DNF 进程的话,那好啊,咱直接跳到TP 下的InLine Hook 中执行(这样TP 还是执行它原来的代码,从而检测不出来被改变了)而如果不是DNF 进程的话,那咱就跳过TP 下的InLine Hook 就好了,上面这样说是说不清楚的,来点干脆的,写点伪代码比较容易看懂:TP 启动之前,也就是Hook 之前的伪代码:1: push dword ptr[ebp-38]2: push dword ptr[ebp-24]3: call ObOpenObjectByPointer4: mov edi,eax5: lea eax,dword ptr[ebp-B8]TP 启动之后,也就是Hook 之后的伪代码:1: push dword ptr[ebp-38]2: push dword ptr[ebp-24]3: call TPHookedObOpenObjectByPointer //这里代表TP Hook ObOpenObjectByPointer 的函数4: mov edi,eax5: lea eax,dword ptr[ebp-B8]绕过TP 所做的Hook 的伪代码(DNF 检测不出来自己被绕过了,要是能检测出来也就不叫绕过了):1: push dword ptr[ebp-38]2: push dword ptr[ebp-24]3: if(是DNF 进程)4: {5: call TPHookedObOpenObjectByPointer6: }7: else8: {9: call ObOpenObjectByPointer10: }11: mov edi,eax12: lea eax,dword ptr[ebp-B8]有了伪代码以后,我们要做的也就比较清楚了,要想实现“绕过TP 所做的Hook 的伪代码”的话,咱得自己也下一个InLine Hook,至于我们在哪里下InLine Hook 的话,也很明白,至少得再call ObOpenObjectByPointer 之前吧,否则都已经进入TP 的Hook 了,还谈什么绕过呢?下面给出一副截图来标记将要下我们自己的InLine Hook 的位置,现在已经知道要在哪个位置下InLine Hook 了,那么下一个问题就是咱如何才能得到这个地址呢?办法自然是搜索特征码了,具体的实现方式可以看下面的截图,通过搜索特征码咱就可以得到咱要下Hook 的地址了。

怎么解除DNF安全模式

怎么解除DNF安全模式

怎么解除DNF安全模式喜欢玩DNF的玩家应该都知道,DNF有一个安全模式功能,当出现安全模式时,游戏账号就会被锁定,无法正常的登陆游戏体验,这样也给很多玩家带来了很大的困扰。

下面517网游加速器緦思就来教大家怎么快速解除DNF安全模式。

什么是安全模式功能?一个保护账号的安全功能,当进入安全模式状态下,玩家的账号将不能进行任何有关于交易的操作。

实时保护玩家的账号,装备,道具安全。

什么情况下会出现安全模式?不在常用电脑登陆游戏账号;电脑处于高风险状态可能被盗号的情况下,系统也会自动出现安全模式。

知道了什么是安全模式,怎么样才会出现安全模式这些原因,相信大家都非常的清楚了。

这个模式虽然好,对于账号被盗的情况下,能大大的降低物品丢失的几率。

但是,对于一些长期无法使用固定IP地址上网的小伙伴们,可谓是伤不起啊。

现在一般的家用宽带,IP并不是固定的,只要重启路由器以后,IP则会更换,甚至有的小伙伴想在除家里以外其他电脑登陆游戏,且也是不太方便的。

其实想要有效的解决安全模式的出现,只要固定IP地址即可。

只要每次登陆都是同一个IP地址,系统默认就是常用电脑登陆。

即使是在网吧上网,其他的地方上网,也不会出现这个情况了。

下载517网游加速器换IP软件,可以固定IP地址,同时可以降低跨服跨区体验游戏过程中的游戏延迟。

为什么游戏延迟过高,相信大家都深有体会的,国内的游戏服务器分为两大区电信,网通。

但是,体验游戏的用户,经常都是属于跨服务器,跨游戏大区体验的。

例如:在上海,宽带运营商为电信,体验游戏则是选择的联通服务器,大区不是选择的上海,而是选择的湖北。

在这个情况下,就属于跨服跨区玩游戏了,这样使体验游戏的效果就大大的降低了。

如果游戏同一个服务器同时在线的人数比较多,就会很卡,在加上如果是网络高峰期,本地的宽带上网用户比较多,对于本地的宽带网速也是有影响的。

再加上跨服跨区玩游戏,这样想游戏延迟不高都难哦。

这个情况下,下载517网游加速器,选择游戏对应的服务器和大区,就能避开本地拥挤的网络环境,从而使游戏的延迟降到最低。

DNF防封DNF防掉线DNF数据锁定

DNF防封DNF防掉线DNF数据锁定

问题补充:数据处理器应该是有用的吧?
满意答案
怎么会没有啊 我近半年没被封过了 没用工具 纯手动清理数据 这方法自己发现的 不公开 以免和谐了 可以单独谈
好:0
不好:0
原创:0
非原创:0
满意答案
如果你开了科技掉线了就清理下垃圾文健在重起下在去别的区练一个小时的小号就可以了老马就不会纠结你了、这样更不会有封号的可能、
Shao Jie. 回答采纳率:10.0% 2011-11-08 09:41 好:0 不好:0
dnf防封器 根本不存在的东西,,如果有也是病毒,让你下载下来盗你号。。 有些人用辅助什么的基本上都被封过号。适当用一下没事。。。。
继续追问: 听说有些人封了n次的三天还没被搞一年。怎么回事
补充回答: 有些人用挂,用辅助太过份才会被封,一般首次被检测到用挂或辅助一般封1~3天。如果你解封后停用外挂几天再用,,,那再次检测到也只一到三天,如果你一解封又被检测到用挂那封的时间几月到几年就不定了,我有个朋友被封一千多天。。。。
3.在DNF目录里找到:DNF.cfg,打开-全选-删除-保存
5.在DNF目录里找到:DNF_CHINA.cfg和DNF.trc,直接删除
首先纠正一下啊,你手刷封号,是因为你以前用G的数据依旧在TX的服务器上,TX会往复检测,检测到你以前的数据异常,依旧个你中断,乃至封号。
六字箴言出来时,额,数据其实已经检测到了,你需要做的是任务管理器关掉DNF.exe。然后:
补充回答:
等三天吧,还好只是三天,现在还来得及,等你封一年估计就疯了,科技不是长久之计,一时爽而已,还是老实自己刷吧,什么防封器,解封器的··都是骗人的··,就算有用估计你的好以后也是被盗号光顾,你想啊谁会无缘无故给你好处的~~~

地下城与勇士安全模式

地下城与勇士安全模式

地下城与勇士安全模式首先,安全模式是什么?在DNF中,安全模式是一种账号保护功能,它可以有效避免玩家在游戏中遭受盗号、欺诈等风险。

当玩家开启安全模式后,就需要在进行一些重要操作时输入安全码,这样可以有效防止他人恶意操作玩家的账号。

因此,我们强烈建议玩家在游戏中开启安全模式,以保护自己的账号安全。

其次,如何开启安全模式?在DNF游戏中,开启安全模式非常简单。

玩家只需要登录游戏后,点击游戏设置中的安全模式选项,然后按照系统提示进行相应设置即可。

在设置安全模式时,玩家需要设置一个安全码,这个安全码是非常重要的,所以一定要设置一个复杂度较高的安全码,避免被他人猜测。

在设置完成后,玩家就成功开启了安全模式,可以更加放心地进行游戏。

另外,安全模式的作用是什么?开启安全模式后,玩家在进行一些重要操作时,如改变账号绑定、进行交易等,就需要输入安全码才能完成操作。

这样一来,即使玩家的账号密码泄露,恶意操作者也无法轻易进行一些重要操作,有效保护了玩家的账号安全。

因此,安全模式可以说是DNF游戏中非常重要的一个功能,帮助玩家避免了很多潜在的风险和损失。

最后,如何合理使用安全模式?虽然安全模式能够有效保护玩家的账号安全,但是玩家也需要合理使用安全模式。

在日常游戏中,玩家应该注意保护自己的账号信息,避免账号密码泄露,同时也要及时更新安全码,以增加账号的安全性。

此外,玩家在进行游戏交易时,也要谨慎对待,避免受到欺诈和损失。

总之,安全模式只是账号保护的一部分,玩家还需要自觉提高安全意识,保护好自己的账号信息。

总结一下,地下城与勇士安全模式是一项非常重要的账号保护功能,它可以有效避免玩家在游戏中遭受盗号、欺诈等风险。

玩家在游戏中应该及时开启安全模式,设置复杂的安全码,合理使用安全模式,保护好自己的账号信息。

希望玩家们能够重视账号安全,共同营造一个良好的游戏环境。

祝大家游戏愉快!。

dnf解除安全

dnf解除安全

dnf解除安全DNF(Dungeon Fighter Online)是一款非常受欢迎的多人在线角色扮演游戏,由韩国著名游戏开发商Neople开发并于2005年首次发布。

游戏以2D侧卷式战斗为主,玩家可以选择不同的职业角色来参与各种刺激的战斗和冒险。

然而,随着时间的推移,一些玩家可能会发现自己无法继续保持对游戏的兴趣,或者由于个人原因而希望解除安全措施,而这可以通过以下几种方式来实现。

首先,玩家可以选择删除游戏客户端以解除安全。

在电脑中找到并删除DNF游戏文件夹,在控制面板中卸载游戏客户端。

这样就可以彻底从电脑中移除DNF,并解除相关的安全设置。

其次,玩家可以选择取消游戏账户。

在DNF的官方网站或游戏社区中,玩家可以寻找帮助文档或联系客服人员,通过提供相关的信息和身份验证来申请注销账户。

这种方式是比较安全可靠的,因为只有玩家本人才能申请解除安全。

另外,玩家也可以选择直接联系游戏官方以请求解除安全。

在DNF的官方网站上,一般都会提供客服联系方式,玩家可以通过电话、邮件或在线聊天等渠道咨询和申请解除安全。

需要注意的是,玩家需要提供相关的信息和身份验证才能被官方认可并执行解除安全操作。

最后,玩家还可以选择停止使用DNF账户,并定期更改密码来确保安全。

虽然这种方式并不会彻底解除安全,但可以有效防止他人盗用账号并保护个人信息的安全。

总的来说,DNF解除安全可以通过删除游戏文件夹、卸载游戏客户端、取消账户、联系官方或停止使用账户等方式来实现。

每个玩家可以根据自己的需求和情况选择适合自己的解除安全方式。

无论选择哪种方式,玩家都应该确保保护好个人信息和账户安全。

DNF防封教程

DNF防封教程
SKILL COMMAND SEAL=000000000000010100000000010001000000000000000000000000000000000000000000000000000000000000000010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008
SELECT CHANNEL COUNT=25 这个是频道的号码=25就是指频道25,你再换到频道32,这里就会
SELECT CHARACTER SLOT=0 显示品质(0,1,2/上,中,下)
LAST CONNECT DATE=708(这个是最后的登录时间=708就是7月8号,以此类推) )
然后再找到名为LagLog的文本文档。那里是记录你掉线的时间的。同样。把里面的东西全部删掉(保存)。
其实我个人认为掉线记录清理器是没用的。因为那只能清理外部内容,根本不能斩草除根。
希望能帮助大家点小忙
[ID 123456789] 你的ID(貌似你改过了)
SELECT SERVER=91 显示服务器(91貌似是个代号)

安全模式怎么解除

安全模式怎么解除

安全模式怎么解除(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如职场文书、合同协议、总结报告、演讲致辞、规章制度、自我鉴定、应急预案、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays for everyone, such as workplace documents, contract agreements, summary reports, speeches, rules and regulations, self-assessment, emergency plans, teaching materials, essay summaries, other sample essays, etc. If you want to learn about different sample essay formats and writing methods, please stay tuned!安全模式怎么解除安全模式怎么解除帐号发生异常,并被系统保护处于安全模式后,需要解除安全模式时,您可以:1、您可以通过点击解除安全模式按钮,在跳转到的页面上验证密保手机、QQ令牌、手机令牌中的任意一种来解除安全模式;2、如果您没有密保手机、QQ令牌或手机令牌,请您登录腾讯安全中心官方网页绑定以上三种密保手段至少一种,并设置DNF登录保护,操作完成后,请您重新登录游戏,正常情况下,安全模式会自动解除;温馨提示:一代密保用户进行以上操作可能涉及先升级二代密保的操作。

DNF破解安全模式方法汇总

DNF破解安全模式方法汇总

dnf安全模式解除方法
DNF在安全模式下,账号的交易、丢弃、销毁物品等敏感操作将受到限制,这是为了最大程度低保护玩家的账号和物品安全。

如果您进入游戏时发现自己的账号进入了安全模式,又需要进行交易买卖等操作时,只要验证可信的高级密保手段,就能解除安全模式,顺畅地进行买卖操作。

DNF安全模式的具体解除步骤:
1.进入游戏界面后,如果看见以下提示则表示账号进入了安全模式,需要您验证密保进行解除。

2.买卖等操作触发敏感操作提示之后,点击确定解除按钮。

3.点击确认解除后进入安全模式页面。

4.帐号登陆(必须为进入安全模式的帐号):
5.选择解除方式:
a)点击QQ令牌,弹出QQ令牌验证框:
b)点击手机令牌,弹出手机令牌验证框:
c)点击密保手机,弹出密保手机验证框:
6.验证成功,验证框自动关闭,游戏中出现以下界面。

(验证失败,则验证框会给出相应的错误提示):。

过DNFTP驱动保护1_免费下载

过DNFTP驱动保护1_免费下载

文章目录:01. 博文简介:02. 环境及工具准备:03. 分析TP所做的保护:04. 干掉NtOpenProcess 中的Deep InLine Hook:05. 干掉NtOpenThread 中的Deep InLine Hook:06. 干掉NtReadV irtualMemory 中的InLine Hook:07. 干掉NtWriteVirtualMemory 中的InLine Hook:08. 干掉KiAttachProcess 的InLine Hook:09. 干掉NtGetContextThread 中的InLine Hook:10. 干掉NtSetContextThread 中的InLine Hook:11. 干掉DbgkpQueueMessage 中的InLine Hook:12. 干掉DbgkpSetProcessDebugObject 中的InLine Hook:13. 干掉Debug 清零:共四篇,本篇为第一篇。

01. 博文简介:本篇博文仅仅是我对过TP保护所作的一个总结,里面没有啥高深的技术,仅仅是Hook 而已,并且只有些InLine Hook 和SSDT Hook 的代码,这些对大牛而言都是小菜一碟,所以大牛们可以直接飘过咯^_^然后就是关于本篇博文,估计会比较长,所以我会按照上面的目录分出来一,二,三,四篇相继发表。

我先来装回逼科普下TP吧,直接从百度百科抄袭点过来:TP 系统全称TenProtect,是由腾讯自主研发推出的安全系统,可以有效保护游戏不受外挂侵犯,同时具备反木马盗号功能,能有效的防止用户游戏帐号和虚拟财产被窃取。

腾讯TP 系统主要作用为外挂检测、反盗号、反非法工作室、防非法消息。

具体功能如下:反注入:TP系统能有效的阻止非法模块对游戏进行注入;反加速:TP系统能防止游戏客户端的非法加速功能;反模拟按键:TP系统能有效阻止模拟按键程序;反脱机:TP系统能针对非正常登录游戏的行为进行检测;反调试:TP系统采用内核级反调试技术,保护游戏进程不被调试和分析;反木马:TP系统可以保护玩家帐号不被木马程序窃取;检测外挂功能:TP系统能对外挂功能进行检测;指令混淆:TP系统能对正常指令进行虚拟和变形,加大外挂作者逆向难度;特征匹配:TP系统采用特征码匹配技术,能准确检测到外挂的使用;文件校验:TP系统可以准确检测游戏目录下的文件是否被第三方程序篡改;游戏内存数据校验:TP系统所特有技术手段可以准确感知到游戏关键数据的异常;游戏进程保护:TP系统可以保护游戏进程不被第三方程序读写;游戏虚拟财产保护:在玩家因不当操作引起帐号泄漏情况下,TP系统也可以保护玩家帐号内虚拟财产不被不法份子转移;我几个日子弄了过TP的驱动保护,算下来前前后后也弄了半来个月,虽然比较累,但还是收获了蛮多东西,这篇博文就是将如何过掉TP做的一个总结而已,在这篇文章中我会一一介绍过掉TP所Hook 的各种API 的思路,并附上简要的代码,在过TP驱动保护的过程中以及一些思路和一些代码也很大程度上都是来自国内的几大论坛,主要是看雪,一蓑烟雨,DebugMan 等论坛,这里对我所借鉴的那些哥们说Many Thanks。

地下城安全模式怎么解除

地下城安全模式怎么解除

地下城安全模式怎么解除
地下城安全模式是一种保护玩家免受攻击和伤害的机制,但有时候我们可能需
要解除这种模式,以便更好地进行游戏。

下面我将介绍地下城安全模式的解除方法。

首先,要解除地下城安全模式,我们需要找到游戏设置中的安全模式选项。


游戏界面的设置菜单中,可以找到地下城安全模式的设置选项。

点击进入该选项后,会看到一个开关按钮,将其关闭即可解除地下城安全模式。

另外,有些游戏可能会要求玩家输入安全码或进行身份验证来解除安全模式。

这时,玩家需要按照游戏提示进行相应操作,输入正确的安全码或完成身份验证流程,才能成功解除安全模式。

在解除地下城安全模式之后,玩家需要注意自身的安全,尽量避免在游戏中受
到攻击和伤害。

可以通过提升自身的装备和技能水平,加强自我防护能力,以应对可能的危险情况。

此外,也可以寻找队友或组队进行游戏,这样在解除安全模式后可以有他人提
供支援和保护,减少受到伤害的风险。

总的来说,解除地下城安全模式并不复杂,只需要按照游戏设置中的指引进行
操作即可。

但在解除安全模式后,玩家需要提高警惕,加强自我防护,以确保在游戏中的安全。

希望以上内容能够对解除地下城安全模式有所帮助。

祝愿大家在游戏中玩得开心,玩得安全!。

dnf解除安全模式的方法步骤

dnf解除安全模式的方法步骤

dnf解除安全模式的方法步骤当玩家的帐号处于高风险状态时,将会自动进入安全模式。

那么如何解除安全模式呢?下面是小编为你整理的dnf解除安全模式的方法,希望对大家有帮助!dnf解除安全模式的方法首先登陆QQ,在QQ界面选择最左下角,选择里面的安全----->安全中心首页。

2进入安全中心首页后,点击右上角“查看更多”3进去后,选择左上角第一个,“登陆记录”4登陆记录目录里,选择第一条后面的反馈:接着出来一个框点击--->“是我”--->"提交",然后登陆游戏,就不会弹出“安全模式了”END动动手指,一毛解决先登录游戏,然后通过交易就会出现如图需要解除安全模式的信息,点击“解除安全模式”点击之后,会弹出这么一个东西,登录进去,进去后点击解除。

按照它给的号码,发送短信。

发送成功短信两三秒之后,登录着的游戏就会提醒你安全模式也成功退出,问题解决。

DNF死灵百科全书一、技能解析受身蹲伏:点评:通用无敌技能,没什么好说的,配合睡眠贝肉使用,可以为自己主动提供无敌状态,在某些特定场合有奇效,但是由于大转移贝肉绝版,所以个人觉得还是吃复活药比较实惠。

魔法暴击:点评:法系通用被动,除非你有自信暴击轻松破100,否则都要得满。

加点建议:满(这玩意法系有不满的?)魔法背击:点评:死灵的背击实际上要是非常多的,比如大巴攻击敌人时刀尾的范围攻击会经常触发背击判定等等,推荐点满技能之一。

加点建议:满焰刃:点评:转职自带技能,自带的火属性技能,除了野猪烧尸,GBL 点燃烧瓶以及骗属性我想不到用途。

碎踝:点评:专职自带1级,死灵减速技能之一,由于攻击范围过小而且距离太近导致很不安全,伤害方面因为不吃暗强所以不是很乐观,一般只适用于少数觉得死怨不能满足减速要求的可以考虑点满(针对空间3件套)。

加点建议:1(有且仅有空间三切死怨减速不够用的可以考虑满)天诛:点评:死灵唯一一个能抓取无敌技能,经常在异界用来躲避全屏攻击使用,可配合[弧光闪]产生的僵直能更好的抓背换来更长的无敌时间。

dnf怎么解安全模式

dnf怎么解安全模式

dnf怎么解安全模式DNF是一个非常受欢迎的多人在线角色扮演游戏,许多玩家喜欢挑战游戏的难度,而且在游戏中有一个被称为“安全模式”的设置,对于一些新手玩家来说,这个模式可能会限制他们在游戏中的表现。

因此,了解如何解除DNF的安全模式是非常重要的。

在本文中,我将向你介绍几种方法来解除DNF的安全模式。

在DNF中,安全模式是一种用于限制在某些地图中受到其他玩家攻击的设置。

这个设置对于一些新手玩家来说是非常有用的,因为他们可以在这个模式下安全地进行游戏,而不需要担心其他玩家会对他们发动攻击。

然而,对于一些高级玩家来说,这个模式可能会限制他们在游戏中的表现,因为它禁止了一些重要的游戏功能,比如PK(玩家间的对战)和PK地图。

解除DNF的安全模式有几种方法,下面是其中的一些方法。

第一种方法是通过游戏设置来解除安全模式。

在DNF的游戏设置中,你可以找到一个叫做“安全模式”或者“PK模式”的选项。

通过将这个选项设置为关闭,你就可以解除安全模式,从而可以自由地在游戏中进行PK和挑战其他玩家。

第二种方法是通过使用特定的物品来解除安全模式。

在DNF中,有一些特定的物品可以解除安全模式,一个例子是“解安全模式之座”。

当你使用这个物品时,它会立即解除DNF的安全模式,让你可以自由地进行PK和挑战其他玩家。

第三种方法是通过参加特定的活动来解除安全模式。

在DNF中,有一些活动可以解除安全模式,比如战场和竞技场。

当你参加这些活动时,安全模式将自动解除,让你可以和其他玩家进行对战。

此外,还有一些额外的注意事项需要在解除DNF的安全模式时考虑。

首先,解除安全模式后,你需要非常小心,因为其他玩家可能会对你发动攻击。

你应该学会保护自己并尽量避免与强大的玩家交战,直到你足够强大可以与他们匹敌。

其次,解除安全模式后,你应该熟悉游戏中的PK规则和PK地图。

在PK中,有一些特定的规则和地图设计,你需要了解它们并遵守,以避免不必要的麻烦。

最后,解除安全模式后,你应该更加注重游戏中的防御和回避技巧。

DNF解除安全模式的方法技巧图解

DNF解除安全模式的方法技巧图解

DNF解除安全模式的方法技巧图解有时候DNF账号会处于安全模式,一些日常的操作都会变得无法操作,如何快速解除安全模式呢?下面是小编为你整理的DNF解除安全模式,希望对大家有帮助!DNF解除安全模式1.登陆QQ,在QQ界面选择如下图,选择里面的安全中心----->安全中心首页2.进入安全中心首页后,点击“查看更多”3.进去后,选择第一个,“登陆记录”,4.登陆记录目录里,选择第一条后面的反馈:接着出来一个框点击--->“是我”--->"提交",然后登陆游戏,就不会弹出“安全模式了”DNF各类错误代码大全及解决方法SX 提示码提示说明:您的电脑出现1, xxx, 0 (xxx代表任意数字)提示码,存在游戏盗号风险。

处理建议:建议您在安全的系统环境下修改密码并使用手机令牌和二级密码提高帐户安全性,同时使用杀毒软件或者QQ游戏木马专杀工具进行查杀。

SX 警告码提示说明:您的电脑出现2, xxx, 0(xxx代表任意数字)提示码,电脑中存在非法模块处理建议:请重启电脑后登陆游戏,同时请不要使用第三方非法软件进行游戏。

提示说明:您的电脑出现2, 520, 10x(x代表任意数字)提示码,Tenslx.dat损坏处理建议:建议您重启游戏或者重新下载游戏客户端来获取正确的Tenslx.dat文件。

提示说明:您的电脑出现2, 800, x (x代表任意数字)提示码,目录下存在异常文件处理建议:建议您登陆,下载“腾讯游戏木马专杀”工具修复TP 警告码提示说明:您的电脑出现,1080xxxx,x(xxxx代表任意数字)提示码,系统中存在非法模块处理建议:请勿打开多个游戏错误客户端进行游戏。

提示说明:您的电脑出现3,1530xxxx,x(xxxx代表任意数字)提示码,系统中存在非法模块处理建议:请您退出不必要的程序,降低系统资源占用,同时请勿打开多个游戏客户端进行游戏提示说明:您的电脑出现3,1720xxxx,x(xxxx代表任意数字)提示码,系统中存在非法模块处理建议:1、请您先尝试使用杀毒软件查杀木马,如发现木马请清除,再尝试进入游戏。

DNF防追封和解封一年方法

DNF防追封和解封一年方法

Dnf(地下城与勇士)
防追封和解封一年方法
留10级点PL,然后下游戏管辅助。

然后先删东西,公告上面有,然后手动刷把塔,手动刷把祭坛,然后去刷把符合等级的图,如果还有PL可以刷把洛兰,然后再上PK场PK 两把。

然后第二天早上
上祭坛里面从早上9点半挂到早上13点就百分百不追封部分大区还要7点挂到10点
【解封一年方法不是%100】
方法一:
到官网申诉说你号被误封前提你必须号里有2个以上的角色,并且另外一个角色没用过挂然后申诉说你号被误封,不可能1级的号也封把
你就把没用挂的小号名字给他说被封了然后他会查询角色异常资料,可是你小号确实没用过挂他就把你号解了你大号连同一起解封了【成功百分之50】
方法二:请仔细看步骤操作。

注意:启动能使用的辅助[不是过期非法辅助]
我的方法是要等快维护的时候使用。

辅助必须不非法的。

最后提前10分钟到5分钟操作。

建议提前10分钟。

也可以提前15分钟。

推荐10分钟。

最佳时间。

5分钟最好了。

只是操作不熟练。

时间太紧。

可能导致错过机会。

:启动能使用的外挂[不是过期非法辅助]
第三步:启动成功以后在频道耐心等待不点进入角色等维护时间到了就会弹出非法匡了耐心等待系追封3天时间
注意事项:为保险起见这3天时间内别上官网查时间免费被追封3天结束后又继续追封1年最好第四天在去官网查时间.看是几号解封然后再上游戏.
提示:系统追封是24小时以后启动的并不是出现非发就马上封的如果在这3天内。

不小心查了时间。

提示3天解封。

这时候要记住第四天再上游戏。

过DNF TP 驱动保护2

过DNF  TP 驱动保护2

06、干掉NtReadVirtualMemory 中的InLine Hook:前面已经干掉了TP 对NtOpenProcess 以及TP对NtOpenThread 所做的Hook,这样的话,我们已经可以使用OD 或者CE 看到DNF 的游戏进程了,弄过一些游戏方面内容的朋友应该都是知道CE 的,这东西是开源的,不过是基于Delphi 的,工具做得很不错,可以通过CE 来修改一些游戏进程的内存数据,比如可以修改一些简单的游戏的血值啊之类的,但是,此时我们可以用CE 来扫描一下DNF 游戏进程的内存,你会发现根本扫描不到任何数据,其实原因也很简单,TP 对NtReadVirtualMemory 进行了浅层的InLine Hook,从而可以达到防止其他进程读取DNF 游戏进程内存的目的,而CE 的话,在Ring3 下是通过ReadProcessMemory 来读取游戏内存的,而ReadProcessMemory 进入Ring0 后又是调用的NtReadVirtualMemory,由于NtReadVirtualMemory 被TP干掉了,所以自然用CE 是扫描不出任何东西的,要干掉TP 对NtReadVirtualMemory 所作的浅层InLine Hook 其实是比较简单的,因为TP并没有对NtReadVirtualMemory 做检测,所以可以直接用SSDT 来对抗掉浅层的InLine Hook 就OK。

至于原理的话,很简单,直接用SSDT Hook 替换掉系统服务NtReadVirtualMemory,然后在SSDT Hook NtReadVirtualMemory 这个我们自己写的系统服务中判断,如果是DNF 进程的话,直接调用原来的SSDT 系统服务就好,如果不是DNF 进程的话,我就跳过TP 对NtReadVirtualMemory 所做的InLine Hook,也就是跳过前面7 个字节就OK 了。

过TP保护的最佳方法(最新整理)

过TP保护的最佳方法(最新整理)

BYTE *p;
BYTE MovEaxAddress[5] = {0xB8,0,0,0,0}; //
BYTE JmpEax[2] = {0xff,0xe0}; KIRQL Irql;
// 特征码
BYTE Signature1 = 0x56, //p-1
Signature2 = 0x57, //p-2
KiAtta chProce ss
NtRe adVirtua lMemo ry NtWriteVirtualMemory NtOpenThread
图片:2.jpg 图片:3.jpg 图片:4.jpg
NtOpenProcess
图片:5.jpg 图片:6.jpg
引用:其中,前 3 个直接恢复即可。 第 4 个有监视,直接恢复即刻重启 第 5 个和 ring3 有通信,直接恢复 1 分钟内 SX 非法模块 根据上面的分析,下面给出相应的解决方案 1.直接恢复 第 1、2、3 处 HOOK 2.绕过 4、5 处 HOOK 3.将 debugport 清零的内核线程干掉 4.恢复硬件断点 但是要有一个先后的逻辑顺序 因为内核有一个线程负责监视几个地方,必须要先干掉它。 但是这个内容我写在了处理 debugport 清零的一起,也就是第 3 步。所以大家在照搬源码的时候 注意代码执行次序
并对 debugport 进行了疯狂的清零操作 甚至还包括 EPROCESS+70\+74\+78 等几处位置
图片:1.jpg
处理的手段通常都是向 64 端口写入 FE 导致计算机被重启 代码: [url=javascript:]复制代码[/url]
1.
.text:01001665 mov al, 0FEh
废话了半天,正式开始吧。 tmd_TP 也就是国内比较流行的游戏 D_N*F 的游戏保护。 它在 ring0 层一共 HOOK 了几个地方和一些其他的工作。来达到保护的目的 下面是简报:

dnf过保护

dnf过保护

广海原文如下:#include "ntddk.h"#define ThreadLength 0x190 //要保存的 NtOpenThread 原代码的长度#define ProcessLength 0x184 //要保存的 NtOpenProcess 原代码的长度#define DeviceLink L"\\Device\\DNFCracker"#define SymbolicLink L"\\DosDevices\\DNFCracker"#define IOCTL_RESTORE (ULONG)CTL_CODE(FILE_DEVICE_UNKNOWN, 0x886, METHOD_BUFFERED, FILE_ANY_ACCESS)typedef NTSTATUS (* NTOPENTHREAD)(OUT PHANDLE ThreadHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,IN OPTIONAL PCLIENT_ID ClientId);typedef NTSTATUS (* NTOPENPROCESS)(OUT PHANDLE ProcessHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,IN PCLIENT_ID ClientId);typedef struct _SERVICE_DESCRIPTOR_TABLE{PVOID ServiceTableBase;PULONG ServiceCounterTableBase;ULONG NumberOfService;ULONG ParamTableBase;}SERVICE_DESCRIPTOR_TABLE, *PSERVICE_DESCRIPTOR_TABLE;extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable;VOID Hook();VOID Unhook();NTOPENTHREAD OldThread;NTOPENPROCESS OldProcess;ULONG AddrRead, AddrWrite;//原 NtReadVirtualMemory/NtWriteVirtualMemory 的前 16 字节代码ULONG OrgRead[2], OrgWrite[2];//保存 NtOpenThread/NtOpenProcess 代码UCHAR MyThread[ThreadLength], MyProcess[ProcessLength];NTSTATUS MyNtOpenThread(PHANDLE ThreadHandle,ACCESS_MASK DesiredAccess,POBJECT_ATTRIBUTES ObjectAttributes,PCLIENT_ID ClientId){ACCESS_MASK oDA;OBJECT_ATTRIBUTES oOA;CLIENT_ID oCID;NTSTATUS statusF, statusT;oDA = DesiredAccess;oOA = *ObjectAttributes;oCID = *ClientId;statusF = OldThread(ThreadHandle, oDA, &oOA, &oCID);statusT = ((NTOPENTHREAD)MyThread)(ThreadHandle, DesiredAccess, ObjectAttributes, ClientId);return statusT;}NTSTATUS MyNtOpenProcess(PHANDLE ProcessHandle,ACCESS_MASK DesiredAccess,POBJECT_ATTRIBUTES ObjectAttributes,PCLIENT_ID ClientId){ACCESS_MASK oDA;OBJECT_ATTRIBUTES oOA;CLIENT_ID oCID;NTSTATUS statusF, statusT;oDA = DesiredAccess;oOA = *ObjectAttributes;oCID = *ClientId;statusF = OldProcess(ProcessHandle, oDA, &oOA, &oCID);statusT = ((NTOPENPROCESS)MyProcess)(ProcessHandle, DesiredAccess, ObjectAttributes, ClientId);return statusT;}NTSTATUS DispatchIoCtrl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp){ULONG ioControlCode;ULONG inBufLength, outBufLength;//PUCHAR InputBuffer, OutputBuffer;NTSTATUS status = STATUS_SUCCESS;PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp);inBufLength = irpStack->Parameters.DeviceIoControl.InputBufferLength; outBufLength = irpStack->Parameters.DeviceIoControl.OutputBufferLength; ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;switch (ioControlCode){case IOCTL_RESTORE://InputBuffer = (PUCHAR)Irp->AssociatedIrp.SystemBuffer;//OutputBuffer = (PUCHAR)Irp->AssociatedIrp.SystemBuffer;//恢复 NtReadVirtualMemory/NtWriteVirtualMemory 前 16 字节*(PULONG)(*(PULONG)AddrRead) = OrgRead[0];*(PULONG)(*(PULONG)AddrRead + 4) = OrgRead[1];*(PULONG)(*(PULONG)AddrWrite) = OrgWrite[0];*(PULONG)(*(PULONG)AddrWrite + 4) = OrgWrite[1];Irp->rmation = outBufLength;break;default:DbgPrint("Unknown IOCTL: 0x%X (%04X)",ioControlCode, IoGetFunctionCodeFromCtlCode(ioControlCode));status = STATUS_INVALID_PARAMETER;Irp->rmation = 0;}//完成 IRPIrp->IoStatus.Status = status;IoCompleteRequest(Irp, IO_NO_INCREMENT);return status;}NTSTATUS DispatchCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) {Irp->IoStatus.Status = STATUS_SUCCESS;Irp->rmation = 0;IoCompleteRequest(Irp, IO_NO_INCREMENT);return Irp->IoStatus.Status;}VOID OnUnload(IN PDRIVER_OBJECT DriverObject){UNICODE_STRING usLink;/*ULONG i;for (i = 0; i < ThreadLength; i += 4){DbgPrint("%02x %02x %02x %02x\n", MyThread, MyThread[i + 1], MyThread[i + 2], MyThread[i + 3]);DbgPrint("%02x %02x %02x %02x\n", MyProcess, MyProcess[i + 1], MyProcess[i + 2], MyProcess[i + 3]);}*/Unhook();DbgPrint("DNF Cracker Unloaded!");RtlInitUnicodeString(&usLink, SymbolicLink);IoDeleteSymbolicLink(&usLink);IoDeleteDevice(DriverObject->DeviceObject);}NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath){NTSTATUS status;PDEVICE_OBJECT DvcObj;UNICODE_STRING usDevice, usLink;PLIST_ENTRY pLE = (PLIST_ENTRY)DriverObject->DriverSection;//隐藏驱动pLE->Flink->Blink = pLE->Blink;pLE->Blink->Flink = pLE->Flink;DriverObject->DriverUnload = OnUnload;//创建虚拟设备RtlInitUnicodeString(&usDevice, DeviceLink);status = IoCreateDevice(DriverObject, 0, &usDevice, FILE_DEVICE_UNKNOWN, 0, TRUE, &DvcObj);if (!NT_SUCCESS(status)){DbgPrint("Failed to create device!\n");return status;}//创建符号链接RtlInitUnicodeString(&usLink, SymbolicLink);status = IoCreateSymbolicLink(&usLink, &usDevice);if (!NT_SUCCESS(status)){IoDeleteDevice(DriverObject->DeviceObject);DbgPrint("Failed to create symbolic link!\n");return status;}//调度函数分配DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] =DriverObject->MajorFunction[IRP_MJ_CREATE] =DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchCreateClose; DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchIoCtrl;Hook();DbgPrint("DNF Cracker Loaded!");return STATUS_SUCCESS;}// OrgRel 原相对跳转地址// CurAbs 当前代码绝对地址// MyAbs 替换代码绝对地址// CodeLen 跳转代码占据的长度// 返回值到替换代码的相对地址LONG GetRelAddr(LONG OrgRel, ULONG CurAbs, ULONG MyAbs) //, ULONG CodeLen) {ULONG TrgAbs;TrgAbs = CurAbs + OrgRel; // + CodeLen; //目的地址return TrgAbs - MyAbs;}// 保存原来整个函数的代码// pCode 用来保存代码的数组的地址// TrgAddr 要保存的函数的地址// BufferLength 整个函数占用的大小VOID BufferCode(PUCHAR pCode, ULONG TrgAddr, ULONG BufferLength){ULONG cAbs, i;LONG oRel, cRel;memset(pCode, 0x90, BufferLength);for (i = 0; i < BufferLength; i++){cAbs = TrgAddr + i;pCode = *(PUCHAR)cAbs;switch (*(PUCHAR)cAbs){case 0x0F: //JXX NEAR Xif ((*(PUCHAR)(cAbs + 1) >= 0x80)&&(*(PUCHAR)(cAbs + 1) <= 0x8F)) {oRel = *(PLONG)(cAbs + 2);if ((oRel + cAbs + 6 > TrgAddr + BufferLength)||(oRel + cAbs + 6 < TrgAddr)) //判断跳转是否在过程范围内{pCode[i + 1] = *(PUCHAR)(cAbs + 1);cRel = GetRelAddr(oRel, cAbs, (ULONG)pCode + i);memcpy(pCode + i + 2, &cRel, sizeof(LONG));//DbgPrint("JXX: 0x%08X -> 0x%08X", cAbs, (ULONG)pCode + i);i += sizeof(LONG) + 1;}}break;case 0xE8: //CALLoRel = *(PLONG)(cAbs + 1);if ((oRel + cAbs + 5 > TrgAddr + BufferLength)||(oRel + cAbs + 5 < TrgAddr)) //判断跳转是否在过程范围内{cRel = GetRelAddr(oRel, cAbs, (ULONG)pCode + i);memcpy(pCode + i + 1, &cRel, sizeof(LONG));//DbgPrint("CALL: 0x%08X -> 0x%08X", cAbs, (ULONG)pCode + i);i += sizeof(LONG);}break;case 0x80: //CMP BYTE PTR Xif (*(PUCHAR)(cAbs + 1) == 0x7D){memcpy(pCode + i + 1, (PVOID)(cAbs + 1), 3);i += 3; continue;}break;case 0xC2: //RET Xif (*(PUSHORT)(cAbs +1) == 0x10){memcpy(pCode + i + 1, (PVOID)(cAbs + 1), sizeof(USHORT));i += sizeof(USHORT);}break;/*case 0xE9: //JMPoRel = *(PLONG)(cAbs + 1);if (oRel + cAbs > TrgAddr + BufferLength){cRel = GetRelAddr(oRel, cAbs, (ULONG)pCode + i);memcpy(pCode + i + 1, &cRel, sizeof(LONG));i += 4;}*/}if ((*(PUCHAR)cAbs == 0x39)||(*(PUCHAR)cAbs == 0x89)||(*(PUCHAR)cAbs == 0x8D)) {memcpy(pCode + i + 1, (PVOID)(cAbs + 1), sizeof(USHORT));i += sizeof(USHORT); continue;}/*if ((*(PUCHAR)cAbs >= 0x70)&&(*(PUCHAR)cAbs <= 0x7F)&&(*(PUCHAR)(cAbs - 1) !=0xFF)){oRel = (LONG)(*(PCHAR)(cAbs + 1));cRel = GetRelAddr(oRel, cAbs, (ULONG)pCode + i);memcpy(pCode + i + 1, &cRel, 1);i++; continue;}*/}}VOID Hook(){ULONG AddrProcess, AddrThread;AddrRead = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0xBA * 4; AddrWrite = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x115 * 4; AddrThread = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x80 * 4; AddrProcess = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x7A * 4;OldThread = (NTOPENTHREAD)(*(PULONG)AddrThread);OldProcess = (NTOPENPROCESS)(*(PULONG)AddrProcess);DbgPrint("MyThread:0x%08X OldThread:0x%08X", MyThread, OldThread);DbgPrint("MyProcess:0x%08X OldProcess:0x%08X", MyProcess, OldProcess);__asmclimov eax,cr0and eax,not 10000hmov cr0,eax}//记录 NtReadVirtualMemory/NtWriteVirtualMemory 前 16 字节OrgRead[0] = *(PULONG)(*(PULONG)AddrRead);OrgRead[1] = *(PULONG)(*(PULONG)AddrRead + 4);OrgWrite[0] = *(PULONG)(*(PULONG)AddrWrite);OrgWrite[1] = *(PULONG)(*(PULONG)AddrWrite + 4);//保存原代码BufferCode(MyThread, (ULONG)OldThread, ThreadLength);BufferCode(MyProcess, (ULONG)OldProcess, ProcessLength);//SSDT Hook*(PULONG)AddrThread = (ULONG)MyNtOpenThread;*(PULONG)AddrProcess = (ULONG)MyNtOpenProcess;__asm{mov eax,cr0or eax,10000hmov cr0,eaxsti}DbgPrint("Hooked!");}VOID Unhook(){ULONG AddrProcess, AddrThread;AddrThread = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x80 * 4; AddrProcess = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x7A * 4;__asm{climov eax,cr0and eax,not 10000hmov cr0,eax}//恢复 SSDT*(PULONG)AddrThread = (ULONG)OldThread;*(PULONG)AddrProcess = (ULONG)OldProcess;__asm{mov eax,cr0or eax,10000hmov cr0,eaxsti}DbgPrint("Unhooked!");}相信大家也没看明白什么,广海作者 netspy007 只简单的传了一段程序,是delphi编程.现在我就来大概讲解下该作者的编程思路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
invoke ModifyFuncAboutDbg, Dspdo_1, 90784789h, 0fde89090h invoke ModifyFuncAboutDbg, Dmpp_1, 90787e39h, 950f9090h invoke ModifyFuncAboutDbg, Dct_1, 90785e39h, 840f9090h invoke ModifyFuncAboutDbg, Dqm_1, 9078408bh, 45899090h invoke ModifyFuncAboutDbg, Kde_1, 90787839h, 13749090h invoke ModifyFuncAboutDbg, Dfe_1, 9078418bh, 0d2329090h invoke ModifyFuncAboutDbg, Pcp_1, 90784389h, 45f69090h
.code ;还原自己的 Hook DriverUnload proc pDriverObject:PDRIVER_OBJECT
ret
DriverUnload endp
ModifyFuncAboutDbg proc addrOdFunc, cmd_1, cmd_2 pushad mov ebx, addrOdFunc mov eax, cmd_1 mov DWORD ptr [ebx], eax mov eax, cmd_2 mov DWORD ptr [ebx + 4], eax popad ret
and eax,not 10000h mov cr0,eax }
*((ULONG*)Address) = (ULONG)MyNtReadVirtualMemory;//HOOK SSDT *((UriteVirtualMemory;
__asm { //恢复内存保护
ModifyFuncAboutDbg endp
DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICO DE_STRING
cli mov eax, cr0 and eax, not 10000h mov cr0, eax
DbgPrint("Address:0x%08X",Address);
OldServiceAddress = *(ULONG*)Address;//保存原来 NtOpenProcess 的地址 OldServiceAddress1 = *(ULONG*)Address1;//保存原来 NtOpenProcess 的地 址 DbgPrint("OldServiceAddress:0x%08X",OldServiceAddress); DbgPrint("OldServiceAddress1:0x%08X",OldServiceAddress1);
DbgPrint("MyNtOpenProcess:0x%08X",MyNtReadVirtualMemory); DbgPrint("MyNtOpenProcess:0x%08X",MyNtWriteVirtualMemory);
JmpAddress = (ULONG)0x805b528a + 7; //跳转到 NtOpenProcess 函数头+1 0 的地方,这样在其前面写的 JMP 都失效了
JmpAddress1 = (ULONG)0x805b5394 + 7; DbgPrint("JmpAddress:0x%08X",JmpAddress); DbgPrint("JmpAddress1:0x%08X",JmpAddress1);
__asm { //去掉内存保护
cli mov eax,cr0
#include<ntddk.h>
typedef struct _SERVICE_DESCRIPTOR_TABLE {
PVOID ServiceTableBase; PULONG ServiceCounterTableBase; ULONG NumberOfService; ULONG ParamTableBase; }SERVICE_DESCRIPTOR_TABLE,*PSERVICE_DESCRIPTOR_TABLE; //由于 KeServic eDescriptorTable 只有一项,这里就简单点了
VOID OnUnload(IN PDRIVER_OBJECT DriverObject) {
DbgPrint("Unhooker unload!"); Unhook(); } ///////////////////////////////////////////////////// VOID Hook() { ULONG Address, Address1; Address = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0xB A * 4;//0x7A 为 NtOpenProcess 服务 ID Address1 = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x11 5 * 4;//0x7A 为 NtOpenProcess 服务 ID
标 题: 【原创】过掉 DNF 游戏保护,仅供学习研究。不得用于非法途径。
由于我的 C 用的比较少,所以大部分都用的汇编,部分地方用汇编写不是很方便,所以我用的 C,由于只 是学习,所以内核地址我没有计算都是硬编码的。过 DNF 主要分为三步,也许我的思路不太正确,反正可 以 OD 调试,下断。 程序没怎么修边幅,因为只是测试,所以一般都没有写更改内核后的恢复,不过不妨碍使用。
mov eax,cr0 or eax,10000h mov cr0,eax sti } } ////////////////////////////////////////////////////// VOID Unhook() { ULONG Address, Address1;
Address = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0xB A * 4;//查找 SSDT
invoke ModifyFuncAboutDbg, Mcp_1, 90785e39h, 950f9090h invoke ModifyFuncAboutDbg, Mcp_2, 90784a89h, 5e399090h invoke ModifyFuncAboutDbg, Dmvos_1, 9078498bh, 0cb3b9090h invoke ModifyFuncAboutDbg, Dumvos_1, 00787983h, 74909090h invoke ModifyFuncAboutDbg, Pet_1, 00787f83h, 74909090h invoke ModifyFuncAboutDbg, Det_1, 9078498bh, 0c9859090h invoke ModifyFuncAboutDbg, Dep_1, 9078498bh, 0c9859090h ;invoke ModifyFuncAboutDbg, Dmpp_2, 8bc0950fh, 8b90c03第 一个站进入、快速成为做挂达人。
第一步,这也是最起码的,你必须要能够打开游戏进程和线程,能够开打进程和线程后不被检测到 第二步,能够读写进村内存 第三步,能够用 OD 附加游戏进程 第四步,能够下硬件断点而不被检测
跳过 NtReadVirtualMemory,NtWriteVirtualMemory 函数头的钩子 代码:
.386 .model flat, stdcall option casemap:none
include dnf_hook.inc
.const Dspdo_1 equ 80643db6h Dmpp_1 equ 80642d5eh Dmpp_2 equ 80642d64h Dct_1 equ 806445d3h Dqm_1 equ 80643089h Kde_1 equ 804ff5fdh Dfe_1 equ 80644340h Pcp_1 equ 805d1a0dh Mcp_1 equ 805b0c06h Mcp_2 equ 805b0d7fh Dmvos_1 equ 8064497fh Dumvos_1 equ 80644a45h Pet_1 equ 805d32f8h Det_1 equ 8064486ch Dep_1 equ 806448e6h
}
__declspec(naked) NTSTATUS __stdcall MyNtWriteVirtualMemory(HANDLE Pr ocessHandle,
PVOID BaseAddress, PVOID Buffer, ULONG NumberOfBytesToWrite, PULONG NumberOfBytesReaded) { //跳过去 __asm { push 0x1c push 804eb560h //共十个字节 jmp [JmpAddress1] } } /////////////////////////////////////////////////// NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,PUNICODE_STRING R egistryPath) { DriverObject->DriverUnload = OnUnload; DbgPrint("Unhooker load"); Hook(); return STATUS_SUCCESS; } /////////////////////////////////////////////////////
相关文档
最新文档