首页
社区
课程
招聘
[求助]ImportREC_fix的问题
发表于: 2006-12-16 18:48 7850

[求助]ImportREC_fix的问题

2006-12-16 18:48
7850
昨天,本人在给一个软件脱壳、修复、优化以后,无意中发现了一个奇怪的问题。问题出在用ImportREC_fix查找输入表上。如下图:



我们看到,ImportREC_fix找到了28个模块 和 830个输入函数。
但是,事实上并不是这样的。
程序中的输入表应该是14个模块 和 415个输入函数。也就是说,正好多了一倍。我查了一下,ImportREC_fix确实列出了完全一样的两份输入函数表。

接下来,我用其他PE工具察看这个程序发现输入表的结构如下图:



上图是用Stud_PE 2.2.0.5找到的结果。确实应该是14个模块 和 415个输入函数。为了进一步确认结果,我又手动的用Hex编辑器察看程序,发现确是只有14个模块 和 415个输入函数。

个人分析:
我想,出现这种现象也许有两个原因。
1. 我的ImportREC_fix有问题。我马上测试加载其它程序。但是,其他程序都没有出现多出一份输入表的问题。估计我的ImportREC_fix应该是没问题的才对。
2. 如果问题不是出在ImportREC_fix上,那么很可能是处在这个程序本身上了。
可是,我用16进制工具察看输入表确实是14个模块 和 415个输入函数啊?!而且,可以保证的是,程序完全运行正常。

那么问题到底出在哪里呢???
为什么ImportREC_fix却多出了一倍呢?
请教看雪的朋友们帮助解答!谢谢!

程序已上传,见10楼

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
将 IAT树文件 用附件传上来看看
2006-12-16 19:30
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
最初由 kanxue 发布
将 IAT树文件 用附件传上来看看


好的,已经来了。
文件有点长。所以没法直接贴出来,见附件!
上传的附件:
2006-12-16 19:49
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
是那个程序的问题,他可能多映射了一份输入表
2006-12-16 21:08
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
最初由 skylly 发布
是那个程序的问题,他可能多映射了一份输入表


Maybe!
Please tell me how to make a correction about this problem. Thanks a lot!
2006-12-17 01:03
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
我的上帝!
奇怪的事情发生了。
这是我在win2000的机器上得到的结果:



完全没有问题,难道是XP出的问题?
看雪兄在测试的时候也出了一些问题,估计也是XP,真是没想到。
但究竟是什么原因引起的?不要告诉我去问比尔盖斯 XD
2006-12-17 01:19
0
雪    币: 268
活跃值: (159)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
据我估计你连续两次按下get imports按钮
2006-12-17 22:09
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
最初由 eunt 发布
据我估计你连续两次按下get imports按钮


我可以肯定的告诉你我绝对没有连按两次get imports.因为这并不是测试一次得到的偶然结果,而是测试了n次(n>15)的结果。而且kanxue兄也亲自测试过了,他那边得到的结果也有问题。

虽然,这并不会影响程序的运行。不过出于技术研究的角度考虑,我希望把他拿出来和大家讨论一下,希望能找到原因,并期望能找到解决的方法。

期待着大家的回复。
2006-12-18 21:53
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
昏倒!才一天时间埋在第二页了。XD
顶上来
2006-12-20 01:01
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
10
想想还是把程序上传上来比较好!也方便大家测试,否则有点纸上谈兵的感觉。
上传的附件:
2006-12-20 01:05
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
11
是你脱壳时查找输入表的问题,
imprec自动查找的输入表不一定准确,所以最好是手动确定范围。
你win2000的机子上的输入表范围是正确的
xp的机子上有一大段输入表是无效的。

看看我弄过的,能运行不?
上传的附件:
2006-12-20 09:58
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
12
楼上的朋友发的文件能运行,但问题依旧在!
这和我传上来的文件显示结果一模一样。

我可能没有解释清楚我的提问。
我没有说脱壳遇到了什么问题。因为这个壳很简单,脱壳很成功,而且脱壳修复后也完全可以运行。
我们要研究的也不是脱壳后怎样修复输入表.
更不是脱壳后该如何优化,虽然我上传的文件是优化前的版本,这是为了能够更容易的发现各种问题所在。
我们真正要讨论的问题是:
为什么程序在XP的操作系统下映射了两份输入表?

为了进一步解释清楚问题的关键。请看下图:

  

(为了显示出所有信息,我修改了Import_REC的界面。)
这是在我的Winxp上运行的结果。IAT的RVA和SIZE都是IAT AutoSearch自动检测的结果。
请注意Imported Functions Found列出的输入函数列表。
首先,我们看到这些都是有效的信息,因为每项都是Valid:Yes
其次,我们看到,红色框框 和 蓝色的框框是两份完全一样的输入表。

下面,我们再来看看同样的程序在win2000下显示的结果:



对比一下两幅图,看出问题了吗?
同样的程序,同样是IAT AutoSearch自动检测,同样都是有效的输入表,但结果却并不一样。
2006-12-21 03:53
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
能不能找个win98试试,再找个win2003试试,以便确认是winxp的问题。
我使用的是XP,和你的结果是一样的。
2006-12-21 22:19
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
14
楼主你的程序在我的机子上的输入表前半段很多都是无效的
2006-12-21 22:28
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
最初由 xtwokok 发布
能不能找个win98试试,再找个win2003试试,以便确认是winxp的问题。
我使用的是XP,和你的结果是一样的。


在Win98和2003下测试,我这里式不太可能了。
还是留给看雪的朋友们帮忙测试吧
2006-12-21 22:32
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
16
最初由 skylly 发布
楼主你的程序在我的机子上的输入表前半段很多都是无效的


这一点我也很奇怪,因为我的机子上两份输入表就如图上看到的那样,全都是有效的。
kanxue兄测试的时候也是第一份输入表中有点问题。
根据win2000下测试的结果,我估计真正起作用的输入表是第二份,也就是9C7E0后面的部分。如果你用的也是XP的话,就现阶段得到的情况来看,我只能说,都是XP惹的祸!
2006-12-21 22:39
0
游客
登录 | 注册 方可回帖
返回
//