软件逆向工程学习(一)

前言

本专题学习软件逆向的基本原理、方法,并针对具体案例进行逆向分析,从而学习一套完整、系统的软件逆向的方法并获取相关经验。

什么是逆向工程

逆向工程(又称逆向技术),是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理。
随着计算机技术在各个领域的广泛应用,特别是软件开发技术的迅猛发展,基于某个软件,以反汇编阅读源码的方式去推断其数据结构、体系结构和程序设计信息成为软件逆向工程技术关注的主要对象。软件逆向技术的目的是用来研究和学习先进的技术,特别是当手里没有合适的文档资料,而你又很需要实现某个软件的功能的时候。也正因为这样,很多软件为了垄断技术,在软件安装之前,要求用户同意不去逆向研究。【百度百科】

常用软件

OllyDbg:常用于动态调试程序,无法调试内核,UI功能强大。
SoftICE:工作在ring0态的调试器,常用于调试驱动程序,功能强大的命令行工具。
WinDbg:介于上两者之间的调试器,具有图形界面,调试主要通过命令来进行。
IDA Pro:反汇编软件,用于静态反汇编,带有较弱的动态调试功能。
UltraEdit:16进制编辑器,可用于直接修改可执行文件,也可用于常见语言的变成工作。
虚拟机:防止被调试程序破坏物理机的内核及操作系统。

分析一个简单的程序

为了说明上述软件的作用,我们以一个简单的程序为例,来展示逆向中的反汇编代码并分析。
程序使用vc6.0编译生成,c程序源文件如下:

#include <stdio.h>
#define PASSWORD "1234567"
int verify_password (char *password)
{
    int authenticated;
    authenticate
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值