本人作为长期泡在看雪论坛的资深菜鸟,看到的一些现象使我感觉有必要说一些关于论坛行为及学习方法的话.主要是我的一些想法及意见,针对那些正在学习编程的初学者(大牛请无视),因此放在这个版块.在大牛云集的地方写这些东西,请恕我大胆了.
1.打好基础.
常用算法和数据结构是必须要掌握的.适当跳跃是可以的,可是很多人不会走就想跑了,C语言、API还没学明白就要玩驱动,很多人不懂Hook不懂汇编没调过程序就要玩Hook.
2.多编码,多调试,多实践.
不要只在那儿空想,也不要未实践乱下结论.动动手吧,有多少写程序的人不会调试?有多少玩驱动BSOD了不会分析dump?调试是编程者必备技能~
3.学习主要还是靠自己.
论坛上、Q群里的人只能暂时地在某个问题上给你解答一下,最多属于点拨性质,要系统学习还是要靠自己.不要幻想找什么师傅,也不要把学编程的希望都寄托在师傅身上,整天在论坛撒Q号找师傅的有几个找到了?如果你真的RP比较好找到了一个比较负责的师傅,那么恭喜你,你很幸运,可以少走一些弯路,但是不要忘了学习的主体仍然是你自己.如果有机会参加个系统的培训还是不错的
4.定好学习目标.
你先确定自己要学什么,然后再向着目标前进.有的人今天学汇编,明天学C,后天不知道是学Java还是.NET. 有的人C还没学会,看到别人用驱动写个进程保护挺NB,马上就投奔驱动去了.刚学内核什么都没研究明白,看别人又是解析HIVE又是解析NTFS,马上又转移方向了.
5.充分利用好各种学习资源.
现在网上的学习资源丰富多了,尤其内核方面,还有各大论坛上高手发布的优秀代码和学习教程也不少,见过很多人在回这些帖子时说"收藏,学习了",不知道有多少人是收藏了之后再也没有拿出来看过?有多少学Win内核的不知道参考WRK,nt4source,ReactOS这样的资源?牛人的博客、语录通常都很具参考价值~在参考书籍的选择上,先是广泛、粗略地多看一些书,看多了你就知道什么样的适合你了
6.用好搜索引擎.
网上资源众多,要想快速准确地找到自己想要的东西,必须用好搜索引擎.可是,有多少人不知道去使用搜索引擎?有多少人不会正确使用搜索引擎?有多少人问问题之前没在论坛先搜索过相关问题解决方案?
7.多思考.编程本是一门创造的艺术,可是有多少学编程的不懂得思考问题.代码抄来编译通过,运行通过,然后就觉得自己很牛了,这就是你的目标吗?不思考就不可能消化,这些东西就永远不可能是你的,进步就更不可能了.一个天天Ctrl+C,Ctrl+V的人能学到什么?而且发散思维很重要,要敢想.这一点我受老V启发很多~比如,有些人以为Inline Hook就等于5字节jmp,事实上有了基础有了想像,怎么Hook就是一件很轻松随意的事情~~
8.要吃苦,要坚持.
学习编程的过程并不轻松,尤其汇编、破解,尽可能地坚持不要放弃.真正地提升就是在你坚持坚持再坚持之后,之前的一切都只是铺垫,放弃了就什么都没有了~
不怕没知识,就怕没头脑.掌握了正确的学习方法,假以时日,必有所成.本人由于工作原因,时间不够多是我最大的缺憾
关于论坛提问:
这是我要说的另一个重点.就目前在论坛里看到的一些现象,我认为不是很好.我不知道在论坛提问的新手有多少人没有看过那篇《提问的智慧》.很多人提了不适当不必要的问题,很多人不知道如何提问.
对初学者而言,遇到的大部分问题都可以找到前人的资料和答案,根本没必要重复问出来,但是很多人不能很好地使用搜索引擎和论坛搜索(这在前面说过一次了),导致同样的问题问了一次又一次,这是不必要的提问,我们要善于踩在巨人的肩膀上.还有的人有了问题根本就不怎么思考,直接就上论坛求助了,这也是不必要的.还有的人提问时根本表达不清楚自已的问题到底在哪里,上来就是一句摸不着头脑的话,别人搞不清楚你问的什么,想帮你都帮不上. 还有,没有人会在论坛上24小时等着回答你的问题,所以论坛求助的效率其实也是比较低的,还不如自己去寻找解决方法.
我自己对提问的态度是:不到迫不得已,绝不求助发问.除非某个问题我思考了很久确实无法解决,搜索到的相关资料也无法提供帮助,这时候我才会发帖求问.所以我在论坛上的提问特别地少,这也是一种强迫自己去思考问题、分析问题的方法.
我个人对编程学习的一个重要体会就是厚积薄发.多看资料,积累原始知识,尽量多思考,甚至平时用到各种软件和程序时我就会想一想这些功能是如何实现的,不是所有问题都能想明白,但是多想想总是有好处的,想的多,涉猎多,有助于融会贯通.有时候你在这方面不明白的问题在接触了另一方面知识后就比较容易想明白了.本人在破解、入侵、溢出、编程、内核等方面都有一定研究,这对于综合地思考问题非常有帮助,我深有体会.
本人文笔不好,先写这么多,有什么不对的请指出.只希望能对初学者有一定帮助,早日走过菜鸟阶段
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)