逆向工程实验四

【实验目的和要求】

在理解PE文件以及壳的工作原理基础上,对目的PE文件进行处理,增加节,并写入符合加密壳功能的代码,修改PE文件入口地址、修改节属性,达到加密壳的功能。

【实验工具】

OllyDBG、PEditor、WinHex等。

【实验原理和步骤】

模拟壳的工作

初始PE文件的 RVA 与 FOA 相同,使得模拟的时候可以省去各种地址转换的问题。本实验的模拟工作将会在该文件上进行模拟。以下分析、处理基于EnPE.exe文件。

① 对原始可执行文件RawPE.exe的代码节进行加密,得到EnPE.exe(已完成);

密码算法:异或;密钥0XCC,与原始可执行文件RawPE.exe比较,分析加密了几个字节?

增加两节

② 增加节(已完成);与原始可执行文件RawPE.exe比较,增加了几个节,该节大小是多少?

原始可执行文件的节表为0003,修改后为0004,增加了一个节;该节的大小是1000

 

③ 修改代码节的属性与程序的入口点;

在PE ditor中修改入口点

使用PE来修改代码节的属性,鼠标点击sections,然后找到.text,右键,点击edit section,修改Characteristics,将它改成可读、可写、可执行,00000020h+20000000h+40000000h+80000000h=E0000020h,然后保存。

 

知识点:节的属性问题

关于文件属性:

标志(属性块)常用特征值对照如下所示:

[00000020h] :包含可执行代码;a

[00000040h]:该块包含已初始化的数据;b

[00000080h]:该块包含未初始化的数据;c

[20000000h]:该块可执行;d

[40000000h]:该块可读;e

[80000000h]:该块可写;f

代码节的属性一般为60000020H,也就是可执行、可读和"节中包含代码"(a+d+e);

数据节的属性 一般为C0000040H,也就是可读、可写和"包含已初始化数据"(b+e+f);

而常量节(对应源代码中的.const段)的属性为40000040H,也就是可读 和 "包含已初始化数据";

那么为了达到加壳后能正常运行,EnPE.exe的.text节的属性是什么?

知识点:入口点

为了达到加壳后能正常运行,EnPE.exe入口点应改为什么?

改为0x00004000

④ 在增加的节中写入解密代码。

参照课本P160 代码,解释代码作用;

在OD中打开保存好后的文件,打开后如下图所示,发现OD已经停在入口地址为0x00404000处,表示修改成功了

 

在新的入口点出添加如下代码:

 

将保存好的拉到pe修改

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值