笔者的外挂研究的心路历程,给想要研究外挂技术的菜鸡的忠告,我将自己研究外挂技术之路上遇到的一些问题多外挂技术的的看法总结了起来,写本文章没有别的意思,只是想给像我一样的自学者一点点指导和建议,分享本人的自学经历,也能让你少走一些弯路,我是过来人比你们更了解你们需要什么知识。
为什么要去研究外挂技术 ?
笔者家里是做生意的本身就需要电脑来记账,所以在很小的时候就接触了计算机,记得当时的计算机是黑白的大头显示器,系统则是 windows 98 所以我要比同龄人更早接触过,那时的我就会为了一些小问题而虚心向懂的人请教了。
初中时就迷恋上了游戏,并且还是一个*的游戏玩家,但玩游游总是被别人虐的体无完肤,玩不过别人心里很不是滋味,那时的我,心里暗自在想既然游戏是做出来的,那么能否改变游戏的运行轨迹,这种想法在我心里留下了肯定的声音,从那时开始邪恶的种子就在心里生根发芽了。
番外笑料:在玩某线游戏时,我听到的最多的一句话就是,对面的那个笑脸是G,对面赶紧踢T了他,这游戏没法玩了,大家都退房吧,末了,既然发现了我是G,那我就不装了,狙击枪打幽灵枪枪爆头,全屏飞刀打生化,僵尸被全部斩首,竞技场别人用枪我用飞刀,刀战无限火箭筒炸开花,大金星跪地求饶,同学赐名,野战屠夫,现在想想依旧搞笑,长大了,总归要放下了!
为了实现逆天的操作,于是就开始了我的外挂研究之路,先从编程开始研究,第一门接触的编程语言是易语言,易语言很好入门全中文编程,对于我这个初中学渣还是很友好的,当时大家整天都在忙着中考,我整天在忙着研究易语言。
当然有利也有弊,那时的我专注于研究编程,从而导致本来成绩一般的我更是雪上加霜,初中考试我落榜了,当时的我已经被学校,父母宣判了死刑,临走时父亲的心情非常的低落,彻底放弃了,认为我将来就是去工地板砖的料了,因为我当时还小干不了体力活,所以就给我找到了一所比较好的技校(3+2)准备让我长大后去工地,来到技校的第一天,学生们都很热情,都给我让烟让酒,还要给我拜把子成为兄弟,虽然很热情但不太适合我的性格,我委婉的拒绝了。
在学校也不上课,整天就是宿舍里打打杀杀,宿舍晚上也睡不着觉,吃喝嫖赌样样精通,对于一个老实学生真的会把人逼疯掉,我也疯过一两次,但那又有什么用呢,到头来还是要面对现实,就是在那样的环境下,我还是会咬着牙坚持为了自己的梦想实现外挂而奋斗,没有老师,没有良好的环境,只能咬着牙瞎学下去,我相信,只有在最恶劣的环境下,才能磨练人最坚韧的意志。
在学校里会存在一个很有趣的现象,当你拿着课本去学习时,别人对你的评价可能更多的是傻逼,因为你和别人不一样你就是异类,就可能会被排斥,刚去学校时,记得有人对我说过一句话,你既然来这里了就证明不是好学生,既然不是好学生就不要装作是好学生的样子,直到现在仍然记忆犹新。
回想起以往的经历:我很感谢我的母校,虽然他并没有教会我任何知识,但他让我学会了如何坚持,如何在没有人帮助的情况下快速掌握一门技术,如何面对复杂的环境时还能够随机应变的能力,这些都是我学到的宝贵财富,现在看来我的自学能力与不屈的意志,足以让我在二进制逆向,安全领域走的更深更远,也因我的努力,我没有选择跟我亲戚去工地打工。
就像刘媛媛所说:命运给你一个比别人低的起点,是想告诉你,让你用你的一生去奋斗出一个绝地反击的故事,这个故事关于独立、关于梦想、关于勇气、关于坚忍、它不是一个水到渠成的童话故事、这个故事是有志者事竟成、破釜沉舟、这个故事是苦心人天不负、卧薪尝胆三千越甲可吞吴!
只会易语言肯定是不够的,为了能做出外挂来,我又开始自学C语言,啃汇编,啃底层,啃驱动保护,肯电路设计,由于都是自学加之没有任何人给与指导,都是摸着石头过河,所以学习进度很慢。有时候会遇到一些自己怎么都想不明白的事情,我都会尝试用自己已有的知识去解释,尝试解释某些不懂得问题,现在来看,虽然有时候答案是完全错误和可笑的,但是思考的过程确是一种宝贵的财富。
从下定决心研究开始,算下来断断续续啃了10年,中间经历了各种挫折,但都会自己摸索着找方向,每一次遇到困难,都会想尽办法解决掉,困难让我越挫越勇,只要想到外挂心中的欲望就会再次被点燃。
功夫不负有心人,经过了十年的摸爬滚打,最后终于把游戏的驱动保护绕过了,外挂也做出来了,也玩嗨了也长大了,慢慢发现游戏变得没意思了,开挂玩游戏时,有时会感觉无辜的玩家很可怜,自己却像个屠夫,杀戮的快感却让人丧失了怜悯之心,根本停不下来,看着对手一个个倒下,心里很可怜他们,但又不想停下,得趁没被和谐前抓紧杀,多杀一个就是赚了,现在想想这种矛盾的心理真的是屠夫。
能否给逆向初学者一个合理的方向?
下面的这些书籍,是我在多年的摸爬滚打中总结出来的大纲,其他的瞎学的不太重要的就不发了,请一定按顺序学,不要像以前的我一样瞎学,不然学着学着就要吃回头草,我已经吃够了,学完后你会对二进制安全有一定的认识,但你要明白,二进制安全就业面窄,很有可能你的付出会石沉大海不会有任何回报,你是以兴趣为导向不是就业,明白?
阶段一:基础知识学习篇 推荐1年
《易语言入门教程》 --> 外挂开发神器,基本上%70的外挂都是他开发的,学习易语言可以让你对开发产生兴趣,从而让你更喜欢做开发,这是非常好的开始。
《C语言程序设计 - 谭浩强》 --> 基础知识,这两部分内容中涉及到的基础语法,一定要认真掌握,后期可能会学习反汇编内容,不然会迷茫,导致厌学心理。
《C++语言程序设计 -- 谭浩强》 --> 基础知识,这两部分内容中涉及到的基础语法,一定要认真掌握,后期可能会学习反汇编内容,不然会迷茫,导致厌学心理。
《妙趣横生的算法 C语言实现》 --> 这部分内容可以说是最搞脑子的了,我也并没有完全消化,只是一些基础的知识需要细看,搞明白其中的原理就好,不必要全部都自己盲打写出来,因为你毕竟不是资深开发人员,做一个笔记,用到的时候可以查,课本是用来查的不是背的。
《C和指针》,《C专家编程》 --> 这部分内容你可以选学,其主要是C语言的一个提高,里面的案例中多数都是用指针实现的,例如字符串移动,统计,等,对指针的分析非常到位,当然不学对后面入门来说也不会有太大的问题。
阶段二:汇编语言学习篇 推荐1年
《汇编语言 -- 王爽》 --> 从16位汇编开始学习,掌握基本的汇编基础,为32位汇编打好基础,这部分内容需要认真看,以前我也有疑问现在都32位了为啥要学16位,学习它能让你更好的理解32位,32位只会比16位简单。
《微机原理与接口技术 -- 冯博琴》 --> 研究计算机底层硬件知识,理解微型计算机电路设计原理,这部分内容主要偏向于硬件知识,主要涉及到CPU寻址,主板,总线传递,磁盘寻道原理性的知识点,后期对反汇编意义不太大,但是可以让你理解计算机硬件体系结构,打好硬件基础,推荐学习,也不必吃透,看一遍理解理解就好。
《Intel汇编语言程序设计 -- 第五版》 --> 向纯32位汇编语言迈进,熟悉Intel对32位汇编的定义规范,这本书是32位汇编的*书籍,一定要认真学习,推荐只学到第12章,12章以后的属于16位汇编意义不大,我是直接跳过了,你们随意。
《琢石成器—Win32汇编语言程序设计》 --> 研究 windows 32 位环境下的汇编语言程序设计,与上一本书不同,该系列汇编内容更像是Win32编程的汇编版,学习这个也就是理解一下各种API函数的参数传递等,真要是学汇编这个书学不到多少内容,其大量的代码都是通过决策指令来实现的,推荐结合OD学习。
阶段三:Windows核心编程 推荐4-5个月
《Windows PE权威指南》 --> 理解windows 可执行文件格式PE与内存装载等技术,学习PE文件格式的构建,每个格式的含义,对于加壳脱壳,木马病毒分析,都是至关重要的知识点。
《WINDOWS 核心编程 -- 第五版》 --> 熟悉 Windows 环境下的常用 API 函数,要知道重要函数作用,这本书与Win32琢石成器差不多,都是介绍API函数的使用,其中本书的图形化部分稍微看看就行。
《C++反汇编与逆向分析技术揭秘》 --> 理解 C/C++ 反汇编代码的差异,与编译器编译特性,这本书也需要认真的对待,都是逆向的重中之重,多看2遍,多动手多实验。
《C++黑客编程揭秘与防范》 --> 研究并理解各种 Hook 挂钩,注入技术,网络扫描器,等黑客技术,通过C/C++编程实现的一些技术。
阶段四:调试器使用篇 推荐1年
《加密与解密(第3版)》 --> 加深前面知识的理解,同时可以更好的系统复习二进制方面的知识点,其中的加密算法篇可以直接跳过,外挂技术不太需要这方面的知识。
《IDA Pro代码破解揭秘》 --> IDC脚本编程讲解的较详细,权威指南中并没有非常详细的讲解IDC脚本的编写技巧,此书主要用于补充IDA Pro权威指南脚本编程的不足,其他章节可以不看,冲突。
《IDA Pro 权威指南》 --> 学会使用IDA 业界*反汇编工具,分析反汇编代码,这个主要掌握基本命令,与基础知识,重要的东西还是分析反汇编代码。
阶段五:过驱动保护篇 推荐3个月
《Windows驱动开发技术详解》 --> 推荐配合寒江独钓一起看,这两本书相似点很多,但各有优势。
《寒江独钓 Windows内核安全编程》 --> 研究C语言驱动编程,后期编写绕过游戏驱动保护工具。驱动编程主要学习,驱动内存读写,驱动注入,其他的知识你们随意。
如上这些书籍全部学完也无法保证你能够过掉某游戏的保护,回想我过掉某游戏保护时,那也是三四年前的事情了,现在我早已不在研究了,我只是给大家一个学习逆向的大体思路,只能作为参考,保护技术这几年也不是在吃闲饭的。
长大了,我该何去何从 ?人生的方向在哪里 ?
长大后,知道自己该干什么了,要找工作,要挣钱生存,回首以前的经历,学到的技术都是底层技术,也都是一些邪门歪道,加之Windows逆向行业本身就是冷门不好就业,于是乎我选择去北京兄弟连,培训学习了Linux运维技术,之所以选择运维是因为该岗位不需要写代码,并考了一些Linux网络等相关的认证,准备好好找工作干活挣钱去了。
总体来说:外挂技术付出的努力与回报并不成正比,逆向这条路只会越走越窄,而逆向水平的高低则要看你的C语言编程功底以及对系统底层的理解到底有多深了,有时不如去学习JAVA开发(外包),毕竟这方面就业还是很不错的(需求量大),而外挂技术玩好了是生涯,玩不好有人给你送饭送水,还要带上漂亮的手镯,那里倒是各个都是人才,说话又好听,但是可能会把牢底坐穿!
关于网友们的问题的,解答记录
- 有些人私信我,说无法深入研究游戏逆向技术,这里我想发表一下自己对游戏逆向的看法
想要深入分析游戏到底是如何实现的,具体到对每一句反汇编代码的完整还原,是不现实也是不可能实现的,面对几十G的游戏来说,这一项任务显得非常的艰巨,即使在逆向专家的眼中,逆向分析出游戏的大部分细节也是一个很大的挑战。
- 其实有些人在逆向时没有思路,这太正常了,因为你可能都不明白游戏到底是如何实现的这个功能。
逆向分析的功底 ,是开发决定的!如果你是一位优秀的大型游戏开发人员,并且深入理解了逆向技术,那么我想很多问题都是水到渠成的,当你去逆向其他游戏的时候,甚至说你都不需要逆向,因为你心里早就已经浮现出了该功能是如何实现的各种细节,对于他们来说逆向只是时间问题,开发水平真的决定了逆向能走多远,虽然他们之间看似没有太大的关联。
- 关于游戏中驱动保护的绕过问题?
每一款游戏所使用的保护方式都不相同,每一款大型游戏的背后都是一个非常强大的安全团队在把控,我们很难以个人的力量与整个安全团队相对抗,纵使你可以暂时过掉游戏保护,但那也仅仅只是一时,毕竟能研究得起驱动保护的都不是一般的公司,同时随着当今法律的逐步完善健全,如果你出格很可能招来官司面临牢狱之灾,那些所谓培训外挂技术的人,本质上也算是帮凶了,所以这个问题我想我不需要在回答了!
- 最后的总结与建议
以前研究外挂时不存在像今天这样的源码满天飞,那时都是保守派,从而让外挂的门槛变得很高,现在不同了源码满天飞,各种外挂制作教程层出不穷,外挂作者相继退网,其本质上都是在与安全厂商对抗的过程中感到力不从心,从而做起了单机游戏教程,忽悠,鼓动有兴趣的人入伙,白嫖你的钱,其实你购买了他的教程,学下来也无法做出网游的外挂,因为你的逆向功底根本达不到,也过不掉厂商的驱动保护,也没任何的意义,你所花费的时间如果用在开发上,一定会有很大的价值,用在外挂上,蹲*才是你最终的归宿,也是你人生中逆向的巅峰状态,寒窗苦学十几年,一蹲回到*,到头来只能是两眼泪汪汪!