外挂辅助与安全技术的爱恨情仇

时间:2021-04-30 08:05:33

番外篇--还计算机专业学生清白

“你是学计算机的啊,帮我做个外挂呗”……

“我qq密码忘了帮我找回来 ”,“怎么找?自己申述啊!”,“你不是学计算机的吗,不会盗号吗?”……

“我电脑坏了,帮我修一下”…….

“帮我装个系统呗”……

……

……

    作为一名Coder以上是我的亲身经历,我想99%的同行都会遇上这样的烦恼,还剩下的1%肯定是妹子,不是女汉子的那种……

    虽然本文今天的重点是外挂技术和安全技术的残杀过程,但是作为这种情况的同胞问题不得不提一下。

    首先是qq密码的情况,如果你忘了密码,那么腾讯也是不知道你的密码的(我的设计方案是这样),正常的设计方案是输入的密码经过不可逆的加密存入数据库,验证密码是否正确就是通过将输入的再次加密和数据加密的比较是否一样,所以即使获得了数据库也是拿不到密码,当然可以重新写入,这就是腾讯的密码重置功能。那这里要问了,密码被盗是什么情况?当然是在加密前了啊,也就是,输入还没传入腾讯服务器的时候,主要就是木马和钓鱼,木马可以监事肉机的一切行为密码当然不在话下,而钓鱼,你亲手输入给人家,人家能不知道吗?然后,在我们的圈子里,这种最傻瓜的钓鱼模式往往是收获最大的,真不知道是好奇心害死人的问题,还是真的那么容易上当。所以,如果你密码丢了,只有申诉了,自己打开了什么不该打开的心理清楚......

    至于修电脑,装系统,我只想说绝大多数医生也不会打针,我竟然多次听到有人说,上学学什么计算机专业,毕业连装个系统都不会,甚至有文科教授说出“学计算机就是修电脑的”.....我只想说是不是学药学的医学生毕业不会打针也会被嘲笑?别说各行如隔山,就是同一专业,专注方向不同,会的也不同,比如装系统就是一些工具,这些工具都是点点鼠标而已,并不需要专业知识,所以请不要这样标签化,如果非要标签化,可以标签为一个程序员的形象,因为毕竟干这行的多,至于什么是真正的程序员,以后我可能会写一篇专门的文章。

    最后想说的是,遇到这些问题,请自行百度,因为我们也是百度的啊......

正文

    好的进入今天的主题,虽然上面说的一些问题是人们对于计算机专业学生的误解,但是如何开发外挂辅助,确实需要编程知识,虽然只需要懂一点,比如学几天就没问题。所以,通过本文,基本上会编程的人可以很容易的学会制作一些外挂辅助,不会的人稍微学一下编程就可以了,这也是为什么易语言这种让专业人员无语的中文语言开发平台已经成为外挂的天下的原因。这里要提一下,互联网时代的今天,编程已经成为普通人的一种最基本的技能,比如网站开发,在我们学校随便哪个专业都可以找到做的很不错的学生,将来APP也是,培训一下就可以动手了,这都都算技术要求高的了,外挂这种可以想象编程要求是多么的低。

外挂辅助的基本原理

1.普通单机游戏

    外挂辅助技术主要分为两步,找数据和编码。首先我们知道游戏是在操作系统中是一个进程,他的所有的当前数据都是保存在内存中,并且是根据内存的地址来放的,所以如果我们知道数据的地址不是就可以任意为我们修改了吗?是的,原理就是那么简单,下面我们举一个例子,这是我亲自试验的例子。

试验:修改植物大战僵尸的阳光数为10000

当前阳光数为5

首先我们用CE工具打开这个进程的内存空间,输入值为5的所有内存地址。

这样赛选出几十个,然后我们使用阳光,减少,从之前找到的地址中继续赛选,最终可以锁定这个地址。

这时候我们将锁定的地址的值进行修改成10000,我们可以观察到,阳光数变成10000了。

 外挂辅助与安全技术的爱恨情仇

(还剩9900个阳光的截图

    接下来的工作就是几记下这个地址,编程,编个小程序去给这个地址写值。

这里还有问题就是,我们找到的这个地址实际上是动态地址,也是我们辛苦找到的地址可能只能使用一次,编的程序也可能只能用一次。这当然不是我们想要的,所以这时候我们需要用到基地址。

    学过汇编的人,一看就懂,不需要我多说。我们的进程每次被创建的时候,是随机的分配一块内存给它的,所以我们的地址是动态的,每次都会变,但是呢,在创建进城的时候会给每一个进程一个基地址,其他的地址都是相对于这个进城进行多级偏移。就好像,一个队伍每次站的地面位置是不同的,但是顺序是不同的,我们可以知道第一个人站的位置,就可以知道所有人当前的位置了,而这个人的位置就叫作基地址。

    所以,我们这个寻找地址的时候主要是找基地址和偏移,这个方法和上面相同,只不过需要根据找到的动态地址反编译往上追根就可以找到了。

找到基地址,就找到了偏移。偏移通常是多级的,比如人物的血量是:基地址+人物偏移+血偏移,其他的数据也是一样,这样的规律就给了我们遍历的方便,比如我们知道:基地址+人物偏移+???就是人物的属性,这样遍历就可以遍历出所有的人物属性了。其他数据也是这样找。

2.网络游戏

    对于收集数据,修改数据,我们上面做的工作当然是够了,但是对与网络游戏,但是就没什么用了,因为我们的数据是存在服务器的,修改本地的数据并没有什么用。所以网络游戏的外挂,通常是智能辅助,也就是从控制数据转变为控制动作,比如智能打怪,喝血药和蓝药。做一个动作作于一个参数来说就是调用一个函数,或者书模块,由于我们反编译的是汇编语言,而在汇编中调用子模块就call一个入口地址,所以我们称这个过程叫作寻call,我们只要知道某个动作的入口地址,直接call它就可以了。当然本质上还是在找数据,我们用一款经典的反编译点点调试工具OD。我们每做一个动作完了,游戏客户端都会向服务器最终发送一个数据包,我们把这个叫做封包,操作为bp send。所以如果我们想找一个动作的地址,只需要设置bp send断点,做一个动作,然后调试,网上翻几层,就可以很容易的找到了。

   3.产业链

    经过找数据,寻call,我们收集游戏的基本数据,接下来的工作就是根据需求进行编码了。我们知道,一个东西成为商业,就是一个产业链形成的过程,在外挂辅助的发展中,找数据和编程逐渐分为两个分成产业。找数据是一个逆向工程,需要对计算机原理,数据结构和算法有着深层次的理解,特别是游戏上采用一些伪装地址手段,如vr等之后,对找数据人员要求越来越高,而编程最主要的是需求变化快,工作量大,所以找数据的人就逐渐专心找数据了,不去管编程了,而编程的人很多也找不全数据,所以产业已经分层了。所以,现在很多所谓写外挂的人,实际上他们都是买了一套数据,在那编程的而已,这也导致入门门槛反而降低了,产业链越来越扩大,中学生,甚至小学生都不少。

安全技术

    应用层的大战

    所谓万物平衡,天地分阴阳,外挂的肆虐,搞死了一个又一个游戏,安全问题已经成为游戏运行最大的问题,游戏运营生不得不和外挂经行斗争。游戏厂商通过特征码匹配,检测外挂,当然这也只能只外挂生命周期缩短,后来又采用数据校验的手段大肆封号,这个手段至今还是游戏保护的重要手段,一度成为外挂与安全技术的拉锯战。

当然这些都只是应用层的大战,如今随着游戏公司的protect驱动保护程序,进入了驱动层大战。

驱动层战争

    我们现在玩游戏都会启动游戏的protect程序,比如腾讯的tp(TenProtect),剑灵美服的NP(为了测试玩了下美服剑灵,然而这样的游戏,老人家真的玩不了了,还英文......),比如...(N年不玩游戏游戏记不得了)。这些都是对驱动层进行保护的策略。

驱动层原理
     这个要从windows核心编程说起,我们知道windows是封闭的系统,我们并不能知道他的核心代码,但是呢,它提供了很多API给开发者可以调用,只不过不能修改,限制性太大,还好有Hook技术,hook就是钩子,微软让用户使用hook去钩API,而不是直接调用,这时候在hook的时候就可以实现修改API地址,调用自己的功能。

    而我们在调试,读写内存的时候都需要读写很多核心API,而TP这样的保护程序就是一个驱动,他们修改了hook,让我们没有办法去调试找数据,更没办法读写内存了,深入到这样的程度,显然安全技术看起来已经极大的提升了。

    然后这样真的就安全了吗?当然不是,windows毕竟不是游戏公司开的,他们也只是依循规则在玩游戏,大家都在一个高度,怎么可能你就赢了。游戏公司这样做的本质的目的,当然自己也清楚,并不是就安全了,而是提高了,开发们辅助外挂的门槛,对于深度懂得windows核心编程的人来说,这些真的只是你抓我藏的躲猫猫游戏而已,他们只需要恢复一些hook,跳过一些检测,基本上就ok了,游戏又回到了原来的那一层,所以我说,数据验证式封号,至今还在玩啊。

外挂辅助产业结构的变化

    安全技术的发展,并没有对外挂辅助技术毁灭性的打击,但是促使这个产业结构产生了很大的变化,从数据分析的分离,到驱动破解的产生,产业结构已经形成了精英模式,多层模式。过保护,找数据,编程,已经成为现代辅助外挂产业的新结构,或许还需要加个经营销售员。

 

效益和法律的思考

    为什么辅助的开发,怎么都杀不尽呢?当然是回报是巨大的,特别是现在分层产业链,一个搞破解驱动的,半年就可以搞100万以上的黑色收入,因为他们是产业的支柱,就是最底层的编码的,一年10-20是普通的了。因为从刚开始,传奇的时候,辅助外挂就成为了游戏公司的吸血鬼,我们知道一个游戏的经营的代价是巨大,但是,也因为这样,谁都可以满满的吸一口鲜血,从道德上讲这是破坏,剽窃行为,只不过他们付出的是触犯法律的代价。在法律上主要是以破坏计算机系统罪和非法经营罪处罚,最多两年吧,但是必须要游戏公司提出申诉才会立案调查,所以常年混的人都会把握一个度,而游戏公司也是睁一只眼闭一只眼,当然,也有无数的大牛走入*。

                        总结一下
      这个东西总的来说就3步:过保护,找数据,编程
其中编成是最简单,最累的,最不讨好的,因为需求随时再变~~
找数据需要一定的逆向思维,这个可以训练出来,甚至做出自己的独特工具,基本上,有了一套工具,绝大多数数据一个按钮的事,难找的需要慢慢分而我真正想说的是,过保护,这个事驱动的大战。现在的游戏从行为上已经难以阻止大量挂的产生,这时候,游戏公司采取了驱动保护,将一些重要的api禁止调用,换hook,这时候反编译手段,和读写内存就难了~~当然,windows不是游戏公司开的,他这样做并不是要安全,而是提高了制作外挂的门槛,想要过保护必须精通windows的核心编成,恢复hook或者其他手段。最后r0层驱动的大战才是真正的赢家,精通核心编程后这些东西,已经没有什么秘密,小看那些所谓几天学会辅助的人在和游戏公司玩躲猫猫,这样玩真心累,即使赚钱也是辛苦钱啊以上三个方向并不想关,真正做辅助应该是分开的,编成和逆向没有关系,过保护更是,应该很少有人一起做的。

最终要的是我希望这东西自己玩玩还可以,千万别触犯法律,就是自己玩也是要注意的,你做的东西,传出去了,造成破坏,也是要担责任的。在国内,只要你还用手机,qq,微信,银行卡.....就逃不出法律的眼睛。

我的智能安全观

    人工智能的发展给安全行业也带来了思考,在安全领域也有着极大的潜力。AlphGo这样的智能和传统的智能有着极大的区别那就是,原本的非学习智能,只是让计算机从已知的存储的解空间取值,并不是真正的智能,而基于深度学习的智能,是临时的判断,根据形势智能计算走向。而我们现在的安全略的,就像第一种那样,将已知的坏坏如病毒,外挂,存入数据,然后看起来好像是什么所谓的智能管家,实际上只是个搜索器而已,所以为被封的外挂,病毒站在它面前他还把他们当还朋友,你还觉得这样安全吗?0日漏洞其实就是提出需求智能,解决,就是今天的漏洞必须等到明天,并不能当天解决。

所以我觉得要想实现真正的智能安全,机器学习,带来了希望,实现真正的智能判断,  不同通过系统的安全特征学习,及时发现0日漏洞。

我的智能外挂观

既然安全可以智能,外挂也可以啊.....,对了我怎么能为外挂的发展舔砖添瓦呢,罪过,罪过.......

 

 

 

 

    魏思政
    宿舍楼
    2016.3.22