游戏外挂,就说说端游吧,手游和页游就不说了。
外挂大致分为内挂、脱机和模拟按键几种。
内挂是分析游戏的CALL,通过远程注入DLL一类的方式去调用游戏的CALL,通过调用游戏本身的功能来完成自动化的功能,比如完成自动打怪、升级的动作。由于需要调用游戏的CALL,因此这种需要开游戏才能挂机。
脱机主要就是协议分析,通过收发包来完成游戏的各种动作。由于是发包,因此不需要开游戏也可以挂机。
模拟按键大体就是通过图片对比然后模拟鼠标按键来完成的,这样不但需要开游戏,而且模拟鼠标点击的话,游戏的窗口也需要在前台显示,且只能操作一个游戏。
常规情况下就是这样了,当然了外挂和反外挂是互相博弈的。外挂脱离不了逆向分析技术,主要是分析数据包和动态调试等。随之而来的就是反逆向分析。比如通过加密、加壳、虚拟机保护、甚至是内核驱动来达到保护游戏不被调试和逆向分析。
常规的外挂也就是这样,如果在分析游戏时能发现游戏的漏洞,那么可能就能完成一些游戏本身不具备的功能了,比如找到一个刷金的漏洞,就可以通过漏洞来刷金,而不用限制在游戏的金融系统中。
这里面涉及到的知识也是比较多的。比如 ASM、C、操作系统、内核驱动、加密解密、脱壳……之类的。
再说说一般程序员的工作。
一般程序员偶不知道你是指哪种程序员算一般。但是现在业务开发从简单的 CURD,到各种中间件的应用,再到要求系统高并发、高可用、高性能、高安全来说,能整体的设计和实现也不是很容易的。程序员做到架构师,从整体上设计系统的架构,需要很多的经验,和很广泛的知识面。而且进行系统优化也需要掌握很多底层的知识。现在做开发,就那 Java 来说,什么多线程、JVM、MQ、NoSQL……很卷,学好每项也不容易。
所以哪个厉害呢,就具体的两个人比起来可能还好比,一个能写牛逼的外挂,一个只能实现简单的业务,那一下就区分了。如果两个都是两个都很强,或者两个都很弱,那还比个啥呢?
比如一个人做社交软件很牛,一个做电商很牛,你说他俩谁牛呢?不好比,各有优点。那么就比钱吧。两个这样的程序员在一起比技术,你不如让他们比钱。这样可能更好量化?