最新TX过保护-DebugPort清0
最新过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 的地址了。
Windows系统常见的错误代码及解决方法
Windows系统常见的错误代码及解决方法无论是在日常使用电脑的过程中,还是在进行软件安装、升级、运行等操作时,我们都可能遭遇到Windows系统的错误代码。
这些错误代码可能会给我们的工作和生活带来一定的困扰,因此了解这些错误代码以及相应的解决方法就显得尤为重要了。
本文将介绍一些常见的Windows系统错误代码,并提供相应的解决方法,以帮助读者更好地应对这些问题。
一、蓝屏错误代码(BSOD)1. 错误代码:0x0000001A错误描述:内存管理错误解决方法:首先,可以尝试重新插拔内存条,确保其接触良好。
其次,可以运行内存诊断工具,检测是否存在内存问题。
最后,如果问题仍然存在,可以更新或更换内存条。
2. 错误代码:0x00000050错误描述:页错误解决方法:一般情况下,这种错误可能是由于硬件或驱动程序问题引起的。
可以尝试更新或卸载最近安装的驱动程序,或者进行硬件故障排查。
二、设备错误代码1. 错误代码:Code 37错误描述:Windows无法找到设备的驱动程序解决方法:可以尝试重新安装或更新设备的驱动程序,并确保相关的设备已正确连接。
2. 错误代码:Code 43错误描述:设备报告了一个问题解决方法:可以尝试重新插拔设备,或者尝试更新设备的驱动程序。
三、应用程序错误代码1. 错误代码:0xC0000005错误描述:访问冲突解决方法:可以尝试使用系统自带的问题报告工具,或者进行磁盘检查和修复。
2. 错误代码:0x80070002错误描述:系统找不到指定的文件解决方法:可以尝试重新安装相关应用程序,或者进行病毒扫描以及系统文件修复。
四、网络连接错误代码1. 错误代码:0x800704cf错误描述:本地设备找不到网络资源解决方法:可以尝试重启路由器、调整网络配置,或者更新网络驱动程序。
2. 错误代码:0x80070035错误描述:网络路径未找到解决方法:可以尝试禁用防火墙、重新启动网络共享服务,或者调整网络协议。
Windows系统常见错误代码解决方法
Windows系统常见错误代码解决方法Windows操作系统是目前最常用的操作系统之一,但在日常使用中,经常会遇到各种错误代码的提示,这些错误代码可能会导致系统崩溃或功能异常。
本文将介绍一些Windows系统常见错误代码的解决方法,以帮助读者更好应对系统错误。
错误代码1:0x80070005错误描述:访问被拒绝解决方法:这个错误代码通常与权限设置有关。
我们可以尝试使用管理员身份运行程序或修改权限设置,确保程序或操作有足够的权限执行。
错误代码2:0x80004005错误描述:未指明的错误解决方法:这个错误代码常见于系统文件损坏或注册表错误。
我们可以尝试运行系统自带的修复工具,如“系统文件检查工具”或“注册表修复工具”,来修复损坏的文件或注册表项。
错误代码3:0x8024402c错误描述:无法连接到Windows更新服务器解决方法:该错误代码通常与Windows更新相关。
我们可以尝试打开“设置”->“更新和安全”->“Windows更新”,点击“检查更新”来重新连接更新服务器。
同时,也可以尝试关闭防火墙或临时禁用杀软来解决连接问题。
错误代码4:0xc000021a错误描述:System登录流程终止解决方法:这个错误代码通常与系统文件损坏有关,特别是登录流程。
我们可以尝试进入安全模式,使用系统还原工具还原系统到之前正常运行的状态。
如果系统还原不起作用,可以考虑重新安装操作系统。
错误代码5:0x80070057错误描述:参数无效解决方法:这个错误代码可能出现在系统设置或安装过程中。
我们可以尝试使用默认设置或修改参数值,确保输入的参数是合法有效的。
同时,也可以尝试使用系统备份还原恢复到之前正常的状态。
错误代码6:0x8024402f错误描述:无法连接到Windows Update服务器解决方法:该错误代码通常与网络连接或代理服务器设置有关。
我们可以尝试检查网络连接是否正常,确保网络连接畅通。
同时,也可以尝试检查代理服务器设置,如果使用代理服务器,请确保代理服务器的设置正确。
Win10提示systemserviceexception蓝屏代码怎么办?
Win10提示systemserviceexception蓝屏代
码怎么办?
在使用电脑的过程中,不少朋友都遇到过蓝屏的现象,像我就遇到了systemserviceexception蓝屏终止代码,那么遇到这种蓝屏代码应该要怎么办呢?下面就和我一起来看看有什么解决方法吧。
Win10提示systemserviceexception蓝屏代码的解决方法
方法一
1、使用Windows键+R打开运行,输入"control.exe',点击确定。
2、选择"硬件和声音'。
3、点击电源选项下的"更改电源按钮的功能'。
4、点击"更改当前不可用的设置'。
5、取消对关机设置中"启用快速启动(推荐)'的勾选,保存修改后退出控制面板。
方法二
1、重启电脑按F8进入安全模式或者PE;
2、打开我的电脑,左上方点【查看】,勾选【隐藏的项目】;
3、删除WdFilter.sys文件在C:\Windows\System32\drivers\wd和C:\ProgramData\Microsoft\WindowsDefender\Platform\4.18.2022.4-0\ Drivers中找到WdFilter.sys,然后将其删除;
4、重启电脑。
破解XXX游戏驱动保护过程总结
破解XXX游戏驱动保护过程总结刚刚接触软件破解还有驱动编写,好多东西都不熟,折腾了好久,把中间可能对⼤家有价值的过程记录下来。
刚开始碰到的问题就是不能内核调试,因为要写驱动,需要⽤到。
⼀般禁⽤内核调试都是在驱动⾥调⽤KdDisableDebugger,往上回溯⼀个函数,基本上就是驱动检测禁⽤是否成功的代码,否则就是⼀个循环不停的调⽤KdDisableDebugger函数。
我的做法是修改KdDisableDebugger代码,这样不管什么时候被调⽤到,内核调试都不能被禁⽤,⽆⾮就是驱动那个死循环会导致机器卡死罢了,在KdDisableDebugger上设置⼀个断点,中断后,就把KdDisableDebugger和驱动的代码都改掉,然后禁⽤断点,继续内核的执⾏。
我⽤的是下⾯这个命令做这段话说的事情:bp KdDisableDebugger"eb nt!KdDisableDebugger+26 75;eb nt!KdDisableDebugger+41 75;ebTesSafe+5069 74;eb TesSafe+2703 75;bd 0;g"然后就是把驱动⾥hook的函数恢复,为了找到内核ssdt表⾥被hook的函数,看了⽹上的资料,有⼯具可以做这个事情,⼀是那些⼯具我都没有⽤过,不⼤会⽤,⼆是我想把内核⾥具体被inline hook的地址找出来,所以我就⽤了下⾯这个windbg脚本做这个事情,运⾏脚本之前需要记下eax, ebx, ecx的值,等脚本运⾏完成以后恢复。
当然也可以⽤windbg⾥的伪寄存器,但是语法还有点不熟,就直接⽤现成的寄存器了,在启动游戏之前,先dump⼀下:.logopen c:\logs\beforehook.txt # 因为dump出来的东西⽐较多,就放到⼀个log⾥r ebx = 0 # 计数器# 遍历ssdt表,把⾥⾯每个函数的汇编代码都dump出来,因为不知道每个函数的⼤⼩,所以每个函数都dump 1000⾏。
过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。
怎样解决电脑出现错误代码的问题
怎样解决电脑出现错误代码的问题在我们日常使用电脑的过程中,不可避免地会遇到各种各样的问题,其中最常见的就是电脑出现错误代码。
这些错误代码往往让人感到困惑和烦恼,但是只要我们能够正确地处理和解决,就能够顺利恢复电脑的正常运行。
本文将介绍一些常见的电脑错误代码,并提供有效的解决方法,帮助大家解决电脑出现错误代码的问题。
一、蓝屏错误代码(BSOD)蓝屏错误代码(Blue Screen of Death,简称BSOD)是指电脑系统突然出现蓝屏,并伴随着一串错误代码,通常表示系统出现了严重错误。
下面是两个常见的蓝屏错误代码及其解决方法:1. 0x0000007E这个错误代码通常表示系统内核遇到了一个异常情况,可能的原因包括驱动程序冲突、硬件故障或者病毒感染等。
解决方法如下:(1)检查最近安装的驱动程序,尝试卸载或更新有冲突的驱动程序。
(2)进行硬件诊断,查找潜在的硬件故障。
(3)运行杀毒软件,检查是否存在病毒感染。
2. 0x00000050这个错误代码通常表示系统内存出现了问题,可能是由于内存损坏或者驱动程序不兼容引起的。
解决方法如下:(1)检查内存条是否安装正确,尝试重新插拔内存条。
(2)运行内存测试工具,检查内存是否损坏。
(3)更新或卸载有问题的驱动程序。
二、DLL错误代码DLL(Dynamic Link Library)错误代码通常是由丢失或损坏的动态链接库文件引起的。
下面是两个常见的DLL错误代码及其解决方法:1. DLL文件丢失错误代码这个错误代码通常会在运行某个程序时提示缺少某个DLL文件。
解决方法如下:(1)尝试重新安装相关程序,以便恢复缺失的DLL文件。
(2)使用系统自带的修复工具(如“系统文件检查工具”)扫描并修复相关系统文件。
2. DLL文件损坏错误代码这个错误代码通常会在运行某个程序时提示某个DLL文件已损坏。
解决方法如下:(1)尝试卸载并重新安装相关程序,确保DLL文件被正确替换。
腾讯TP错误代码
1、SX 提示码提示说明:您的电脑出现1, xxx, 0 (xxx代表任意数字)提示码,存在游戏盗号风险。
处理建议:建议您在安全的系统环境下修改密码并使用手机令牌和二级密码提高帐户安全性,同时使用杀毒软件或者“腾讯游戏木马专杀”工具进行查杀。
2、SX 警告码提示说明:您的电脑出现2, xxx, 0(xxx代表任意数字)提示码,电脑中存在非法模块处理建议:请重启电脑后登陆游戏,同时请不要使用第三方非法软件进行游戏,并建议您使用“腾讯游戏木马专杀”提高帐户安全性。
提示说明:您的电脑出现2, 700, xxx(xxx代表任意数字)提示码,电脑中存在非法模块处理建议:请使用"腾讯游戏木马专杀"清除游戏目录下的非法模块。
提示说明:您的电脑出现2, 520, 10x(x代表任意数字)提示码,Tenslx.dat损坏处理建议:建议您重启游戏或者重新下载游戏客户端来获取正确的Tenslx.dat文件。
提示说明:您的电脑出现2, 800, x (x代表任意数字)提示码,目录下存在异常文件处理建议:建议您下载“腾讯游戏木马专杀”工具修复3、TP 警告码提示说明:您的电脑出现,1080xxxx,x(xxxx代表任意数字)提示码,系统中存在非法模块处理建议:请勿打开多个游戏客户端进行游戏。
提示说明:您的电脑出现3,1530xxxx,x(xxxx代表任意数字)提示码,系统中存在非法模块处理建议:请您退出不必要的程序,降低系统资源占用,同时请勿打开多个游戏客户端进行游戏提示说明:您的电脑出现3,1720xxxx,x(xxxx代表任意数字)提示码,系统中存在非法模块处理建议:1、请您先尝试使用杀毒软件查杀木马,如发现木马请清除,再尝试进入游戏。
2、如未发现木马或无法清除,请重装系统解决。
提示说明:您的电脑出现3,1730xxxx,x (xxxx代表任意数字)提示码,系统中存在非法模块处理建议:请勿打开多个游戏客户端进行游戏。
电脑系统错误码解读与修复方法
电脑系统错误码解读与修复方法作为现代生活中不可或缺的工具,电脑在我们的日常工作和生活中扮演着重要的角色。
然而,使用电脑时可能会遇到各种错误码的问题,给我们的正常使用带来困扰。
本文将为您解读常见的电脑系统错误码,并提供相应的修复方法,帮助您快速解决这些问题。
一、蓝屏错误码蓝屏错误码是电脑系统常见的错误提示之一,表示系统发生了严重错误,无法正常工作。
不同的错误码代表着不同的问题,以下是几个常见的错误码及其对应的解决方法:1. 0x0000000A(IRQ_NOT_LESS_OR_EQUAL):该错误码通常表示硬件驱动冲突或者硬件故障。
解决方法包括更新驱动程序或者更换硬件。
2. 0x0000001E(KMODE_EXCEPTION_NOT_HANDLED):该错误码可能是由于软件或者硬件错误引起的。
解决方法包括更新或者卸载故障程序、检查硬件是否正常工作。
3. 0x0000007B(INACCESSIBLE_BOOT_DEVICE):该错误码表示无法访问启动设备,通常是硬盘故障或者硬盘驱动程序问题所致。
解决方法包括检查硬盘连接是否松动、更换硬盘或者重新安装相应的驱动程序。
二、DLL文件丢失或损坏错误码DLL文件是系统和软件运行所必需的动态链接库文件,当这些文件丢失或者损坏时,系统将无法正常工作。
以下是几个常见的DLL文件错误码及其对应的解决方法:1. 0x8007007E:该错误码表示系统无法找到指定的DLL文件。
解决方法包括重新安装相关软件、将缺失的DLL文件复制到系统目录下、更新系统补丁等。
2. 0x8007045D:该错误码表示在复制文件时发生了错误。
解决方法包括检查磁盘是否正常、更换损坏的硬盘或者使用第三方工具修复硬盘错误。
3. 0x80004005:该错误码通常表示未注册的DLL文件或者DLL文件损坏。
解决方法包括重新注册DLL文件、使用安全软件扫描并修复系统中的病毒、重新安装相应的软件等。
三、网络连接错误码使用电脑上网时,可能会遇到各种网络连接错误码,以下是一些常见的错误码及其对应的解决方法:1. 0x800CCC0E:该错误码表示无法连接到电子邮件服务器。
西门子 SIMATIC 组态硬件和通讯连接, STEP 7 V5.3 版本 手册
更多支持
如果有任何技术问题,请联系西门子代表或代理商。 您可以在下列网页中查找联系人: /automation/partner
培训中心
西门子提供了很多培训教程,帮助您熟悉 SIMATIC S7 自动化系统。请联系当地的 培训中心,或位于德国纽伦堡(D 90327)的培训总部,以获取详细信息。 电话: 网址: +49 (911) 895-3200.
在线帮助中的主题“新增内容?”中极好地概括和介绍了最新的 STEP 7 新内容。
组态硬件和通讯连接,STEP 7 V5.3 版本 A5E00446503-01
iii
前言
STEP 7 文档包
本手册是文档包“STEP 7 基本信息”的一部分。 下表显示了 STEP 7 文档的总览:
文档 STEP 7 基础信息 • • • • • • STEP 7 V5.3,使用入门手册 使用 STEP 7 V5.3 编程 组态硬件和通讯连接,STEP 7 V5.3 版 本 从 S5 到 S7,变频器手册 用于 S7-300/400 的梯形图(LAD)/功能 块图(FBD)/语句表(STL)手册 S7-300/400 的标准功能及系统功能 提供了参考信息,并描述了编程语 6ES7810-4CA07-8BW1 言 LAD、FBD、STL、标准功能以 及系统功能,扩充了 STEP 7 基础 信息的范围。 用途 订货号
亚洲/澳洲(北京) 技术支持和授权
当地时间: 周一至周五, 8:00 - 5:00 PM 电话: 传真: +86 10 64 75 75 75 +86 10 64 74 74 74 格林威治 标准时间: +8:00
电子邮件: adsupport@
电子邮件: simatic.hotline@
DEBUG灯常见的错误代码含义如下
DEBUG灯常见的错误代码含义如下常见的错误代码含义如下:1、“C1”内存读写测试,如果内存没有插上,或者频率太高,会被BIOS认为没有内存条,那么POST就会停留在“C1”处。
2、“0D”表示显卡没有插好或者没有显卡,此时,蜂鸣器也会发出嘟嘟声。
3、“2B”测试磁盘驱动器,软驱或硬盘控制器出现问题,都会显示“2B”。
4、“FF”表示对所有配件的一切检测都通过了。
但如果一开机就显示“FF”,这并不表示系统正常,而是主板的BIOS出现了故障。
导致的原因可能有:CPU没插好,CPU核心电压没调好、CPU频率过高、主板有问题等。
实战DEBUG灯——Award BIOS篇]DEBUG灯的使用也很简单,下面针对几种常见的故障代码和大家讨论一下解决问题的方法。
需说明的是,目前市场上的主板绝大部分使用的是AWARD BIOS或AMI BIOS,由于目前DEBUG 灯实际上是调用了主板BIOS的自检过程,所以主板BIOS程序的不同,DEBUG 灯显示的代码也不同,解决问题的方法也不可一概而论。
因此我们也将分两个部分讨论。
以下的说明中将选择最常见的故障代码及解决方法,至于其他更详细的代码含义,请读者参考DEBUG灯的说明手册。
1. Award BIOS篇错误代码:00(FF)代码含义:主板没有正常自检解决方法:这种故障较麻烦,原因可能是主板或CPU没有正常工作。
一般遇到这种情况,可首先将电脑上除CPU外的所有部件全部取下,并检查主板电压、倍频和外频设置是否正确,然后再对CMOS进行放电处理,再开机检测故障是否排除。
如故障依旧,还可将CPU从主板上的插座上取下,仔细清理插座及其周围的灰尘,然后再将CPU安装好,并加以一定的压力,保证CPU与插座接触紧密,再将散热片安装妥当,然后开机测试。
如果故障依旧,则建议更换CPU测试。
另外,主板BIOS损坏也可造成这种现象,必要时可刷新主板BIOS后再试。
错误代码:01代码含义:处理器测试解决方法:说明CPU本身没有通过测试,这时应检查CPU相关设备。
最新TX驱动过保护代码 DebugPort清零代码
随便调试一个进程,ba w4 nt!_eprocess+0xdc,找出所有修改了这个地址的 API,然后再找读的,读和 写是一个方法. 找到之后我整理 了一下有如下几个 (我看到有人找的 和我找的很多不一样 ,我百思不得其解,这也 是我最后要请教的问题): // 自己跟踪出来的地址(下面用的 0x74 我已经换成了 0x78) 写
步骤应该和以前是一样,但是方法变了.
我做一个 TX 驱动保护恢复工具(由于要时不时的看看 ssdt 和对比反汇编索性做在一起了,后面有 下载地 址),在工具 启动的时候 (打开游 戏之前)做一些 数据初始化 和收集工作 ,并在进 入游戏之后 在点恢复键做真正的恢复工作.
[attach]190083[/attach]
nameptr = (PCHAR) curproc + g_ProcessNameOffset;
strncpy( theName, nameptr, 16 );
theName[15] = '\0'; /**//* NULL at end */
return TRUE;
}
return FALSE;
}
还有一个重要的处理是将被 HOOK 了 OpenProcess 中 call ObOpenObjectByPointer 地址提取出来 重新计算代码数组第二段的 call ObOpenObjectByPointer(因为 e8 是相对地址所以要再计算一 次.第一个 站进入、快速成为做挂达人。
接下来是恢复 DebugPort: 还是老办法将 nt!_eprocess+0xbc 转移到其他地址,我尝试了 0x70,0x74,我发现经常被修改,如 果将 DebugPort 对象地址保存到里面被修改之后再由 nt!PsGetProcessDebugPort 返回出来直接蓝 屏,我用的 0x78 这个地址好象没怎么被修改. 找 DebugPort 相关是函数我是直接 KD 调试虚拟机,然后先设置硬件写断点,然后在虚拟机里面
关闭数据执行保护DEP
关闭数据执行保护DEP
修改boot.ini文件,将NoExecute=OptIn改为Execute;重启。
DEP关闭数据执行保护,特别是64位的处理器,内置有DEP数据保护,运行大多程序都会弹出执行保护,解决这个问题,我们可以可以试试以下方法:
1、在系统属性中修改(这种方法并不是完全关闭数据执行保护)
在“我的电脑”单击右键,选择“属性→高级→(性能)设置→数据执行保护”,选择“为除下列选定程序之外的所有程序和服务启用DEP”,再单击“添加”,定位到某应用程序的安装目录,找到该程序的可执行文件,将其添加进来。
一般地,这个程序就能正常运行了。
重启电脑后设置生效。
2、直接修改Boot.ini文件(这将彻底关闭数据执行保护)
在WinXPSP2系统所在分区根目录下找到Boot.ini文件。
注意看,它多出了一个“NoExecute”参数,而前面在系统属性中对DEP的修改也会反映在这个参数上。
在“数据执行保护”项中只有两个选项,反映在Boot.ini文件中就是“NoExecute”参数的“Optin”和“Opton”两个值。
可是,有些应用程序或驱动程序的兼容性不强,纵使在“数据执行保护”中将其“放行”,它还是不能正常运行,比如:3721的上网助手、ZoneAlarmPro等,这就要靠“NoExecute”参数的其他两个值了。
NoExecute=AlwaysOff相当于关闭EVP和DEP功能,此时,这两项功能将全部丧失。
由这项功能引起的兼容性问题即全部解决,但少了一堵安全保护的墙。
kmodeexceptionnothandled蓝屏解决方法 -回复
kmodeexceptionnothandled蓝屏解决方法-回复什么是KMODE_EXCEPTION_NOT_HANDLED蓝屏错误?KMODE_EXCEPTION_NOT_HANDLED是一种常见的蓝屏错误,也称为0x0000001E错误。
当操作系统发现一个无法处理的内核模式异常时,会导致系统崩溃并显示这个错误。
这个异常通常是由于驱动程序或硬件设备的问题引起的。
针对KMODE_EXCEPTION_NOT_HANDLED蓝屏错误,下面是一些可能的解决方法,希望能帮助您解决这个问题。
1. 检查最近的更改:首先要检查任何最近对系统或硬件的更改。
如果您在发生蓝屏错误之前安装了新软件、驱动程序或硬件设备,请尝试将其卸载或移除。
有时候,新安装的驱动程序或软件可能与现有系统不兼容,引发蓝屏错误。
2. 更新驱动程序:过期或损坏的驱动程序也可能是导致蓝屏错误的原因之一。
您可以通过访问硬件制造商的官方网站,下载和安装最新版本的驱动程序来解决这个问题。
特别是与网络适配器、显卡、声卡和存储设备相关的驱动程序。
3. 运行系统文件检查器:系统文件检查器(SFC)是Windows操作系统的一个内置工具,用于扫描和修复系统文件的损坏。
打开命令提示符窗口,并输入命令“sfc /scannow”然后按回车键运行。
系统文件检查器将自动扫描系统文件,并尝试修复任何错误。
4. 运行磁盘检查:在有损坏或错误的磁盘驱动器上运行磁盘检查可能会修复引起蓝屏错误的问题。
打开命令提示符窗口,并输入命令“chkdsk /f /r”然后按回车键运行。
系统将提示您在下一次启动时运行磁盘检查程序。
重新启动计算机,并让磁盘检查程序扫描和修复磁盘驱动器的错误。
5. 更新操作系统:确保您的操作系统是最新版本。
微软定期发布Windows 更新,这些更新包含了修复已知问题和漏洞的补丁。
打开Windows设置,选择“更新和安全”选项,然后点击“Windows更新”按钮来检查和安装最新的更新。
交换机命令配置手册 北京博维
工业以太网交换机 命令行配置手册
1
目
第1章 1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 第2章 2.1 2.1.1 2.1.2 2.1.3 2.2 2.3 2.3.1 2.3.2 2.3.3 2.4 2.4.1 2.4.2 2.4.3 2.4.4 第3章 3.1 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 第4章 4.1 4.1.1 4.1.2 4.1.3 4.2 4.2.1 4.2.2
系统软件管理...................................................................................................................... 4 配置文件管理...................................................................................................................... 4 典型配置举例...................................................................................................................... 4
virbox protector 脱壳方法 -回复
virbox protector 脱壳方法-回复Virbox Protector是一种常用的软件保护工具,可以保护软件免受逆向工程、调试和脱壳等攻击。
然而,对于一些需要进行逆向分析或软件破解的研究人员来说,学习Virbox Protector的脱壳方法是非常有必要的。
在本文中,我将一步一步地介绍如何脱壳Virbox Protector,并分享一些相关技巧和经验。
首先,为了脱壳Virbox Protector,您需要一些必要的工具。
以下是我推荐的工具清单:1. Immunity Debugger:这是一款功能强大的调试工具,能够帮助您分析和理解程序的执行流程。
2. x64dbg:这是另一款优秀的调试工具,支持64位程序的调试和分析。
3. OllyDbg:尽管它已经停止更新,但OllyDbg仍然是一款非常受欢迎的32位程序调试器。
接下来,让我们开始脱壳Virbox Protector的过程。
请注意,在进行脱壳操作之前,确保您已经取得了合法许可并且仅限于合法用途。
第1步:运行Virbox Protector程序在开始进行脱壳操作之前,您需要准备一个已使用Virbox Protector保护的程序。
请注意,这个程序应该是您自己拥有合法许可的程序,否则可能涉及到非法行为。
运行这个程序并让它在Virbox Protector的保护下执行。
第2步:使用调试器附加到目标程序使用您选择的调试工具,打开Virbox Protector保护的目标程序。
然后,从调试器的菜单中选择“附加到进程”,找到并选择运行中的目标程序。
这将使调试器能够监视和分析程序的执行。
第3步:设置断点在脱壳Virbox Protector的过程中,您需要找到程序的关键点并设置断点,以便在适当的时候检查程序的状态和内存。
一般来说,Virbox Protector会在程序加载完毕后执行一些初始化操作,并最终将解密的程序加载到内存中。
您可以通过寻找Virbox Protector函数的入口点或定位到某个特定的函数,如“Virbox_Init”或“Virbox_Decrypt”来找到这一点。
关闭cpu超线程的方法
关闭CPU超线程的方法取决于您使用的操作系统和CPU型号。
以下是一些常见的方法:
1. 在BIOS中禁用超线程:重启计算机,按下相应的键(通常是Del、F2或F10)进入BIOS设置界面。
在BIOS中找到“超线程”或“超线程技术”,将其禁用或关闭。
保存设置并重新启动计算机。
2. 使用操作系统的电源选项:在Windows操作系统中,可以通过以下步骤关闭超线程:
- 打开“控制面板”并选择“电源选项”。
- 在“计划”选项卡中,选择“更改计划设置”。
- 在“高级电源设置”中,找到“处理器功率管理”。
- 将“最大处理器状态”设置为100%。
- 保存设置并关闭窗口。
3. 使用第三方软件:一些第三方软件可以帮助您关闭超线程。
例如,在Windows操作系统中,可以使用“ThrottleStop”或“Intel XTU”等工具来禁用超线程。
这些软件通常提供了更多高级设置选项,但使用前请确保了解其操作和风险。
请注意,关闭超线程可能会影响计算机的性能和多任务处理能力。
在决定关闭超线程之前,请确保了解其影响并谨慎操作。
过TP保护的基本方案
过TP保护分析过程~【转帖】本文只为研究技术,请所有童鞋切勿使用本文之方法做下那天理难容罪恶不舍之坏事。
既是研究游戏保护,那么总要有一个研究对象。
本文就以TMD_TP这款游戏保护为例进行分析讲解。
请勿对号入座,如有雷同之处。
纯属反汇编引擎之错误,不关我的事!转载请注明出处关键字:DNF 驱动保护鉴于最近很多同学找上门来求解这那问题,反正这东西又不是绝密档案,放在我手里大半个月了,还不如放出来让大家一起进步算了。
另外都是取之看雪还之看雪罢了。
索性我也就公布一个全套的方案。
绝无其他意思,所以还请同道中人嘴下留情。
切勿背地使坏!在正式开篇之前我要感谢看雪ID:十年寒窗在我最困惑的时候,他给予了最大的帮助!另外还有一位和我同岁的神秘人物也给予了不小的帮助,感谢你们。
废话了半天,正式开始吧。
tmd_TP也就是国内比较流行的游戏D_N*F的游戏保护。
它在ring0层一共HOOK了几个地方和一些其他的工作。
来达到保护的目的下面是简报:[url=javascript:]复制代码[/url]1.NtOpenThread //防止调试器在它体内创建线程NtOpenProcess //防止OD等在进程列表看到它KiAttachProcess //防止其他软件附加它NtReadVirtualMemory //防止别人读取它的内存NtWriteVirtualMemory //防止别人在它的内存里面乱写乱画KDCOM.dll:KdReceivePacket //这两个是COM串口的接受和发送数据KDCOM.dll:KdSendPacket //主要用来方式别人双机调试使用了KdDisableDebugger来禁用双机调试代码: [url=javascript:]复制代码[/url]1..text:010025F0 jz short loc_1002622.text:010025F2 call sub_10022A4.text:010025F7 call ds:KdDisableDebugger.text:010025FD push offset byte_10022EC.text:01002602 push esi.text:01002603 push offset byte_10022DC.text:01002608 push edi.text:01002609 push dword_100CF24并对debugport进行了疯狂的清零操作甚至还包括EPROCESS+70\+74\+78等几处位置图片:1.jpg处理的手段通常都是向64端口写入FE导致计算机被重启代码: [url=javascript:]复制代码[/url]1..text:01001665 mov al, 0FEh.text:01001667 out 64h, al ; AT Keyboard controller 8042..text:01001667 ; Resend the last transmission.text:01001669 popa.text:0100166A retn下面简单看下他关键的几个HOOK:KiAttachProcess图片:2.jpg NtReadVirtualMemory图片:3.jpg NtWriteVirtualMemory图片:4.jpg NtOpenThread图片:5.jpg NtOpenProcess图片:6.jpg引用:其中,前3个直接恢复即可。
pch global reset指令
pch global reset指令
pch global reset指令是一种用于重置全球计算机系统的指令。
当全球计算机系统出现严重故障或需要进行全面升级时,pch global reset指令可以被执行,将全球计算机系统恢复到初始状态。
这个指令的执行需要经过严格的验证和授权程序,以确保安全性和可行性。
一旦得到授权,全球各地的计算机系统将陆续执行重置指令,将所有的软件和数据还原到最初的状态。
在执行pch global reset指令之前,各地的计算机系统会提前备份所有重要的数据和文件,以防止丢失和损坏。
执行重置指令后,所有的软件和应用程序将被清除,计算机系统将恢复到出厂设置状态。
这个全球重置过程可能会带来一段时间的不便和中断,但它是为了确保全球计算机系统的稳定和安全。
重置后,各地的计算机系统将重新安装最新的软件和应用程序,以确保系统的正常运行。
pch global reset指令的执行是为了应对全球计算机系统面临的各种挑战和问题。
它可以解决软件漏洞、系统崩溃、网络攻击等各种问题,保障计算机系统的正常运行。
尽管pch global reset指令可能会带来一定的风险和不便,但它是确保全球计算机系统正常运行的必要措施。
在执行重置指令的过程中,各地的计算机专家和技术人员将密切合作,以确保重置过程的顺利进行。
pch global reset指令是一种用于重置全球计算机系统的指令。
它是为了保障计算机系统的稳定和安全而执行的重要措施。
在执行重置指令时,各地的计算机系统将经历一段时间的不便和中断,但这是为了确保全球计算机系统的正常运行。
netbsd关闭端口方法
netbsd关闭端口方法NetBSD是一种开源的类Unix操作系统,它具有高度可移植性和稳定性,被广泛应用于服务器和嵌入式设备。
在网络安全方面,关闭不必要的端口是一项重要的措施,可以有效地减少系统遭受攻击的风险。
本文将介绍如何在NetBSD操作系统中关闭端口。
首先,我们需要了解NetBSD中端口的概念。
端口是计算机与外部世界进行通信的接口,它用于标识不同的网络服务。
常见的端口号范围是0到65535,其中0到1023是被系统保留的端口,用于一些特定的服务,如HTTP(端口号80)、FTP(端口号21)等。
关闭不必要的端口可以减少系统暴露在外部攻击的风险。
在NetBSD中,关闭端口的方法有多种。
下面我们将介绍两种常用的方法。
第一种方法是使用防火墙来关闭端口。
NetBSD内置了一个名为pf的防火墙软件,它可以通过配置文件来控制网络流量。
我们可以通过编辑pf的配置文件来关闭指定的端口。
首先,打开终端并以root用户身份登录系统。
然后,使用文本编辑器(如vi或nano)打开pf的配置文件,该文件位于/etc/pf.conf。
在文件中找到“pass”关键字,该关键字用于允许特定的网络流量通过防火墙。
在“pass”关键字下方添加一行类似于“block in on $ext_if proto tcp from any to any port 80”的规则,其中80是要关闭的端口号。
保存并关闭文件。
接下来,重新加载pf配置文件,以使更改生效。
在终端中运行以下命令:```pfctl -f /etc/pf.conf```现在,端口80将被防火墙屏蔽,不再接受来自外部的连接请求。
第二种方法是使用NetBSD的内置工具来关闭端口。
NetBSD提供了一个名为inetd的守护进程,它负责管理系统上的网络服务。
我们可以通过编辑inetd的配置文件来关闭指定的端口。
同样地,以root用户身份登录系统并打开终端。
使用文本编辑器打开inetd的配置文件,该文件位于/etc/inetd.conf。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最新过TX驱动保护,恢复debugport相关函数我过TX驱动是为了能用windbg调试DNF,我把他分成几个部分来做:1.恢复OpenProcess, OpenThread,ReadVirtualMemory,WriteVirtualMemory2.修改读写DebugPort的相关API3.修复AttachProcess步骤应该和以前是一样,但是方法变了.我做一个TX驱动保护恢复工具(由于要时不时的看看ssdt和对比反汇编索性做在一起了,后面有下载地址),在工具启动的时候(打开游戏之前)做一些数据初始化和收集工作,并在进入游戏之后在点恢复键做真正的恢复工作.[attach]190083[/attach]1. ReadVirtualMemory,WriteVirtualMemory这两个函数现在没有保护,在工具启动的时候复制前16个字节保存:ULONG AddrRead = (ULONG)KeServiceDescriptorTable->pSSDTBase + 0xBA * 4;ULONG AddrWrite = (ULONG)KeServiceDescriptorTable->pSSDTBase + 0x115 * 4;//记录NtReadVirtualMemory/NtWriteVirtualMemory 前16 字节OrgRead[0] = *(PULONG)(*(PULONG)AddrRead);OrgRead[1] = *(PULONG)(*(PULONG)AddrRead + 4);OrgRead[2] = *(PULONG)(*(PULONG)AddrRead + 8);OrgRead[3] = *(PULONG)(*(PULONG)AddrRead + 12);OrgWrite[0] = *(PULONG)(*(PULONG)AddrWrite);OrgWrite[1] = *(PULONG)(*(PULONG)AddrWrite + 4);OrgWrite[2] = *(PULONG)(*(PULONG)AddrWrite + 8);OrgWrite[3] = *(PULONG)(*(PULONG)AddrWrite + 12);恢复OpenProcess(OpenThread是一样的,只是跳转的地址需要重新计算):OpenProcess只修改了一处call ObOpenObjectByPointer, 直接用原始的地址去恢复直接蓝屏,修改call ObOpenObjectByPointer前的push代码跳转到自制代码也是蓝屏,甚至原本想修改e9的跳转地址再跳回来也是蓝屏,后来我把心一横,直接修改了OpenProcess的前两个push指令改成一个一个jmp,跳到我的自制代码,自制代码的结构是前16个字节做好堆栈直接jmp到一个写好的C函数,C函数的作用的是比较是否DNF.exe进程在调用OpenProcess,这里要先说一下在工具初始化的时候我分配了整个OpenProcess两倍加16个字节的代码数组也就是0x285*2+16,初始化的时候我已经复制了一份原始的OpenProcess到数组里面,然后在游戏运行的时候又复制了一份已经被HOOK了的OpenProcess代码在里面,所以C函数的作用是如果是DNF.exe的进程则进第二份被HOOK了的代码,否则进原始的代码:UCHAR MyThreadRoot[ThreadLength*2+16], MyProcessRoot[ProcessLength*2+16];// 游戏加载前,保存一次原始的函数代码BufferCode(MyThreadRoot+16, (ULONG)OldThread, ThreadLength);BufferCode(MyProcessRoot+16, (ULONG)OldProcess, ProcessLength);// 游戏加载后,保存一次被HOOK了的函数代码BufferCode(MyThreadRoot + ThreadLength + 16, (ULONG)OldThread, ThreadLength); BufferCode(MyProcessRoot + ProcessLength + 16, (ULONG)OldProcess, ProcessLength);// 修改OpenProcess前几个字节跳到自己的MyOpenProcessProcessCode[0] = *((BYTE*)OldProcess+0);ProcessCode[1] = *((BYTE*)OldProcess+1);ProcessCode[2] = *((BYTE*)OldProcess+2);ProcessCode[3] = *((BYTE*)OldProcess+3);ProcessCode[4] = *((BYTE*)OldProcess+4);ProcessCode[5] = *((BYTE*)OldProcess+5);addr1 = (ULONG)(UCHAR*)(MyProcessRoot) - (ULONG)OldProcess - 5;*(BYTE*)((ULONG)OldProcess) = 0xe9;*((BYTE*)((ULONG)OldProcess)+1) = *(BYTE*)(&addr1);*((BYTE*)((ULONG)OldProcess)+2) = *((BYTE*)(&addr1)+1);*((BYTE*)((ULONG)OldProcess)+3) = *((BYTE*)(&addr1)+2);*((BYTE*)((ULONG)OldProcess)+4) = *((BYTE*)(&addr1)+3);*((BYTE*)((ULONG)OldProcess)+5) = 0x90;// 下面是上面跳转到的自制代码// 这里相当于前面提到的代码数组的前16个字节,需要再跳到C函数进行上面提到的那个判断然后在选// 择跳到原始代码还是被HOOK了的代码addr1 = (ULONG)IsDNFprocess - (ULONG)MyProcessRoot - 5;*(BYTE*)((ULONG)MyProcessRoot) = 0xe8;*((BYTE*)((ULONG)MyProcessRoot)+1) = *(BYTE*)(&addr1);*((BYTE*)((ULONG)MyProcessRoot)+2) = *((BYTE*)(&addr1)+1);*((BYTE*)((ULONG)MyProcessRoot)+3) = *((BYTE*)(&addr1)+2);*((BYTE*)((ULONG)MyProcessRoot)+4) = *((BYTE*)(&addr1)+3);addr1 = (ULONG)(MyProcessRoot + ProcessLength + 16) - (ULONG)(UCHAR*)(MyProcessRoot + 7) - 6;*((BYTE*)((ULONG)MyProcessRoot)+5) = 0x85;*((BYTE*)((ULONG)MyProcessRoot)+6) = 0xc0;*((BYTE*)((ULONG)MyProcessRoot)+7) = 0x0f;*((BYTE*)((ULONG)MyProcessRoot)+8) = 0x84;*((BYTE*)((ULONG)MyProcessRoot)+9) = *(BYTE*)(&addr1);*((BYTE*)((ULONG)MyProcessRoot)+10) = *((BYTE*)(&addr1)+1);*((BYTE*)((ULONG)MyProcessRoot)+11) = *((BYTE*)(&addr1)+2);*((BYTE*)((ULONG)MyProcessRoot)+12) = *((BYTE*)(&addr1)+3);// 下面是那个判断是否是DNF.exe进程的C函数int IsDNFprocess() {char Name[16];if(GetProcessName(Name)) {if (strcmp(Name,"DNF.exe")) {dprintf("不是指定进程在调用!\n");return 1;}else {dprintf("是指定进程在调用!\n");return 0;}}else {dprintf("未获取到进程名!\n");return 2;}}// 下面是上面IsDNFprocess函数调用到的几个函数ULONG GetProcessNameOffset() {int i=0;PEPROCESS curproc;DWORD procNameOffset;curproc = PsGetCurrentProcess();for(; i< 4096; i++) {if( !strncmp( "System", (PCHAR) curproc + i, strlen("System") )) {procNameOffset = i;return procNameOffset;}}return 0;}BOOL GetProcessName( PCHAR theName ) {PEPROCESS curproc;char *nameptr;ULONG i;KIRQL oldirql;if( g_ProcessNameOffset ) {curproc = PsGetCurrentProcess();nameptr = (PCHAR) curproc + g_ProcessNameOffset;strncpy( theName, nameptr, 16 );theName[15] = '\0'; /**//* NULL at end */return TRUE;}return FALSE;}还有一个重要的处理是将被HOOK了OpenProcess中call ObOpenObjectByPointer地址提取出来重新计算代码数组第二段的call ObOpenObjectByPointer(因为e8是相对地址所以要再计算一次..)接下来是恢复DebugPort:还是老办法将nt!_eprocess+0xbc转移到其他地址,我尝试了0x70,0x74,我发现经常被修改,如果将DebugPort对象地址保存到里面被修改之后再由nt!PsGetProcessDebugPort返回出来直接蓝屏,我用的0x78这个地址好象没怎么被修改.找DebugPort相关是函数我是直接KD调试虚拟机,然后先设置硬件写断点,然后在虚拟机里面随便调试一个进程,ba w4 nt!_eprocess+0xdc,找出所有修改了这个地址的API,然后再找读的,读和写是一个方法.找到之后我整理了一下有如下几个(我看到有人找的和我找的很多不一样,我百思不得其解,这也是我最后要请教的问题):// 自己跟踪出来的地址(下面用的0x74我已经换成了0x78)写1 nt!DbgkpSetProcessDebugObject+0x6a 8063a9308063a98e 8b450c mov eax,dword ptr [ebp+0Ch]8063a991 8b4d14 mov ecx,dword ptr [ebp+14h]8063a994 8987bc000000 mov dword ptr [edi+0BCh],eaxChange: 898774000000 {0x89,0x87,0x74,0x00,0x00,0x00}2 nt!DbgkCopyProcessDebugPort+0xf80639993 8b4508 mov eax,dword ptr [ebp+8]80639996 83a0bc00000000 and dword ptr [eax+0BCh],0读1 nt!DbgkpSetProcessDebugObject+0x5c 8063a9308063a980 c645ff01 mov byte ptr [ebp-1],18063a984 ffd6 call esi8063a986 399fbc000000 cmp dword ptr [edi+0BCh],ebxChange: 399f74000000 {0x39,0x9f,0x74,0x00,0x00,0x00}2 nt!DbgkpMarkProcessPeb+0x48 806398fa80639937 897dfc mov dword ptr [ebp-4],edi8063993a 33c0 xor eax,eax8063993c 39bebc000000 cmp dword ptr [esi+0BCh],ediChange: 39be74000000 {0x39,0xbe,0x74,0x00,0x00,0x00}3 nt!DbgkCreateThread+0x12b 8063b08c8063b1b1 399ebc000000 cmp dword ptr [esi+0BCh],ebxChange: 399e74000000 {0x39,0x9e,0x74,0x00,0x00,0x00}4 nt!DbgkpQueueMessage+0x81: 80639bec80639c64 8b4508 mov eax,dword ptr [ebp+8]80639c67 8b80bc000000 mov eax,dword ptr [eax+0BCh]Change: 8b8074000000 {0x8b,0x80,0x74,0x00,0x00,0x00}5 nt!PsGetProcessDebugPort+0xe 8052874c8052874f 8bec mov ebp,esp80528751 8b4508 mov eax,dword ptr [ebp+8]80528754 8b80bc000000 mov eax,dword ptr [eax+0BCh]Change: 8b8074000000 {0x8b,0x80,0x74,0x00,0x00,0x00}6 nt!DbgkForwardException+0x44 8063aee08063af1e 8b81bc000000 mov eax,dword ptr [ecx+0BCh]Change: 8b8174000000 {0x8b,0x81,0x74,0x00,0x00,0x00}7 nt!PspExitThread+0x28c 805c938a805c9606 7408 je nt!PspExitThread+0x286 (805c9610)805c9608 8b4de0 mov ecx,dword ptr [ebp-20h]805c960b e862a5f5ff call nt!ObfDereferenceObject (80523b72)805c9610 399fbc000000 cmp dword ptr [edi+0BCh],ebxChange: 399f74000000 {0x39,0x9f,0x74,0x00,0x00,0x00}8 nt!DbgkExitThread+0x26 8063b42a8063b441 f6804802000004 test byte ptr [eax+248h],48063b448 7551 jne nt!DbgkExitThread+0x71 (8063b49b)8063b44a 8b89bc000000 mov ecx,dword ptr [ecx+0BCh]Change: 8b8974000000 {0x8b,0x89,0x74,0x00,0x00,0x00}9 nt!KiDispatchException+0x18d 804fd94e804fdacc 64a124010000 mov eax,dword ptr fs:[00000124h]804fdad2 8b4044 mov eax,dword ptr [eax+44h]804fdad5 39b8bc000000 cmp dword ptr [eax+0BCh],ediChange: 39b874000000 {0x39,0xb8,0x74,0x00,0x00,0x00}10 nt!DbgkpCloseObject+0x3e:8063a7bd 8b5d08 mov ebx,dword ptr [ebp+8]8063a7c0 81c3bc000000 add ebx,0BChChange: 81c374000000 {0x81,0xc3,0x74,0x00,0x00,0x00}然后是修改相关API,我没有一个一个找特征码我怕漏了,我直接计算了KernelBase和KernelSize比如0x804d8000, 0x1f000000,我就在这区间里面直接替换。