2021年04月18日随笔-有关逆向

首先这是一个随笔,最近在看安卓逆向方面的东西,在某个下午,突然有一种学了很久但是很无力,有种什么都不会的感觉,思考了很久,决定把想到的东西拿出来记录一下,以后再有类似的感觉的时候可以有个参考,希望可以节省下次迷茫的时间。

想太多和思考不是一回事,对某个问题持续不断从各个角度去分析,直到这个问题以某个方式被解决,我们把这个过程叫做思考。而想的多,则更多偏向于思考的方向偏到了其他的问题,更多造成的结果是目标定得太多,而实现的太少。

学习,需要遵循一定的规范。正常情况下,我们需要先从宏观的角度分析一下我们达成我们目标的时候,我们都需要做哪些方面的东西,怎么算是达到了我们想要的结果了。如果没有这些标准,那么从学习一开始,就注定了我们完成不了我们的目标。同时这也是一个恶性循环,让我们有一种错觉:感觉什么都学了,什么都会了,但是真的用的时候,我们发现会的东西突然又不会了。

所以,有关学习,我们先要给自己一个预期,达到百分之多少算一个阶段,完成这个阶段,都要会哪些东西,然后给自己一个正反馈。这样我们就会养成一种良性循环的学习习惯,久而久之,我们掌握的东西和用到的东西就会慢慢开始积累。就和资本的原始积累一样,有个辛苦的积攒阶段,但到达这个阶段之后,会有一个突变的阶段。我们之前都是称其为厚积薄发。

总结了上面有关学习的方法之后给自己列一个有关逆向学习的大纲。

首先,学习逆向,就是分析软件的代码。
分析软件代码就需要可以先看得懂软件的代码是什么意思,结构是什么样子的,所以我们应该有能力开发一个hello world来验证我们分析的结果。
所以第一步:了解项目的代码结构,这涉及到某个语言的学习和编写。但是并不涉及到底层代码。

其次,在我们了解了项目结构之后,我们需要写出来某个程序来实现这个功能,反编译并重新打包这个应用来了解这个程序的工作原理是不是否和自己的期望。
所以第二部:了解反编译和重打包软件。这涉及到工具的使用。

在第二步的过程中,我们有个分析的过程,如果这个app没有进行安全方面的加固,我们使用静态反编译工具之后的结果基本上可以完成我们想要的分析了。但是如果程序是经过加密或者加壳之后的,就需要我们脱壳之后再进行分析了。

还有就是直击问题本身,在处理问题的过程中去学习知识,当感到理论知识特别欠缺的时候,快速过一遍知识点,解决问题本身。

起风了,努力生存
原文地址:https://www.cnblogs.com/StivenYang/p/14702623.html