pe文件的Import table导入表的手工修复

一、实验目的:

        实验提供了一个不能正常运行的程序,如果在正常运行的情况下,程序的功能是弹出一个messagebox,然后正常退出。要做的,是通过排查错误,找到问题所在,修改程序,使其正常运行。
 

二、实验步骤:

        1.通过OD(olly debug) 和 stud_pe工具查看这个程序的十六进制

        2.修复INT(Import Name Table)表和IAT(Import Address Table)表

        3.修复扩张header中的directory部分

三、具体操作:

最开始打开这个exe文件,打开失败,出错了,需要找到错误,并且进行修复:

 

1.使用OD查看这个程序的时候,发现JUMP指令的目标地址处都是空的

 可以看到402008位置的数据都是0

之后,使用stud_pe进行查看的时候,发现,Import Table都没有找到,里面的RVA 和 size数据都是空的

 ​​​​​​

 

2.利用stud_pe打开这个程序,然后,找到INT表和IAT表进行填充

 (1)先确定各个字段的数值:

 (2)然后在这个位置进行填写:

填写后的结构:

part1:第一行,就是IAT表,里面分别是2个dll的各自的1个函数,第一个kernel32.dll中的exit函数的address是2076,占据4字节,然后1个全0的4字节作为这个dll的结束,第二个是user32.dll中的MessageBoxA函数,是205c,占据4个字节,然后是全0的4字节作为这个dll的结束。

这个,好像就是那个什么original First Thunk

part2: INT表的完全,这个INT表一共有3个20字节的内容,第三个全0的20字节作为结束标志

先来完成kernel32.dll的IID。第一个4字节,是关于调用的函数的INT地址,也就是exit函数字符串的RVA。查表得到204c。第4个4字节是kernel32.dll的RVA,查表得到为2084,最后一个4字节是exit的IAT,查表得到为2000。

part3:还有1个和 上面Original First Thunk相同的 First Thunk:

就是最后的16字节

 

3.最后,需要填入 Import Table部分的那8个字节的数据:

注意:Import Table在扩展头中一共占据8个字节的内容,前4个字节就是第一个INT的起始字节RVA,后4个字节就是总共的这3个INT占据的字节数:

这里分别是2010 和 003c

 

4.最后查看修复结果:

 修复成功,芜湖~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值