伤仲永?一个高中生的自学编程经历。看完能少走很多弯路
我有很大的研究技术的热情,今年18。从初中开始,就已经种下了自由控制电脑这种欲望的种子。到了高一,我第一次从信息技术课本上看到编程二字,并且书上带走一个vb写的画二次函数图像的小例子,但是家里没有电脑,我也没大重视。从高一暑假开始,我拥有了一台电脑。我想学习编程,但是电脑没联网,于是我经常从别人家里下载资料软件,回家研究。
每次都下载一堆的东西,包括网上的教程,别人的经验,大学的课件,还有pdf格式的电子书等等。那时在网上搜编程资料,最多的就是vc vb,看到人家都说vb最简单,所以就选了vb,自己在家研究了一个月,由于没有接触过编程,一些高级术语都不懂,所以研究过程坎坎坷坷,最终还只是会一些最基本的语句,用一些基本的控件。
最令我骄傲也最令我感到可耻的是我用vb模仿推箱子这个小游戏:在窗体上拖上三个图片框,一个作为目的地,一个作为游动的箱子,一个作为被推的箱子。仅用if else 和赋值语句就基本完成了对推箱子这个游戏的模拟(让我感到可耻的是当时脑子里函数的概念,写了大量重复的代码,关键是也不会用vb写一个函数,学的很垃圾)。
我用vb始终不会调用api,虽然有一些网上的源代码可以参考,但是都看不懂,对于我来说,不懂就意味着什么也不会,什么也做不出来。离高二开学还有十几天的时候,我下载了谭浩强的c语言教程在家研究。
后来发现,用c语言虽然做不出vb那样的窗口 控件(因为一开始都是用控制台的界面学习),但是我感觉很简洁,头脑里能搞清程序的来龙去脉,不像vb那种面向对象的语言,一个方法就搞定一切,自己都不知道为什么这样。我对c语言一见钟情,用了3天时间把谭浩强300多页的ppt看完了(我是跳跃式学习的,大部分感觉都很好理解,少部分也没大弄懂),随后就是多看些例子代码,以及写一些简单的小程序。
高二上学期我利用课余时间看完了吴文虎的《程序设计基础》,这使我在算法和数据结构上有了些提高(从那以后,我才真算是迈进了编程的大门,知道了学习编程语言最基本的是了解它的变量定义方式,各种流程控制语句,自定义函数,程序入口点,赋值语句基本都一样,还有基本的输入输出函数、库函数等等)。
高二上学期我还先后读过《计算机组成原理》(大部分没看懂)《操作系统》(大部分都看懂了) 以及Charles petzold的《Windows程序设计》(初步踏入Windows应用程序编程的大门),高二寒假期间我用vc采用sdk(也只会sdk编程)编程方式写过一个聊天程序,界面结构很简单,一个窗口,两个编辑框,加上一个发送按钮。寒假快要结束的时候,我又接触了汇编语言。
高二下学期开学前一天晚上,偶尔翻开了王爽老师的汇编语言教程(为什么是偶尔呢?我平时都下载很多资料,这一份看不下去了,再去看另一份,就这样在各种资料的跳跃互补之间,我构建起了自己的知识网络),本来没想学习汇编的,不过看了一部分都看懂了,于是就对它产生了兴趣,并且在淘宝上买了一本王爽的《汇编语言》,到学校去研究(当时心里还不断想着,要是我再学会了汇编语言,那我离高手就又进一步了)。在学校里,我一有空就看王爽的《汇编语言》,越看越带劲,心里深深地佩服王爽老师详细透彻的知识屏蔽的讲解方式,自己看完全能看懂。
纸上得来终觉浅,不真枪实弹的写点程序,是夯实不了基础的。回家后,先按照书上的例子用记事本写好了汇编程序,然后用masm等工具编译连接,自己用Windows自带的debug进行调试,虽然只是一个黑乎乎的运行在保护模式下的一个dos窗口,什么输出也没有,不过能看到自己的数据在debug里面按照自己想的结果正确的运行出来真的很开心。(当时还看些关于编程的小说,比如《疯狂的程序员》《重生之王牌黑客》,后者里面的主人公竟然能直接用debug写应用程序,从此我心里就偷偷地告诉自己,将来我也要达到这样的目标。现在看来,这几乎是不可能的了)
后来又用16位的汇编写了个直接读取cmos来显示当前时间的程序,和底层硬件打交道的过程真的很爽,但是书上还有很多的东西我还都没有实践过,比如直接读写硬盘扇区,开机引导程序,安装中断程序等等,因为我又迷上了两本书:一本是罗云彬的《Windows32位环境下的汇编语言程序设计》,另一本是我在网上搞到的电子书《黑客防线2009 黑客编程vc专辑》。
需要【本文配套书籍PDF电子高清版】的同学可以帮忙转发一波后 私信【资料】即可免费领取
高二下学期的下半阶段,我已经完全投入到技术学习中去,上课偷偷地看,下课也看,在宿舍里也看,晚上12点之前一般不睡觉,常常因睡眠不足而感到难受,达到了一种走火入魔的境界。看了这两本书,我才意识到,之前所做的东西虽然是在Windows上做的,但是和系统一点关系都没有。也正是从那时起,我才感到自己步入了Windows的殿堂。也正是因为这,我的成绩从高二一入学的班级第10名掉到了30多名。(搞技术的,成绩不提也罢) 非常感谢那两本书,让我对神秘的Windows有了一个初步的了解,给了我一些实际的编程例子参考。在读这两本书的过程中,我对c语言和汇编语言的关系了解的更加透彻,这让我以后在写c代码的过程中还能想象出编译后的汇编代码,用od查看,确实是那么回事。第一次学习hook API时,在网上下了一个例子代码,是靠修改输入表来hook的,二话不说,先编译一下看看,果然一次通过(是一个dll的代码)。然后用罗云彬介绍的方法写了个注入dll的程序,拿到虚拟机上一试,果然阻止了任务管理器结束程序(hook的TerminateProcess函数)。但是在物理机上就不行了,初步怀疑是系统的问题(虚拟机上是xp,物理机上是win7)。后来用od挂上了win7的任务管理器,发现它的输入表里根本没有TerminateProcess这一项,我想它应该不会不调用这一个函数吧,于是下断TerminateProcess,没断着。在继续跟踪调试的过程中发现它原来是直接调用了ntdll里的ZwTerminateProcess函数。既然知道了原理,那就想对策。后来才知道,我的方法叫做inline hook。修改机器码来hook函数是我自己想到的,只不过我还不知道他在这个世界已经存在而已。
高二的暑假终于到来了,自从步入Windows的殿堂后,我的兴趣就多了起来,比如说加壳脱壳,游戏外挂,内核驱动等等。我看郁金香的教程,看《加密与解密》,曾经用od手动脱过UPX,ASPack等一些简单的壳,用IDA分析过论坛里的几个小程序的加密算法,写过QQ对对碰的游戏外挂,还有零散的写过几个win32汇编小程序,都是些搬不上台面的东西。总之就是什么也玩过了,但是什么也研究得不深,始终停留在初学者的水平。玩过内核,下载的那些介绍内核编程的书也没大看下去,最终也还就是写个hello world之类的内核程序。眼看还有半月就开学了,怎么感觉什么东西也没学到。所以我决定得做点什么。那就写一个远控吧,用c语言,纯sdk编程。这个东西,我也没怎么好好的架构一下,蒙着头就开始了。首先写的是图像传输的,技术含量不高,也就是截取屏幕像素数据,压缩,传送。后来又确定了用一个大的对话框作为软件的主界面,增添了文件管理,文件传输,CMDShell以及文字对话的功能。因为没有架构好,所以每写一个功能,我都要追踪出好多bug,然后依次消灭,其实编码的时间并不多,关键是调试改进上花了很多时间。高三开学前两天,各个功能如期完成,我把控制端拷到u盘上(纯sdk编程,才大约100k!),到邻居家里去测试。(因为技术含量不够,所以不能穿透内网。而且我家里用的广电的CableModem,不能做端口映射,所以只能作为受控端测试了)。经过测试,除了图像传输有点蹩脚外,其他的功能都可用,因为之前在虚拟机上都测试过了。因为是纯sdk编程,界面也很难看,看上去很不讨人喜欢。不管怎么说,这次实际的开发让我体验到了做工程师的感觉,也算是夯实了一次c语言,也为以后的开发增长了经验。
高三开学了,在家长的压力下,我决定好好学一学校内的课程,考一所好点的大学。开学后的一个星期里还可以,后来我总是为我那残缺的技术感到惶恐。所以以生病的理由请了假,回家拿手机。从此,我决定利用高三的业余时间好好的研究内核编程。一开始我看的是《Windows内核安全编程从入门到实践》,这本书介绍的范围很广,但是都不详细,不过我不大理解的地方大部分都从张帆的《Windows驱动开发详解》以及网络上找到了答案。还有一本比较好的书《寒江独钓...》,里面的过滤驱动例子讲解的也都很详细。当然,我也不可能总是看内核的东西,我需要思维的切换。以前总是用c语言写程序,也没正儿八经的看看c++。
于是先正儿八经的看了看c++,后来在家里又学了一会的BCB,能够简单的用一些基本的控件,学这个的目的主要是快速的处理界面。后来感觉到用c++找不到想象出汇编代码的感觉,而且在论坛里看到了《c++逆向与反汇编揭秘》这本书,于是就在网上下了一本pdf格式的电子书在手机上看。认真的看了一段时间后,总算对c++的反汇编有了基本的了解。看到网上都用mfc编程,于是我也搞到一本《深入浅出mfc》,粗略看了一段时间,对mfc的机制也有了些粗浅的认识。后来到了家里,在百度文库里找了一份 vs2010 mfc教程 比书上的容易理解多了。看了一会就写出了一个基于对话框的加法计算器程序,而且界面也比以前用sdk编程的好看多了。
目前,我正在写一个拦截窗口创建的程序。内核层hook ShadowSSDT里的NtCreateWindowEx函数,应用层用mfc设计一个基于对话框的界面,能够自定义拦截规则(根据窗口名,类名,以及窗口大小)。写这个程序的初衷是阻止迅雷酷狗等软件的广告窗口,目的还是为了实践一下学到的东西。我觉得只有做出实用的程序来才算掌握了那些知识。返校时我已经把内核层的代码和应用层的代码都分别写好了,并做了简单的测试,还剩下内核层与应用层的通信代码没写好,下次回家先做完它。(下次回家也就放寒假了,我们这高三一般都是一个月回家一次。不过为了学习编程,我也经常请假回家。)
这次寒假我也要做一个软件来实践我从书上学到的东西,想来想去,还是要做一个远控(除了这东西,我好像也不知道要做什么了),不过这次要运用大量的内核编程。(给大家简单的介绍一下这个远控:
用mfc做一个基于对话框的界面,用skin皮肤库美化界面(之前没用过,现学现用吧)。在内核层要做的有隐藏进程,绕过杀软的函数钩子,清理回调钩子,还有键盘记录。主要的功能有文件管理,文件传输,执行cmd命令,截屏。采用邮件系统通信(这样可以通过手机发送邮件来进行控制),不要求实时传输的效率。还有,这只是一个初步的设想,用邮件系统通信我还没试过。)
如果寒假里还有足够的时间,我还得研究一下免杀。以后还打算自己做几个小游戏的外挂,主要是想提高一下自己的逆向分析调试能力,然而做这些的基础还是正向的编程经验。
为了学习编程,成绩下降,家长也因此而感到失望,老师也经常找我谈话。发此帖的目的,还是要朋友们帮我参谋一下,我到底是应该继续学习编程,还是拚一年高三的生活来考一个好学校继续进修?有人说在大学里这些东西什么也学不到,但是我总觉得好大学里的学习气氛可能比较好。我很迷惘,最近一直不能静下心来去学习校内课程。未来的路到底在哪呢?朋友们给点意见吧。
中韩对碰!10月12日,两款暗黑风游戏在同一天上线
新的一周又开始了,本周又会有哪些好玩的新游戏等着我们呢?一起来看看吧。
【本周新游发售】
划重点:中韩对碰!两款暗黑Like刷刷刷游戏将在10月12日上线
本周10月12日,在暗黑like手游领域将会展开一场别样的“中韩大战”。
首先是来自韩国Line Games旗下的暗黑风多平台动作RPG新作《十三月》将于10月12日上线全球。
《十三月》的全球版将通过Line Games旗下平台FLOOR和全球PC游戏平台Steam,以及手机平台(Android, iOS)中发行。而《十三月》的全球版将和韩国版分开运营,为了避免出现地区之间的差异,使用相同的运营方式。
而另一款来自中国的暗黑like游戏,则是来自心动的《火炬之光:无限》,游戏基于热门暗黑like IP《火炬之光》开发,主打高自由度Build搭配,核心玩法在于通过技能、天赋、装备、英雄特性等组合,构建出不同的战斗流派。
《火炬之光:无限》也是一个包含PC、IOS、安卓等端手游全平台的游戏,两款游戏类型相似、发售平台相似,并选择了在同一时间登陆全球市场,难免也会有或多或少的竞争关系。
划重点:大逃杀射击端游《超击突破》10月11日推出抢先体验版本
在下周10月11日,由Wonder People自主开发的大逃杀射击端游《超击突破 (SUPER PEOPLE) 》将会在steam推出抢先体验版本。
该作品曾在8月下旬在Steam平台进行过一轮测试,测试的数据十分理想,每天约有24万名玩家参与游戏。
在《超击突破》游戏中,玩家可在12种具有特殊技能的超级战士中选择其中一种,相互进行激烈的竞争,并成为最后一个人或最后一组小队。
在游戏过程中,玩家通过多样的方式来成长,并按照成长进度开启职业专用技能和终极技能。在每场战斗玩家皆可以采用不同的成长方式和战略,可以使用不同的技能结构并享受新鲜的游戏体验。使用成长到最后习得的终极技能,玩家还可以图谋翻盘,从而感受到与众不同的乐趣。
因为在游戏过程中获得各种材料道具,可以用来制作升级枪械和装备,所以玩家到最后可以感受到刷道具和成长带来的乐趣,并进行手心冒汗的交火。
划重点:韩国产SRPG新作《幻灵降世录》10月13日上线Steam
韩国Ocean Drive Studio公开了旗下开发中的SRPG新作《幻灵降世录》的上市日期,游戏将会在10月13日正式上线Steam平台。
《幻灵降世录》是回合战略RPG,描述了因为内战而分裂,并进入衰退期的帝国。游戏中,玩家将成为佣兵团长埃登,开启反对暴君卢迪维克图斯暴政的旅程。同时,在战斗过程中,玩家可以寻找只有己方能攻击敌人的位置,或者使用相克等。
而且,使用地形地物和属性魔法之间的相互作用,也是这款游戏的核心。比如,玩家不仅可以在丛林中点火,在毒雾上使用火柱引起爆炸,还能用闪电让水坑上的敌人接连触电。
除此之外,游戏还具备可以为战斗单位配装备的系统,提升己方的亲密度,发挥能力的纽带关系系统等内容。
划重点:偷窃动作游戏 《神技盗来 -KAMIWAZA TOURAI- 》将于10月13日发售
在10月13日,将有一个题材十分特殊的隐匿偷盗游戏发售,它就是《神技盗来 -KAMIWAZA TOURAI- 》。
《神技盗来 -KAMIWAZA TOURAI-》是2006年在PS2平台上发售的潜行偷盗动作游戏《神技 盗来》高清移植版,除画质提升外,还追加了自动存档等新功能,并对游戏内各种教程引导做了调整。玩家在游戏中扮演海老三,行侠仗义济助贫困孤苦,在多样环境里面,见招拆招,展开精彩动作帅气出击,追求盗亦有道的仗义极致。帅气下手,干净俐落。
游戏繁体中文版与日版同步推出,登陆PS4与Switch/Steam平台。
划重点:反向跳票!异形风恐怖游戏《蔑视》提前一周至10月14日发售
发行商Kepler Interactive和开发商Ebb Software宣布旗下恐怖游戏《蔑视》的发售日期提前至10月14日,游戏目前已经登陆Steam平台,支持中文,还将加入XGP。
《蔑视》是一款氛围诡谲的第一人称恐怖冒险游戏,背景设定在充斥着怪异形体与昏暗光影之下的噩梦世界。游戏围绕着“迷离其中”的核心设计理念展开。孤独与迷惘将在这个怪诞的世界中如影随形,踏上一段错综复杂而且光怪陆离的非线性之旅。压抑不安的环境本身也在诉说着自己的故事。
游戏中的每一处地点都象征着独立的主体(故事),每一名角色、每一个谜题都交织在一起形成了密不可分的完整世界。在游戏中玩家将逐渐开启新的区域、获取不同的技能、武器、各类物品并努力理解呈现在眼前的景象。
【本周新游测试】
划重点:《全境封锁2》国服10月13日将开启测试 限号删档不计费
已经有许久未见新游戏发布的腾讯,终于要在本周10月13日拿出代理依旧的重量级作品,那就是来自育碧的《全境封锁2》,该游戏的国服将会在10月13日至10月26日开启新的测试,预计是离上线不远了。
这款由育碧开发的TPS刷刷刷游戏想必玩家们应该不会陌生,游戏交给腾讯代理后不知道是继续沿用买断制发售,还是准备做成长期付费游戏,毕竟如果以买断制发售的话,国内喜欢该类型游戏的大部分玩家早就已经买过了,市场份额已经严重不足。
要看看腾讯会不会对这款游戏进行一番魔改了。
划重点:《战锤40K:暗潮》PC版将于10月14日展开内测 注册已开启
开发商Fatshark宣布即将到来的合作游戏《战锤40K:暗潮》的内测日期。测试将于10月14日至10月16日进行,并将只针对游戏的PC版本。
《战锤40K:暗潮》是一款发生在《战锤40K》背景下的4人合作多人游戏。故事发生在亚托玛主星,一个被称为“告诫会”的邪教控制了这里。来自审判庭的玩家来到这个星球上与混沌对抗,玩家们的任务是冒险进入巢都特提恩姆,为生存而战。
前作“末世鼠疫”是一款玩法有些类似求生之路的刷宝闯关游戏,暗潮估计也会沿用这种传统玩法。
原定于9月13日发布的《战锤40K:暗潮》PC版已被推迟至11月30日发布。Xbox系列X/S版本尚未确定发布日期,但预计将在PC版发售后不久发布。
划重点:洛英团队PC新游《Warhaven》正式公布 10月11开启B测
NEXON于近期宣布,旗下多人对战游戏《HP计划》正式定名为《Warhaven》,并计划于10月11日开启全球Beta测试。
《Warhaven》是由NEXON全新开发本部的李恩锡开发总监操刀开发的16人对战16人PVP白刃战动作游戏。李恩锡开发总监作为韩国国内知名的游戏开发者,曾开发过《洛奇英雄传》、《野生之地:杜兰戈》等多款游戏。
【本周热点更新】
划重点:天赐节佳期相约 天刀手游周年庆版本定档10月13日
天刀手游两周年庆暨天赐节盛典将至,全新版本《盛世有青铜》佳期相约定档10月13日,超多版本内容、福利好礼共庆盛典。
该版本将会有大量全新内容上线,“九鼎之兵”相继现世,新主线探寻和氏璧遗踪,主题奇遇同步来袭。并且游戏还将与传统文化跨界联动,在游戏中加入大量青铜器文化,并与大量博物馆合作,与玩家开启奇妙的旅程。
划重点:《宝可梦:大集结》新宝可梦“皮皮”预告公开 10月13日将正式上线
在10月13日,《宝可梦:大集结》将会推出一只全新的宝可梦角色“皮皮”,该角色可兼顾输出、辅助、治疗等多个功能,是一个非常强力的新角色。
值得一提的是,皮皮在游戏中的灌篮得分动作采用了该精灵的招牌技能挥指,形象上也十分的可爱,不知道游戏里会不会加入这个颇具随机性的有趣技能。
根据此前公开消息,《宝可梦:大集结》还将陆续上线新活动任务、新战斗通行证、新团结战、新好友邀请活动,新排位等等内容。
划重点:《消逝的光芒2》DLC“血腥纽带”全程超6小时 将于10月13日正式发售
在10月13日,《消逝的光芒2》DLC“血腥纽带”将会正式发售,登陆Xbox One、XSX/S、PS4、PS5和PC上发布,稍晚将以云游戏的方式登陆Switch。
此前,游戏的首席设计师在推特上发文透露,该DLC全程超过6个小时,其中的许多任务都会接触的感染者,与人类战斗的部分则会占到3成的比例,也就是说在该DLC中,玩家将会重点与强力的感染者进行殊死搏斗。
【本周热点事件】
划重点:《我的世界》全球嘉年华预告将于10月15日正式开启
在10月15日,《我的世界》将会开启2022全球嘉年华。
据悉,今年游戏官方将启用全新方式进行生物投票,并且在嘉年华过程中将会公布《我的世界》《我的世界:地下城》及《我的世界:传奇》等数款游戏的全新消息。
《我的世界(Minecraft)》是由Mojang Studios开发的一款沙盒式建造游戏。游戏画风独特,主打积木马赛克风。在游戏中,玩家可以在三维空间中自由地创造和破坏不同种类的方块,用想象力建立并探索一个专属于玩家的世界。
玩家可以任意去做自己想做的:探索世界、建造房屋、制造武器,甚至是去搞破坏。这款游戏自由度极高,近乎没有游戏规则,目的是让玩家能够真正地体验到“我的世界”。
相关问答
让亲密感飙升的亲子 游戏 有哪些?适合跟0~3岁宝宝玩的24个亲子游戏,会玩的孩子更聪明一、适合0~1岁孩子1、拨浪鼓游戏拿一个拨浪鼓,在宝宝面前从左向右移动,同时鼓励他去拿拨浪鼓。当他成功...
有哪些比较好玩的解密类 小游戏 值得推荐?-ZOL问答10条回答:【推荐答案】纪念碑谷。此款游戏通过让迷宫动起来的行走方式,建筑的旋转以及唯美的画面,叙述一个个小故事。玩家通过旋转建筑,走过不同的地方,来解...
S18战令六款皮肤选一,你觉得选谁最赚?哈喽,大家好,我是游戏小瓜瓜,很高兴又和大家见面了,今天小编要和大家聊一聊S18战令免费送皮肤的事情!从s14赛季开启以后,王者荣耀官方一直不断地给大家送...根...
如果排位时对面有女生撒娇卖萌的话,男生会不会放水呢?一样。撒娇卖萌的还比不上五杀嘚瑟的,靠数据说话才是硬道理。我技术不咋的,但偶尔也能用辅助carry全场。遇到更牛逼的打不过就打不过,尽力而为,撒娇什么的太欠...
求一款女生亲吻男生后解锁的android解锁软件-ZOL问答qq88237219人脸解锁可以实现。将两个人亲吻的图像作为认证图像即可。然后俩...搜索锁屏对对碰,安装就可以了,头像可以自己换有用(0)回复随便刷一个系统...
对对机到底是什么?有哪些用途?怎么连接wifi打印-ZOL问答对对机到底是什么?有哪些用途?怎么连接wifi打印举报5人讨论7995次围观关注问题写回答讨论回答(5)q75225912对对机通过用途划分为用户版和商家版,通过连...
春秋战雄战术系统怎么操作,战术系统攻略?战术系统是《春秋战雄》一大特色系统。摆脱传统的卡牌对对碰和点头像释放武将技能的单调模式。从而行成见招拆招,战术布局等竞技对抗的卡牌竞技新玩法。战术...
王者荣耀s18战令奖励曝光,很多玩家表示特别失望,你觉得呢?王昭君小姐姐喜提新衣,这个画风有点那啥了!!!王昭君的事实皮肤偶像歌手的星元皮肤,以梅花为主题创作的,游戏中的技能颜色变成了粉色,个人觉得没有偶像歌...!!...
王者荣耀微信送传说皮肤活动,话说几十万套,我怎么就中一个白执事,你们呢?兄弟,你中了个赵云——白执事就知足吧,你是没见过比你运气更差的吧?王者荣耀微信游戏最近迎来了六周年的生日,所以从昨天开始就给玩家带了了一个堪称史上最...
在 游戏 世界里,哪些故事陪伴了我们的青春?《卧虎藏龙》也创造了一个神奇的武侠游戏时代。最令迟子难以忘怀的,大概就是《卧虎藏龙》的轻功了。虽然不如今天的一些手游来得炫酷,但那应该是最接近武侠小...