首页
社区
课程
招聘
[原创]自己动手修复ImpREC的Bug
发表于: 2015-9-12 16:49 14591

[原创]自己动手修复ImpREC的Bug

2015-9-12 16:49
14591
    pushad									;保存环境
    lea eax, dword ptr ss:[eax+0x98]				;获取MZ头地址

    mov ecx, dword ptr ds:[eax+0x3C]
    lea edx, dword ptr ds:[eax+ecx]				;获得PE标志地址	IMAGE_NT_HEADERS
    										
    lea esi, dword ptr ds:[edx+0x18]
    xor ecx, ecx
    mov cx, word ptr ds:[edx+0x14]			
    add esi, ecx								;求得节表的首地址
    mov cx, word ptr ds:[edx+6]					;节表个数:edx+8
    imul ecx, 0x28							;求出当前的节表总大小
    add ecx, 0x28							;求出修复后的节表总大小
    add esi, ecx								;节表尾地址
    sub esi, eax								;节表尾减MZ头求出SizeOfHeaders
    mov dword ptr ds:[edx+0x54], esi				;复制SizeOfHeaders到Buffer			
    popad									;还原环境
    MOV EAX,DWORD PTR SS:[EBP+420]			;修复jmp覆盖的代码
    jmp 0042CA18

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
最新回复 (19)
雪    币: 152
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持一下,写得很好.这个是ImpRec的一个BUG,一般不容易触发.
2015-9-12 16:59
0
雪    币: 8201
活跃值: (2701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
详细讲解,虽看不懂,表示感谢
2015-9-12 17:16
0
雪    币: 6
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主分享的技术学习一下。
2015-9-12 17:58
0
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错啊,支持一个,又看到一未来大牛的产生过程,哈哈
2015-9-12 22:29
0
雪    币: 12321
活跃值: (5078)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
来学习了哟,多谢楼主分享
2015-9-12 22:46
0
雪    币: 155
活跃值: (132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不错PE ,对学习PE知识很有帮助
2015-9-13 14:49
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
~~~~~~~~~~~~~~~~~~~~
2015-9-13 21:19
0
雪    币: 209
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习了,这个功能非常实用。
2015-9-13 22:39
0
雪    币: 19
活跃值: (476)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主测试一下1.7版是否解决了你的问题

v1.6 FINAL (PUBLIC VERSION)
---------------------------

- Misc

        - Finally fixed the bug in the check for adding section (Thanks to Christoph)
2015-9-14 16:24
0
雪    币: 85
活跃值: (791)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
我又在网上下载了几个版本(1.7的),经测试好像都没有修复这个bug...请问你说的是那个版本能私密给我下载链接么
2015-9-14 23:49
0
雪    币: 19
活跃值: (476)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我这个就是1.7的,你测试一下,看历史记录1.6中已经修改过。
上传的附件:
2015-9-15 08:30
0
雪    币: 6525
活跃值: (3403)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
前几天我测试的时候,也是没发现这个BUG,无论是1.6还是1.7都是正常的
而且你说 "程序自带的自动查找IAT不准确" 在我这里也是正常的,IAT跟大小都是正确的

你脱壳的时候还用OllyDump修复了IAT
文中说 SizeOfHeaders 有 0x200 我这里只有 0xE0 大

inc2l_dump_.zip
这是我脱壳完的程序
上传的附件:
2015-9-15 08:59
0
雪    币: 287
活跃值: (583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
成长很大
2015-9-15 10:05
0
雪    币: 85
活跃值: (791)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
确实是我选了那个重建输入表,OD居然给我加了一个节表.
我估计是ImpREC没有读覆盖的那个文件内容,没有发现多了一个节就直接写进程里面的数据进去,所以就出错了

但是我用OD添加了dump_.exe的一个节数据,理论上应该不会跟用ImpREC修复的冲突吧.ImpREC忘了校对dump_.exe里面的节表区的大小了,直接写数据进去完事。我觉得还是要打个补丁,稍后再修改帖子

多谢指点...

我说“程序自带的自动查找IAT不准确” 是因为毕竟是软件查找的总会有些找不到的情况,所以我就自己找了...

还有我看了你的程序也是0x200,你所说的0xE0应该是选项头的大小吧.
2015-9-16 09:07
0
雪    币: 6525
活跃值: (3403)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
嗯,是我看错了
2015-9-16 10:19
0
雪    币: 129
活跃值: (53)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
17
lz科锐几月份毕业的,上次去有跟你聊过吗?
2015-9-17 11:24
0
雪    币: 85
活跃值: (791)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
应该是年底毕业吧...

请问您是?
2015-9-17 20:41
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
支持阿S~
2015-9-28 00:49
0
雪    币: 4928
活跃值: (967)
能力值: ( LV9,RANK:175 )
在线值:
发帖
回帖
粉丝
20
ImpREC我用着没问题呀(ImportREConstructor 1.7e)
这种壳直接用OllyDump重建输入表就行了,不用ImpREC也行Win7下用也正常打开
2015-9-28 10:03
0
游客
登录 | 注册 方可回帖
返回
//