https://www.zhihu.com/question/32291769

作者:猎狐
链接:https://www.zhihu.com/question/32291769/answer/70929156
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

咳咳,这个我来解释一下,外挂,从本质上讲,共计有三种方式:
分别是模拟挂,内存挂,封包挂.
其中模拟挂是以按键精灵为代表的一类,他本质上不进入游戏内部,只是在外围通过识别游戏图片、文字等方式来模拟点击,所以一般简单的辅助类,用按键的比较多,因为开发方便,小白学学也可以入手,按键挂一般分为前台按键和后台按键,其中前台按键是操作鼠标实现指针移动到指定位置进行点击,所以必须保持游戏窗口一直在前台,而后台按键则不然,采用窗口消息,例如WM_LBUTTONDOWN,向游戏窗口发送点击指令,从而实现窗口内部点击,那么这种模式,即时你窗口最小化也没有关系,更适合做窗口多开情况下的点击,举个例子,在RGP游戏中,你点鼠标砍了怪一下,那么在按键系的处理中,就是通过图形识别出怪的位置,用鼠标左键在怪身上模拟点击,从而使得人物跑到怪身边挥刀一砍。
优点:简单易学,容易上手
缺点:对流程控制、稳定性不好,容易出问题

第二类是内存挂,介于按键和封包之间,通过OllyDebug、CE等诸多调试工具,对游戏的主程序以及载入的DLL进行动态追踪调试,一般称作找基址、找CALL,其实就是找某个数值或者某个功能,例如在RGP游戏中,你点鼠标砍了怪一下,那么如果是内存挂,就首先要找怪物在内存中的数据,例如怪物的编号、怪物的坐标、怪物的血条等等数值,然后通过OD调试出打怪这个功能CALL所在的代码段,当然都是反汇编的ASM代码,找到以后,通过CALL测试工具进行测试,看是否正常,如果对的,那就记录下来,最后整个外挂设计脚本流程调用各个不同的CALL,一般内存挂都会将主文件封装成DLL,然后用一切办法让游戏启动的时候加载起来,这样,内存挂就变成了游戏的一部分,都是内部调用,一般体现形式是游戏一启动以后,会多出一个外挂窗口,可以设置修改各种参数。
优点:响应速度快,稳定性高(控制好内存指针),容易利用游戏漏洞实现BT功能
缺点:学习难度高,需要对内存、堆栈、进程、线程、各种数据结构、C语言、ASM都有一定了解,而且外挂必须跟游戏窗口共存亡,无法单独生存,对多开数量有影响

第三类是封包挂:是比较高端的一种模式,调试方式很多种,可以用封包截取软件(例如WPE)截取封包,或者还用OD,来bp send,拿到封包数据,一般封包数据都是16进行的字节,同样的,拿砍怪来说,游戏再调用了砍怪CALL之后,他最终必须经过send方法,将结果发给服务器,而这个结果才是重中之重,封包就是分析这的,一旦破解了封包的数据结构,可以自己模拟封包以后,那么就OK了,完全不用依赖游戏客户端,自己写程序跟服务器连接发送封包,从登陆到打怪的一系列封包,不仅速度快,而且可以多开N多个窗口,因为不需要游戏渲染,只是纯字节的收发。
优点:速度快,可操作性更强,可以多开到不知道多少开
缺点:不出三天,准被封号

​赞同 55​​19 条评论

​分享

​收藏​感谢收起​

杨宇琛
大二/20岁/守望先锋/重度社交恐惧症/躁郁症
67 人赞同了该回答

在DNF,外挂分为四种
A 内存挂
B 封包挂
C 钩子挂
D CALL挂

为什么DNF这款游戏会有如此多的外挂呢?
DNF是一款网络游戏,但是除了一些数据交互之外(例如进入游戏时,获取下自己身上的装备和数据),在游戏过程中,对于属性这一类,都是在本地进行处理的。
先简要介绍下几种外挂的方式

A内存挂
首先你需要大致的了解内存是个什么东西

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。

内存就是储存你人物属性,装备属性的“容器”。内存挂,也就是修改了这些属性,达到倍功、无敌、秒杀等效果。

B封包挂
目前DNF的封包挂的原理几乎都是因为“特殊地下城”,既大转移后的,“遗忘之森”⋯⋯类似的地下城。在此类地下城中,会获取到BUFF,这种BUFF是可以通过工具来进行截取,从而达到进行其他地下城时,也可以有此类BUFF的效果,或者比这个BUFF多几倍效果的BUFF。

C钩子挂
我对这类稍微了解一些,因为最近正在处理Script.pvf的解包。当然,这种方式在如今,DNF几乎已经没有出现了,具体原因是大转移后,.pvf(下文的pvf都指Sciprt.pvf)的打包方式进行的转变。
----------------------我是正文------------------
DNF的大部分游戏数据文件都在本地,例如地下城(durgon),怪物(monster),装备(equipment)等⋯⋯
那么我们只要将pvf文件解包后,进行修改,就可以达到外挂的效果了。

等有时间了,再回来补更解包的过程
D call挂 (答主默默的补齐一下)
大家应该都知道,程序中有函数,也就是call
比如说 在你攻击的时候 实际上是触发了一个
attack(x,y,伤害,半径,类型)
而外挂作者就是通过逆向找到这个函数,并调用

比如所谓的全屏攻击就是先找到所有怪物的坐标位置,并对怪物的坐标位置进行攻击

​赞同 67​​44 条评论

​分享

​收藏​感谢收起​

Stan
不想养老的码农
1 人赞同了该回答
封包属于外挂的一种
封包挂简单点说就是不依赖原有客户端去发送一段数据包来达到客户端限制了你的目的 比如加速点某个npc 远程点某个不在你地图里的npc之类的 依赖的后端逻辑漏洞 还有就是通过解析服务端的一些数据 来显示一些客户端判断后不显示的一些效果 比如显示敌方位置之类的
 
 

A 内存挂 B 封包挂 C 钩子挂 D CALL挂 外挂的更多相关文章

  1. 常见JS挂马方法及如何防止网站被黑客挂马?

    最近有朋友说自己的网站平时并未作弊,文章也都是原创的,更新很稳定.可不知道为什么网站突然就被各大搜索引擎降权了,一直找不到原因.最后发现是网站被挂马了,导致网站被连累了.在此,借助马海祥博客的平台,给 ...

  2. [置顶] Android4.x对长按电源键(挂断键)和短按电源键(挂断键)的详细处理流程

    1. 简介 Android4.x在Framework的PhoneWindowManager对Power(KeyEvent.KEYCODE_POWER)和Home(KeyEvent.KEYCODE_HO ...

  3. 用C#钩子写一个改键外挂

    我的微信群——软件开发测试工程师交流群,欢迎扫码: 改键是一种习惯,比如在玩儿lol或者dota的时候.理论上玩儿什么游戏都可以改键. 做一个窗体(点击Install——应用改键,点击Uninstal ...

  4. "QQ尾巴病毒"核心技术的实现原理分析

    声明:本文旨在探讨技术,请读者不要使用文章中的方法进行任何破坏. 2003这一年里,QQ尾巴病毒可以算是风光了一阵子.它利用IE的邮件头漏洞在QQ上疯狂传播.中毒者在给别人发信息时,病毒会自动在信息文 ...

  5. Kotlin协程解析系列(上):协程调度与挂起

    vivo 互联网客户端团队- Ruan Wen 本文是Kotlin协程解析系列文章的开篇,主要介绍Kotlin协程的创建.协程调度与协程挂起相关的内容 一.协程引入 Kotlin 中引入 Corout ...

  6. WindowsPhone8.1RT建立空白应用挂起没反应的解决方案

    wp8.1下, 建立空白应用后遇到的问题:想要实现保存.提取数据都无法成功 在退出程序后无法进入到OnNavigatedFrom()中去. 网上说要手动的Invoke OnSuspending事件. ...

  7. BZOJ4247挂饰

    Description     JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上.     JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩 ...

  8. Jquery挂事件与移除事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. BZOJ 4247: 挂饰 题解

    Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直 ...

随机推荐

  1. vuex的简单理解

    初次接触vuex,谈谈我自己的理解.有待后期改进 首先要知道,Vuex 是专门为 Vue.js 设计的状态管理库.我们知道在用vue.js进行前端项目开发时,会出现很多组件相互之间调用属性.状态,小项 ...

  2. spring-cloud学习BUG

    1.com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: c ...

  3. 为什么对华为不拍Arm?

    华为可以靠着现有的 ARMv8 授权坚持很长一段时间,足以等到这波科技禁运结束. 今天,华为在美国遭遇的科技禁运上升到了全球新高度. 据 BBC 报道,由软银全资拥有的英国技术公司 Arm 向员工发出 ...

  4. mongoose 开源http库

    Mongoose是一个用C编写的网络库.它为客户端和服务器模式实现TCP,UDP,HTTP,WebSocket,CoAP,MQTT的事件驱动的非阻塞API. 设计理念: Mongoose有三个基本的数 ...

  5. C#使用反射机制获取类信息

    1.用反射动态创建类实例,并调用其公有成员函数. //新建一个类库项目,增加一个GetSum方法. using System;   namespace ClassLibrary1 {    publi ...

  6. 什么是lease机制?

    分布式系统理论之租约机制学习 一,租约机制介绍 在分布式系统中,往往会有一个中心服务器节点.该节点负责存储.维护系统中的元数据.如果系统中的各种操作都依赖于中心服务器上的元数据,那么中心服务器很容易成 ...

  7. 代码管理工具 Git

    之前一直使用微软的代码管理工具TFS(Team Foundation Server)..NET CORE 2.0的发布后,考虑到.NET CORE项目可以跨平台,准备把项目迁移到.NET CORE 环 ...

  8. python基础练习题6

    01:求1+2!+3!+....+20!的和 s=0 t=1 for n in range(1,21): t*=n s+=t print('1!+2!+3!+.....+20!=%d'%s) 02:利 ...

  9. python之路day14--嵌套函数、匿名函数、高阶函数。函数的递归

      嵌套函数 函数里不仅可以写代码,还可以嵌套函数 name = "小猿圈" def change(): name = "小猿圈,自学编程" def chang ...

  10. Codeforces Round #568 (Div. 2) D. Extra Element

    链接: https://codeforces.com/contest/1185/problem/D 题意: A sequence a1,a2,-,ak is called an arithmetic ...