逆向入门

0x00前言

什么是逆向工程?逆向工程主要针对软件方面,学习计算机的底层知识,通过反汇编、反编译和动态跟踪等方法,分析出应用程序的实现过程,比如给你一个.exe的可执行文件,你想知道这个文件是否是一个病毒文件,就要进行对这个文件进行逆向,分析出他的行为来判断是否是一个病毒文件.应用的主要方向:软件破解、病毒分析、游戏漏洞分析、移动安全、二进制漏洞挖掘与利用.

概述

对于逆向工程来说最为基础的就是掌握一门语言,语言是我们与计算机交流的一种工具,在学习逆向工程的过程中,你要练就扎实的的语言基础,不然当你拿到一个软件时,你会无从下手,简单的说,我们大概需要掌握如下语言:

  1. 汇编语言:这是能否读懂底层代码的关键,我们分析他人的软件时一般是无源码无符号调试(除非是你自己写的,或者是开源的),这是经常的事,几乎商业软件都不会将自己的软件代码开源出来,那样意味着别人可以随意对自己的东西进行修改删除或者进行盗版发行,这是对软件商来说是不利的,但我们逆向分析人员厉害的就是可以通过一些工具进行无源码分析,功能修改,常见的就是外挂,但前提是你要懂汇编语言,这是我们考核的重点内容.这里大家可以通过王爽老师的《汇编语言》一书配合小甲鱼的汇编视频.
  2. c/c++: 这两门语言将是逆向分析者最常遇见和使用的语言,具体则体现在对于一些补丁的编写,当然不排除可以使用一些其他的语言,但请注意,我们来开篇便言明,逆向工程是学习离不开计算机底层知识,所以c/c++无疑是必须的.我们推荐可以学习小甲鱼的视频或者其他书籍
  3. 脚本语言和界面编程
    在此基础上在扩展学习Python编写脚本,c#或者任意一门界面开发.

延伸

那么怎样开始逆向的学习,可以参考以下内容:

  1. 工具的学习:OllyDbg一款经典的反汇编调试器,是最基础的工具,只有熟练掌握了这个工具,我们才能真正展开逆向分析学习,而在此之上的一些延伸工具,如PEiD、ida等都会在后续学习在慢慢了解,以下我们为你们提供了一个学习OD的视频,链接提取码:pqha .
  2. 逆向研究方向:Windows、安卓、二进制等,他们又会有所区别?你们暂时不需要知道,在你学习掌握一些基础知识后我们后续会进行说明和解释,记住方向的选择是在你有一定的基础之后.

寄语

  • 逆向的学习绝非易事,涉及很多枯燥的技术,例如汇编、操作系统底层知识、外壳对抗等,这很容易让你放弃,中途而废.下面我们提供一些学习建议

1.打好基础是前提

  • 不会走就想跑,是初学者最容易犯的错误.如C语言、API还没学明白,就想去玩内核驱动,不懂汇编没调试过程序就去玩Hook.

2.多调试,多实践

  • 调试是逆向工作者的必备技能,不要空想,也不要未实践就乱下结论,一定要多动手.

3.定好学习目标

  • 首先确定自己要学什么,然后再向着目标前进.有的人今天学汇编,明天学C,后天不知道是学JAVA还是.NET,亦或者是Python.有的人,看到别人用驱动写了个进程保护挺NB,C语言还没学会,就投奔驱动去了,或者刚学内核什么都没研究明白,看别人又是解析HIVE又是解析,马上又转方向了.

4.充分利用好各种学习资源

  • 网上有很多学习资源,例如优秀的代码和学习教程,以及很多大佬的帖子,都能学到不少干货.

吾爱破解

看雪论坛

5.善用搜索引擎

  • 对初学者而言,遇到的大部分问题都可以找到前人们的资料和答案.除非某个问题我思考了很久确实无法解决,搜索到的相关资料也无法提供帮助,这时候才适合去寻求他人的帮助,寻求学长帮助.

6.最后就是要吃苦,要坚持

  • 学习逆向的过程并不轻松,尤其是汇编、破解,尽可能地坚持不要放弃.真正地提升就是在你坚持坚持再坚持之后,之前的一切都只是铺垫,放弃了就什么都没有了~

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!