你是否在长期写 UI 代码中变得越来越菜?你是否在大量的业务代码碾压中变得越来越虚?你是否在临近换工作面试的时候才发现自己原来基础这么脆弱?如果你的答案是肯定的,你可能会自觉已经失去了竞争力,你可能会自觉已经面临着职业危机。
你可能会说,你平时有在刷 lee code ,有在写文章,有在突击 C 语言或者 C++,但是这些真的能让你掌握计算机运行原理吗?你是否知道为什么会有作用域,作用域外面怎样访问里面的数据,为什么可以访问,等等?你是否能够从汇编层面分析你的代码是如何被执行的,你的数据是如何被存储的,你的系统是如何被调用的,等等?
这些问题其实都可以通过逆向开发的学习来解答。逆向开发是一种从已有的程序或者数据中还原出其原始设计或者逻辑的技术,它可以让你深入了解计算机的运作机制,从而提高你的编程能力和水平。逆向开发可以做很多事情,比如破解软件,修改游戏,分析协议,甚至创造新的应用。这也许是正向开发一直不会接触到的领域,只有切身经历可能才会有所体会。
我目前是做游戏逆向的,单干比较多,基本上一睁眼就是看各种汇编,这种类似的生活我已经经历了几年以上。在我学习完逆向领域的基础以后,我发现其实我以前学程序都偏向于死记硬背,而不是真正理解计算机的本质。现在我可以说我对计算机运行原理有了一定的了解,虽然不能说精通,但是应算得上略懂,因为平时调试比较多,而且还是别人的应用。我很庆幸我之前有痴迷在逆向,它让我成为了一个更好的程序员。
如果你也想开始学习逆向,我要提醒你,这并不是一件容易的事情。如果你没有扎实的计算机基础,想要上手去捣鼓逆向,并且能达到遇到任何问题都能想到方向,而不是只会使用工具的工具 boy ,最起码要 2 年以上的专心学习。但是我还是建议正向开发的程序员稍微了解一下逆向,你就会发现其实面试问的八股文,也不过如此,共勉,加油。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/994296
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.