• 逆向之汇编语言


    逆向之汇编语言

      首先介绍计算机程序在计算机中的处理过程。
      现代计算机存储和处理的信息以二值信号表示,也就是二进制序列,程序对于计算机而言就是一串二进制数据流,以流水线的方式进入CPU进行运算。主要在CPU与内存之间进行数据传递。但程序员写出来的程序是以高级语言的形式展现的,计算机不是人脑,看不懂高级语言的语法,只能识别二进制序列,所以计算机需要将高级语言翻译成二进制序列进行解读和执行。然而将高级语言直接翻译成为二进制序列难度较大,所以就需要使用编译器。
      编译器首先将程序员写的代码翻译成为汇编代码,汇编代码和计算机命令有较高的相似度,易于计算机识别,之后计算机将汇编指令抓换为二进制代码,同时将数据以二进制的形式存放在内存中。
      所谓逆向,就是以静态或者动态的方式将可执行程序反编译成可读的汇编代码,分析可执行文件内在的逻辑。而分析程序就要找到程序的入口,从程序起始点一步一步分析程序结构,本次实验就介绍逆向查找程序启动函数的方法。

    程序执行原理

      高级语言:高级计算机语言便于人编写,阅读交流和维护。

      机器语言:机器语言是计算机能直接解读,运行的。

      程序执行方式:现代计算机存储和处理的信息以二值信号表示,程序对于计算机而言就是一串二进制数据流,以流水线的方式进入CPU进行运算。系统并非在硬盘上直接运行程序,而是将其装载进内存里,包括其中的代码段,数据段等。

      程序表现形式:程序以高级语言的形式展现,计算机只能识别二进制序列,所以计算机需要将高级语言翻译成二进制序列进行解读和执行。

      高级语言转换机器语言:高级语言直接翻译成为二进制序列难度较大,所以就需要使用编译器。

    逆向分析

      逆向分析的定义:源代码编译是“不可逆” 过程,无法从编译后的程序逆推出源代码。故而逆向是将编译链接好的程序反过来恢复成“代码级别”。逆向通常通过工具软件对程序进行反编译,将二进制程序反编译成汇编代码,甚至可以将一些程序恢复成更为高级的伪代码状态

      逆向分析的主要作用:破解正版软件的授权、挖掘漏洞与安全性检测、还原非开源项目。

      逆向分析的过程:
    (1)利用工具获得汇编代码。
    (2)找到程序启动入口。
    (3)设置断点分析程序执行逻辑
    (4)定位程序缺陷位置。
    (5)设计利用方法。
    (6)通过程序缺陷执行测试人员指令

     逆向工具分类

    静态分析工具
      静态分析将二进制可执行代码转换为汇编语言进行分析。在很多场合下不适合直接运行程序,例如软件的某一模块(无法单独运行)、病毒木马蠕虫程序、平台设备不兼容等。此时需要使用静态分析工具。
    动态分析工具
      动态分析工具主要功能是调试,以便高效分析软件的行为并验证静态分析结果,甚至找出软件缺陷和漏洞。由于操作系统提供了完善的调试API,因此利用各种调试工具可以非常方便的观察和控制目标软件。

    OllyDbg

      OllyDbg是一个新的动态追踪工具,结合了IDA与SoftICE,易于上手,是流行的调试工具

    代码

    愿路途漫长,以后莫失莫忘。 愿你不骄不躁,安稳顺心。

    作者:菜鸟-传奇
    本文版权归作者和博客园共有,不以任何盈利为目的,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律声明责任的权利。
  • 相关阅读:
    c++ 视频和教程下载站点
    SQL超时解决方法
    初学者必备:C++经典入门详细教程
    人生致命的八个经典问题
    字长与字节
    typedef用法(三)
    遍历搜索注册表
    数据库连接字符串大全 之 SQL服务器篇
    十五个步骤收获学习的习惯
    谈基于.net平台windows开发中的模式窗体.NET教程,.NET Framework
  • 原文地址:https://www.cnblogs.com/cainiao-chuanqi/p/14703315.html
Copyright © 2020-2023  润新知