逆向工程作业

44 篇文章 4 订阅
43 篇文章 4 订阅

《软件逆向工程原理与实践》第一章概述及作业

一.什么是逆向工程?

简称RE,一般指,通过分析物体,机械设备或系统,了解其结构,功能,行为等。

二.代码逆向工程是什么?

代码逆向工程(Reverse Code Engineering,简称RCE )是逆向工程在软件领域中的应用,目 前还没有准确而统一的术语,实际交流中经常出现混用的情况,常用术语有RCERE逆向工 程等,使用起来较为随意。

三.逆向工程的分析法

1.静态分析法

静态分析法是在不执行代码文件的情形下,对代码进行静态分析的一种方法。静态分析时并 不执行代码,而是观察代码文件的外部特征,获取文件的类型(EXEDLIDOCZIP等)、大 小、PE头信息、Import/ExportAPL内部字符串、是否运行时解压缩、注册信息、调试信息、数 字证书等多种信息。

2.动态分析法

动态分析法是在程序文件的执行过程中对代码进行动态分析的一种方法,它通过调试来分析 代码流,获得内存的状态等。通过动态分析法,我们可以在观察文件、注册表(Registry ).网络 等的同时分析软件程序的行为

 四.反汇编工具的使用

1.界面

a.反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、机器码、反汇编代码、注释。
b.寄存器窗口:显示当前所选线程的 CPU 寄存器内容
c.信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等
d.数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。
e.堆栈窗口:显示当前线程的堆栈。

2.使用方法

(1)查找可执行文件中所有字符串:在“反汇编窗口”单击鼠标右键,选择“查找”选项可查看可执行文件反汇编代码的“所有参考文本字串”
(2)修改某个内存地址的数据:
在“数据窗口”按“Ctrl+G”,可查找某个内存地址的值。
在“数据窗口”,选中要修改的数据,单击鼠标右键,选择“二进制”选项 的“编辑”项,可修改数据值。
在“数据窗口”,单击鼠标右键,选择“复制到可执行文件”选项,再选择 “保存文件选项”

3.常用快捷键

F2:设置断点,只要在光标定位的位置按F2键即可,再按一次F2键则会删除断点。

F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码。F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。

F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停。

F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。

CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。

ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。

Ctrl+F:查找字符

Ctrl+G:跳到制定代码

Enter:跟踪语句。

五.逆向分析并修改Hello World程序

5.1 源代码

#include"windows.h"
#include"tchar.h"
int_tmain(int argc,TCHAR *argv[]){
    MessageBox(NULL,_T("Holle World"),_T("www.baidu.edu"),MB_OK);
    return 0;
}

5.2编译出来的效果

5.3 用OllyDbg打开

 

 5.4 找到MessageBox()所在的位置就找到了需要调换的两句话

5.5 方法一

将界面上的“baidu”和“Helloworld 进行对调

将两条指令的地址Ctrl+E 进项对调

对调完了后 点击右键  copy to executable file -->ALL modificatons

在弹出的窗口里继续右键 选择Save file保存为新文件

5.6 方法二

将字符串在数据段的地址(注意地址的提取方式,大头还是小头)

可以在数据窗口里CTRL+G查找该地址

对选中的内容CTRL+E打开编辑窗口

编辑完了后,右键 选择copy to executable file

再用上一种方法同样的保存操作

5.7两者得到的结果是一样的

 六.思考与练习

6.1 代码如下

#include<stdio.h>
int main(int argc, char* argv[]) {
	printf("hello world");
	return 0;

6.2 操作同上,在ollbdg中打开文件并找到所在位置

 采用同上述方法二的操作

6.3 输出来就可以了

要在修改的exe 文件夹里打开cmd

 

 

 

总算完成了。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值