如何制作一款“完整的游戏工作室内存外挂”?需要哪些技术?

2016-12-14 13002
如果要完成一个“完整的工作室内存外挂”, 需要什么功能, 需要哪些技术。
 
首先:老夫只拿我自己做过的例子来举例, 不代表其他人的做法也是一样
 
第一步: 写一个控制台。 我是用C#来写(MFC太烂了, 又长又臭。), 方便工作室操作, 一般是存放帐号,还有操作一些配置文件(比如说设置低于%? 就吃药, 设置了收货【邮件或者交易】角色名之类等等诸如此类)。 为了防止别人认出来, 就不丢图了。 老夫找一张类似的图片基本就做这个玩意。 大部分都是读取配置文件, 做一些界面交互的功能。 写好List。 和一些界面操作之类的。基本就是dataGridview操作, StreamReader, StreamWriter, 各种拖拉控件。 完事。
 
第二步:然后老夫会用cpp写一个DLL。 用来跟C#的界面交互。 利用内存共享来和游戏的DLL交互信息.基本这个就用到内存共享, CreateFileMapping, MapViewOfFile, OpenProcess, 诸如此类。 然后基本就是各种判断, 比如说掉线呐, 超时呐, 状态呐。 还有对在线帐号做各种判断操作, 比如说刷完 的角色要保存日志, 该删的删, 该留的留。 还要做登录初始化处理之类的。
 
第三步:写注入(基本都有现成的, 为了流程规范! 还是单独列出来好了。 OOP思想已经祸害了老夫了)一般常用的注入很多, 比如说APC注入,输入法注入, DLL劫持。 OEP改入口。 远线程注入。 无模块注入(一般是申请一块内存, 然后把整个DLL复制过去。 修复导入表,重定位后,加载dllmain), 还有驱动级的一大堆就不一一细说了。 注入方法五花八门,不管是哪种方法, 只要有效, 能防止游戏检测到,又可以用。 那就是一个成功的注入。
 
第四步:逆向游戏功能(其实这个才是第二步,注入是第一步)这里也分2种, 一种是先找遍历, 一种是先找发包
 
找游戏的明文发包, 这个可以大概说一下, 因为一般来说, 建立tcp连接, 都是需要connect, 然后send 或者 recv之类的。但是一般来说, 基本都是send都是经过单次或者多次加密后的密文封包, 所以并没有太大意思, 有些甚至是搞了多线程, 一个线程检查一个全局队列之类的然后send, 另一个线程负责push。 比如说基三就是这样干的!当然往上回溯之类的现在已经不怎么好用了。 这里面的篇幅太长太长了, 就不一一细说了, 因为里面还有很多小技巧的东西, 很多关于经验, 感觉之类的事。
 
遍历一般是指, 周围怪物, Npc, 技能, 背包, UI之类的。 从林林种种的数据结构中, 找到自己想要的数据。比如说怪物是用树状结构保存的, 但是每一个CMonster 都是一个超级大的结构。 他里面还包含了很多类,结构, 也可能继承了N个类, 也有N个指针,N个虚函数。很多我们都是不需要的, 所以需要一一细分, 比如说, 只要怪物HP,MP, 角度, 坐标,之类的。 像怪物的形状, 外形, 颜色之类的,我们根本不care!
 
然后就可以和明文发包结合了。举个栗子, 使用技能函数无法就是static UseSkill(dwSkillId, dwTargetId){send(............)}所以你找到你明文发包的CALL。 那么你只需要在CALL头部下一个断点即可。基本内容就是只要SkillId和TargetId,比如说卖, 也一般就只有NpcId, ItemId, Count之类的。 游戏不一样, 可能做法不一样。从这一步, 可以实现相当多的功能, 比如说自身的HP<? 就使用物品。可以实现自动打怪,捡物, 做任务之类的………………这一步其实需要的功能很复杂, 但是技术含量我认为并不高。 时间做久了, 就是写业务逻辑的事。
 
第五步:就应该来到脚本这块了。 如果是用lua写脚本的话。 那基本就是封装几个函数的事。 比如说交任务, 接任务, Move, Npc对话之类的。 反正大部分游戏不都那个尿性嘛?整天跑来跑去, 跟几个Npc对对话, 虐虐小怪, 跟Npc美女谈笑风生。这块就是体力活了。
 
第六步:把控制台, 控制台DLL, 游戏DLL结合起来。 比如说血量控制呐, 超时判断呐, 怪物过滤表之类的要与控制台交互起来。
 
第七步:socket, 要给工作室写收费系统。 这一步工作量也不少。 前面几步是跟游戏斗智斗力, 这一步是跟破解者斗智斗力, 比如说有很多阴险的检测. 什么删系统, 格式化之类的。
 
第八步:基本这一步就可以到封号的步骤了, 以前游戏封号五花八门, 也有很多规则可循的。比如说某个区域就检测加速, 某个时间段就检测一次。 检测到就晾个几天再把你封号。 还有CRC校验代码段, 上传DLL, 按键检测, API检测………………我说几个例子, 某游戏, 就在检测你模拟鼠标, 比如说正常人的鼠标, 是有轨迹的移动过去的。 他就给你检测你的鼠标是否“瞬移”出现在某处, 还有键盘的按下和弹起时间, 太快了要遭殃!(这种都有权值的, 大意就是分数。 超过及格线, 基本就晾个几天就必封了!)比如说还有堆栈回溯, 查看调用CALL是否在本模块中………………据说TX跟暴雪 学了一个新招, 做一个Loader加载器。 然后随机从服务器下载一段shellcode。 然后运行这段代码, 把结果返回给服务器。 本地毫无痕迹! 而且下载回来的代码全部是vm混淆过的。咳咳, 里面还有各种奇招, 就不一一阐述了!
 
回头一想, 也发现漏了很多步骤, 比如说TX的就有TP保护。 盛大网易的有HS和NP保护。 所以还需要驱动层说。 比如说TP是DebugPort清0之类的。 NP老版本可以解密配置文件剥离。 还有重载内核, 用VT, 自己重写异常处理之类的一大堆手段可以过保护。专业玩家网游戏工作室论坛集合所有游戏项目及游戏辅助,游戏加速器,是游戏工作室必上网站。
也有游戏多开没说, 还有隐藏自身这块也没说……发现写了N多了。 就先说到这里了。 有空下次再更新!赞多了再更!
免责声明:部分内容转自其他媒体,转载目的在于为游戏工作室传递更多信息,如因作品内容、版权和其他问题请 联系客服