如何在NP下读写游戏内存及如何进入NP进程
标 题: 【原创】如何在NP下读写游戏内存及如何进入NP进程
作 者: 堕落天才 时 间: 2007-01-04,13:28 链 接: http://bbs.pediy.com/showthread.php?t=37417 ****************************************************** 在上一篇文章《反NP监视原理》中说到要去掉NP的注入是很容易的事,但是去掉npggNT.des并不是说我们想对游戏怎么样都可以了,NP还挂钩了很多内核函数,所以很多关键系 统函数就算我们在用户层能用也对游戏没有什么效果。 WriteProcessMemory这些函数(就算是去掉了NP监视模块npggNT.des),而NP又不可能限制游戏自身使用这些函数,所以只要我们能够进入游戏进程就能够读写游戏的内存。怎么 进入游戏呢?下面介绍两种方法: 1,最简单的办法 ―全局消息钩子(WH_GETMESSAGE) 息回调函数(什么都不用做),读写内存过程,跟主程序通讯过程或操作界面过程,当然在DLL_PROCESS_ATTACH要判断当前的进程是不是游戏的,是的话就做相应的处理;一个安 装全局消息钩子的主程序。大概这样就可以了。使用全局消息钩子的好处是简单易用,但是不足之处是要在游戏完全启动(NP当然也启动啦)后才能进入,如果想在NP启动前做一 些什么事的话是不可能的。 了。 2,更麻烦的办法 ― 远程注入 以我们要在NP启动前完成。这样一来,时机就很重要了。 续)->GameMon.des。关键点就是让GameGuard.des暂停,有什么办法?我想到一个是全局消息钩子(还是少不了它啊)。要实现大概需要做下面的工作:一个全局消息钩子DLL,里面只 要一个消息回调函数(什么都不用做),DLL_PROCESS_ATTACH下进行当前进程判断找GameGuard.des,找到的话就向主程序SendMessage;主程序,负责安装钩子,接收钩子DLL发来的 消息,接收到消息就开始查找游戏进程,向游戏进程注入内存操作DLL,返回给SendMessage让GameGuard.des继续,卸载钩子(免得它继续钩来钩去);内存操作DLL,负责对游戏 内存进行操作。 BOOL IsGameGuard() if(!InjectDll(dwProcessId)){//查找到就开始注入 HANDLE hProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,dwProcessId); if(!WriteProcessMemory(hProcess,(LPVOID)szLibFileRemote,(LPVOID)szDll,cb,NULL)){ PTHREAD_START_ROUTINE pfnThreadRtn=(PTHREAD_START_ROUTINE) HANDLE hThread=CreateRemoteThread(hProcess,NULL,0,pfnThreadRtn, szLibFileRemote,0,NULL); } 三、进入NP进程 >GameMon.des(NP进程),其中GameGuard.des跟GameMon.des进程是游戏Main通过调用函数CreateProcessA来创建的,上面我们说到有办法在NP进程(GameMon.des)启动前将我们的 DLL注入到游戏进程里,因此我们可以在GameMon.des启动前挂钩(HOOK)CreateProcessA,游戏创建NP进程时让NP暂停,但是游戏本来创建NP进程时就是让它先暂停的,这步我们 可以省了。下面是游戏启动NP(版本900)时传递的参数 ApplicationName:C:/惊天动地Cabal Online/GameGuard/GameMon.des /x62/xae/x15/xcd/x4b/xcd/x72/x82/xbd/x75/x0a/x54/xf0/xcc/x01/xad 向NP进程注入DLL,最后让游戏进程继续。这样我们的DLL就进入NP进程了。实现起来大概是这样子 四、注意问题 补丁或HOOK系统函数这些都要在NP启动前完成。当然读写游戏的数据段是没问题的,因为游戏本身也不断进行这样的操作。 |
===========================================================================
建议楼主分析一下np的sys吧
分析完了,几十行关键的C代码就可以写一个NP下读写游戏内存的工具了,纯3环,不用注入和CreateRemoteThread, 直接ZwReadVirtualMemory, ZwWriteVirtualMemory
===========================================================================
从最早的驱动反HOOK..到现在的3分钟检测..
一次比一个变态..一次比一个可怕..
所以做为技术人员..我们深入研究NP的各种技术..同时发现NP的技术大部分依赖驱动..但由于WIN32这个笼子...NP本身开始走向一个衰败和极端...
首先..说一下NP本身的一些技术..和一些漏洞
(目前除了3分钟检测..我几乎都能挂掉 因为3分钟检测属于完全内置与游戏代码中...NP的特征库不全..有时候无法区分版本..所以挂起来很困难)...
NP可以说有众多版本..反外挂的等级也层次不起...
其中最容易也简单的..应该是2001~2003版本(部分2003版本带3分钟检测..例如精灵)
用年号区分...是因为NP本身的技术是没有太大的长进的..只是每年适当的更新
例如..众多版本都使用NP的驱动挂接API函数..这个和当初所谓的检测导入表差距比较大...
我个人也模仿NP的一些假想技术开发过一些反外挂程序..其中对于检测到处表..可以说是非常的占资源..属于不太可能实现的一种手段..因为你要去定位..但是这个对于CPU开销太大
我也在考虑NP是如何检测一个程序是否是非法程序的呢?
做几个试验..启动带NP的游戏..之后启动GM8或WPE..你会发现这些程序自动关闭...
其实要做起来也简单..JMP API函数....当程序要读写内存,注入进程时..这个时候API已经跳到了NP自己的地址空间..之后NP只需要结束目标程序即可..(如果是DLL..就释放该DLL)简单D很~!
那么如何破解呢?我们开发过驱动的应该知道..启动本身需要加载之后才可以起效....之后程序结束..驱动同时卸载...(如果需要可以参考WINIO的驱动加载部分)
这个过程大概需要1秒前后(好机器更快)..但是如果你的外挂是全局HOOK..这个时候比NP要快..已经自动挂接到全部的系统进程当中(前提是再游戏启动NP前启动外挂)...着就是NP最大的局限..也是NP无法攻克的局限..
为了兼容NP只有60%左右的驱动...
其实想挂掉NP.只要挂掉NP加载即可..但是3分钟检测如果是再程序内部被封装..这个时候你即便挂掉NP..3分钟检测依然会启动..游戏本身没什么用..
NP一般是在启动程序时的一个CALL..之后加载NP..只要耐心跟踪..首先确认哪个CALL LAOD NP..跟进入..再确认哪个CALL LOAD NP..依次..直到彻底NOP掉NP为止..
所以要看NP的版本来确定采用什么技术来挂掉NP~!
同时需要你的汇编非常好~!
以上是一些经验和技术理论..
Ring0读写进程+自己手工修改context,完全忽略NP
|
如何在NP下读写游戏内存及如何进入NP进程相关推荐
- 什么是游戏NP?如何在NP下读写游戏内存及如何进入NP进程
什么是NP NP 即 nProtect GameGuard (简称GameGuard或GG,其驱动程序为GameMon.des)是由韩国INCA互联网(INCA Internet)开发的游戏反作弊的 ...
- 如何在xp下利用4G内存
http://www.360doc.com/content/09/0317/20/88264_2838231.shtml
- 在NP下用OD调试游戏的方法
一.NP用户层监视原理 NP启动后通过WriteProcessMemory跟CreateRemoteThread向所有进程注入代码(除了系统进程smss.exe),代码通过np自己的LoadLibra ...
- 在NP下用OD调试游戏的方法(转)
一.NP用户层监视原理 NP启动后通过WriteProcessMemory跟CreateRemoteThread向所有进程注入代码(除了系统进程smss.exe),代码通过np自己的LoadLibra ...
- 只需要一点点C++基础,新手也可以制作单机游戏内存修改器
声明:本文只是为了初学C++的,能够做出一些实用的东西,跳出管理系统的束缚,提升学习的兴趣,在这里选取了单机游戏,请不要尝试在线游戏,违发而已未必可行. 序:首先我们需要一个Qt+VS环境 Qt从ht ...
- 易语言编程-手把手教你解除游戏保护-让CE可搜索读写游戏进程内存数据
1. 游戏进程为什么无法读写内存数据,CE工具为何不能搜索数据? 答案:因为被保护起来了 2. 游戏图标为什么不显示? 答案:因为被保护起来了 3. 如何解除游戏进程保护,从而CE工具 以及 ...
- 如何在linux下检测内存泄漏
1.开发背景 在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名.行号 ...
- 游戏逆向_Android读写游戏内容
一.背景 Android外挂的实现,需要涉及相应游戏内容的读写.读写的游戏内容包括代码和数据 针对不同的读写对象,通用的步骤就是寻找对象地址(位置)→获取相应权限→读写.下面将更详细介绍下相关实现. ...
- linux查询当前目录剩余空间,如何在linux下查看目录的剩余空间大小
df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息,命令格式: df -hl 显示格式为: 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Siz ...
最新文章
- PyTorch LSTM,batch_first=True对初始化h0和c0的影响
- linux命令:case选择结构语句
- 基础算法之快速排序Quick Sort
- 要高薪地进入IT,你得这样做
- [转载] 在Python中使用Matplotlib绘制常见图表
- Leetcode 79.单词搜索
- 广工十四届校赛 count 矩阵快速幂
- android 自定义 build.gradle,Gradle for Android 第二篇( Build.gradle入门 )
- angularjs(显示和隐身) 依赖注入
- Linux学习之路(2-1)文件、目录与磁盘格式
- 【数据库系统概论】数据库系统概述
- MOOC电子科技大学 离散数学 集合论 第一次作业答案
- vue 富文本编辑器上传图片到服务器并显示到富文本中
- pvid与access的关系_关于Trunk、Hybrid、Access、Tag、Untag、Pvid的关系
- [RS] 基础概念区分:DN-辐射率-反射率
- Linux大事TOP 100
- 今日头条:注册头条号3-7天就度过,掌握这四个关键点
- 钉钉的sonar集成通知 dingding-sonar
- 实现用户登录权限验证
- 让父母轻松享受智能生活 天猫精灵新品全测评
热门文章
- 液晶接口系列——MIPI之DSI时钟的计算和常见概念区分
- linux vim界面命令大全,vim命令大全
- Adobe软件大全,你用过几个?
- 【Linux服务器开发系列】详解多线程网络编程丨百分百干货分享丨学到就是赚到
- 字节跳动软件测试岗,前两面过了,第三面HR天坑
- android 背景色闪烁,如何在Android中使布局背景闪烁?
- Frequently Asked Questions About CC
- python ccf 题解历年100分(9年前两题,共45题)
- 中国联通6G白皮书丨附下载
- 虚拟机安装mac无法在更新服务器失败,VMware虚拟机装Mac系统时出现不可恢夏错误怎么办 简单两步解决错误问题...