ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

羽夏逆向——逆向基础

2021-11-19 12:31:31  阅读:184  来源: 互联网

标签:逆向 编码 语言 汇编 基础 编译 羽夏 CPU


写在前面

  此系列是本人一个字一个字码出来的,包括示例和实验截图。可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我

你如果是从中间插过来看的,请仔细阅读 羽夏逆向——序 ,方便学习本教程。

基础

  既然你想要学习逆向,基础没有是不行的。如下将详细介绍你需要的基础和我可能涉及讲解的内容。注意,本篇可能对您来说是劝退文,只有3分钟热度或者连操作系统怎么使用都不熟练的同志就不要继续了。

一门编译型语言

  为什么需要一门编译型语言呢?什么是编译型语言?我们的计算机跑代码都是在CPU上跑的,名为中央处理器,是计算机的最重要的组成单位之一。如果我们想要让计算机干活,咱们人类的自然语言计算机是听不懂的,只能听懂机器语言。

  在计算机中,能够让它听懂的只有机器语言,而和机器语言一句一对应的语言,只有汇编语言。每一句汇编语言,都能翻译成对等的语言,我们来看看如何让计算机执行1+1=?的功能:
  

十六进制数据 汇编代码
B801000000 mov eax,1
00463896 83C0 01

  前面的十六进制数据才是CPU能够听懂的语言。除了编译型语言,还有解释型语言。那么什么是解释型语言呢?比如我们常见的PythonJava.Net系列语言都是解释型语言。我们以我最熟悉的C#来介绍:

graph LR A(C#代码) --编译--> B(CLI) --运行--> C(虚拟机编译) ----> D(汇编代码)

  我们在IDE编写的代码,对于解释型语言,它会编译成字节码(Java的说法)。等到双击运行该程序,就会启动一个虚拟机解释环境,再由它编译成汇编指令执行。由于汇编指令和机器指令存在一一对应的关系,故把汇编指令视为机器指令,但它们并不是完全对等的,如果汇编想要运行,就必须经过编译器编译链接才能被CPU所识别。
  如果我们逆向解释型语言咋办?本人仅会简单的逆向.Net程序,并且还是脚本小子的水平,但还是可以简单的指引如何逆向该系列程序。

会 Intel CPU 的汇编指令集

  CPU不仅仅只有Intel的,只是在PC端最主流最常见而已。还有一个有名的,在单片机和移动端占据江山的就是ARM公司的CPU。它们的设计理念不一样,故它们的指令集不一样,硬编码不一样。硬编码是什么?就是我们在上一小部分介绍中的汇编代码对应的十六进制数据,这些数据并不是随便搞得,而是通过一系列的规则。对于32位的CPU想要了解学习硬编码,可以参考我的 羽夏笔记——硬编码(32位) 。由于咱们的目标是PC端的Window逆向,故学习Intel CPU的汇编指令集即可。

PE 文件结构的知识

  我们逆向肯定是分析可执行程序,而在Windows的所有可执行程序都遵守PE结构,英文全称为Portable Executable。它的结构比较复杂,是由一系列的结构体组成,可以参考我的 羽夏笔记——PE结构(不包含.Net)。如果这个不会的话建议不要根据下面的教程来了,否则到最后依旧是脚本小子的皮毛水平。那么如何学习呢?推荐B站上的 小甲鱼系统篇 视频教程,详细地讲解了必要的PE结构,学会完这个,就可以说过关了。

逆向工具

  既然逆向,就必须有工具:查壳工具和传说的倚天剑与屠龙刀。只有知己知彼,才能百战百胜,查壳工具就必须的,它会帮我们检查这个是由哪个编程语言编写,有没有加啥壳,因为编程语言编译后的程序或者加壳的程序都会有固定的特征,通过这个特征匹配就能推测出是什么。倚天剑以前说是OD,但现在它很老了,还没有64位的,只有一些爱好者来维护。我觉得现在的倚天剑应该是X96Dbg,是一个强大的开源的汇编级动态调试工具,活跃在Github当中,和OD操作相似,以后的示例我们会用这个软件进行。

  屠龙刀是什么?当然是IDA了。它是一个强大的静态分析工具。它的图标据说是第一个程序员的头像,不用惊讶,第一个程序员就是女的。但它是商业软件,不过看雪有patch版本,自己找找下载吧。

  这些工具自行到官网下载,本教程不提供。

编码

  计算机中,所有的数据都是经过编码的,比如数字的存储、文字的显示和存储等。什么是原码、反码、补码,什么是UTF-8GBKASCII文字编码,不懂的建议学习一下,这个可是学习C语言的基础,很多计算机基础课程都有这个东西,本指引注重逆向,故不再赘述。

基本的调试能力

  软件出Bug怎么办?连调试都不会?那就别继续了,先拿个程序自己调试练习,熟练了再回来,这东西不难。

结语

  具有上面所述的基础后,你就有具备逆向的基本最低要求。下面的教程我将用实例介绍如何使用它们,但是如果想要系统的学习,还是得靠你自己了。

下一篇

  羽夏逆向——破解第一个程序

标签:逆向,编码,语言,汇编,基础,编译,羽夏,CPU
来源: https://www.cnblogs.com/wingsummer/p/15574504.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有