写在过年之前:我做逆向工程师的这半年

去年七月,博主拉着行李来到帝都开始了北漂生活。

初入社会,第一次面试就显地极为老实磕巴紧紧张张。看着面试试题上熟悉而又陌生,疏远而又亲近的知识点,我愣是没有写出一个一二来。内心徘徊了十几分钟,还是喊面试官交卷了。面试官是一位看上去四十岁的中年人,手里拿着笔眉头紧锁在我的笔试题上勾勾叉叉。

“你连这个都不会吗?”,面试官指着题目看着我颇为不满的问道。

“额.....我会的,只不过现在忘记了....”,我小心翼翼的说道。

面试官估计对我很失望,一直比较凶的询问我,我本来就紧张的手脚冒汗,这下更是语无伦次,回答的磕磕巴巴,连准备好的作品都忘了展示了。

最后面试官让我回去等通知我就知道肯定没戏了。结束后我便开始总结自己在面试中的问题,查漏补缺补充知识点,开始迎接接下来的面试。下面就基本和普通群众保持一致了,四处碰壁,我把每次的碰壁都形容为吃经验,碰着碰着后面就习惯了。

找工作一个星期后便入职了,去一家公司做Android开发,工资也是少的可怜,毕竟还没有毕业,初入行业自然不会很高。我并不是很在意收入,作为新人,还是以学习为主,收入保障基本的生活条件就好了。就这样,在开发完一个公司的Android项目后,我被告知接下来我需要开始学习逆向反编译了.......这个时候我才明白,原来我在公司里真正的工作不是Android开发,而是Android逆向!

等到后面我才了解这差不多是逆向的行情,基本上都是招一些开发人员进来,然后告知是逆向工程,这样以“骗”的形式来培养自己的逆向工程师!就这样,我就稀里糊涂的从一名Android开发工程师转到了Android逆向工程师,,,

在此之前我几乎没有听说过逆向工程,在学校学习的课程唯一和逆向沾边的是汇编语言,老师还告诉我们,你们不用学汇编,反正以后你们的工作不会接触到这方面.......我还真的是认真听老师的话,汇编课从来没听过,想在想起来看,感觉简直是上天给我开了个玩笑!

八月开始,我就开始正式的学习逆向技术。学习也是自学,公司里基本没人懂这个,更别提带我,不过好在的是我个人学习能力一直不错,先规划了一下学习进度:首先学习相关逆向工具的使用,apktool,AndroidKiller,jadx,IDA等等;下面开始学习掌握Smali语法规则,上手翻译一篇Smali文件下来,也是掌握了七七八八;最后就开始上手项目,一边做一边不断地学习,就这样,我开始了第一个逆向项目:破解百度手机助手。

以前在学校里,我是不写CSDN的,从来都是网上搜看别人写的博客。工作后,我便开始了CSDN博客的写作,一方面为了记录自己的学习和工作过程,另一方面也是为了和大家分享技术知识。看过我之前博客的小伙伴可能很熟悉,百度手机助手还是最初的教案对象。

百度的项目其实并不是很难,如果让我现在去破解,可能大概两三天,慢一点三四天就会完成了,但是刚开始的时候,一切都不熟悉,一切都刚刚起步的情况下,我还是花了两个星期的时间才把百度搞定。

逆向的工作总体来说是非常枯燥的,特别的枯燥,如果没有很好的忍耐力和定力,估计你连一天都坐不下去。我的工作基本上就是在翻看各种源码。Android源码,App源码,一些框架的源码,等等,不休不止。

估计很少人会看自己以前写的代码,我曾将在一篇博客中说到,现在大家都很喜欢创造代码,写过的代码很少会回头看上一遍。包括我也是,以前自己写的代码都是一写而过,只有出现问题的时候才会想着去看看,哪里出现了未知bug。你可能会说,我写的代码没有漏洞啊,为什么还要去看?根本就不需要好吧!

这里的漏洞根本不是你们定义的,而是我们逆向工程师来定义。漏洞并不是bug,也不会导致程序崩溃,但是它可以被别有用心的人利用,成为破坏者的帮凶。

我有时候总是喜欢感慨,现在的逆向技术已经过去了黄金时代。我们经常使用的逆向工具和技术,对比现在的安全防范手段,已经是差了整整数代。每一年安全防范技术都在推陈出新,逆向破解技术却一直都停步不前。去吾爱破解的论坛上,你会看到至今经常使用的逆向工具,七八年前,甚至十年前都已经出来了。

社会总是在不停的进步中,国家现在越来越重视互联网安全问题,很多法律法规的出台来约束互联网规范。所以我也经常笑自己,每日都是游走在法律的边缘。这其实是好事,对于逆向行业来说,规范自己的技术,不能肆意妄为的破坏,提高整个行业的形象,这也是好事。

可是在差不多在十几年前,那个时候中国互联网刚刚起步,那是一个高手频出,翻江倒海的年代。那个时候活跃的顶级大牛黑客,现在听到他们的名字还是那么的如雷贯耳,令人钦佩不已,听到他们的传奇故事依旧是那么的神采飞扬。致敬那个时代。

现在也有朋友问我,你们逆向到底干的是什么啊?我也就只能回答:“找漏洞,破解别人的代码。”至少目前,我一直都是在做这样的事情。翻看别人的代码,看看可以从哪里破解下手,这里也就是找漏洞。

但有时候找到了漏洞但是不一定有用,这时候你还需要接着重新找漏洞。这个工作是最为枯燥无聊。你可能找了一小会就发现了关键漏洞,你也可能找了一整天还是一无所获。

我这里就笑称是碰运气,就看你的运气好不好看了。运气好,你可以很快破解掉,运气不好,那就等着吧,等到也许花儿都谢了,你会找得到。

在逆向这个小众的行业内,其实出路不仅仅只有一条破解别人的代码,实质上它还可以做到保护。正所谓一攻一防。

总有人在拼了命的保护代码,也总有人在拼了命的破解代码。在逆向的道路上,一直到是鲜血淋淋,披荆斩棘。从来都没有所谓的绝对完美代码,也从来都没有绝对的破解之道。我们其实都是这个时代的勇士。

这半年,我和大家一路分享了好多安全攻防的知识,从腾讯那里开始,一直有点评他们的安全策略,一直到最近的小米MIUI系统,我们可以看到,安全防范一直都是被大厂倍为重视。毕竟谁也不希望自己的产品被破解,自己的代码被改写。攻防攻防,到最后还是防。

逆向的这半年,我其实成长了很多。以前有很多的写代码的老毛病,坏习惯现在都被改正了过来。有时候我在写代码的时候就会想,这样写安全性高不高?是否可以破解掉?这样就会让我越加的重视开发模式和系统架构,一个好的架构真的是让代码的安全性蹭蹭往上升。

也许每个逆向工程师的梦想都是希望自己写的代码牢固可靠,坚不可摧。毕竟经常破解别人的代码,自己的代码如果被破解了,就相当于自己狠狠被打脸了一样。哈哈!

还记得自己刚刚面对逆向工程的时候,那个时候总感觉很无助,压力非常的大。痛苦自己为什么不好好干自己的开发,跑过来干这个逆向工程!有过一整天都没进展的情况,非常的压抑,睡觉都不安稳的程度。脑子里就想着破解思路,从哪里下手。等到有进展了,出结果了,就会松了一口气,而来的就是轻松感。

我现在其实还有好多逆向知识和技术没有掌握,在逆向面前,我还是一个懵懵懂懂的孩子。但是我还是会不停的成长,一直成长。接下来新的一年里,我希望自己能够学到更多的逆向知识,面对更加困难的挑战,自己能够快速提高!

也希望在新的一年里,家人能够快快乐乐平平安安,小伙伴们都能圆圆满满!

一起加油吧,2019!

你可能感兴趣的:(写在过年之前:我做逆向工程师的这半年)