首页
社区
课程
招聘
MFC写的程序输入表的问题
2007-2-25 14:49 3830

MFC写的程序输入表的问题

2007-2-25 14:49
3830
我自己用MFC写了一个程序(附件内),用来研究一下MFC程序的输入表信息,但是遇到一些问题:
用16进制编辑器打开程序
(1)3C偏移处的值为:00010000(0100h)
(2)数据目录中输入表的指针在PE文件头80偏移处.0100h + 80h = 180h
(3)转道180h看输入表指针.0C2A0000(2a0ch)
(4)用LordPE看程序的Section信息:
名称   V偏移    V大小    R偏移    R大小    标志
.rdata 00002000 00001094 00001400 00001200 40000040
发现磁盘偏移和内存偏移不相等,计算差值:VRK = 2000h - 1400h = c00h
后面要用到.
(5)前面(3)里面计算得到的输入表指针的内存偏移地址为:2a0ch
  文件偏移 = 2a0ch - c00h = 1e0ch
(6)于是在1e0ch处寻找IMAGE_IMPORT_DESCRIPTOR数组
<1>C42A0000 00000000 00000000 782D0000 40200000
<2>EC2C0000 00000000 00000000 BC2D0000 68220000
<3>8C2A0000 00000000 00000000 D42F0000 08200000
<4>502D0000 00000000 00000000 68300000 CC220000
<5>842A0000 00000000 00000000 74300000 00200000
<6>00000000 00000000 00000000 00000000 00000000 // 结束
(7)把地址全部翻转过来减去差值VRK
<1>1EC4 0000 0000 2178(MFC71.DLL)    1440
<2>20ec 0000 0000 21bc(MSVCR71.dll)  1668
<3>1e8c 0000 0000 23d4(KERNEL32.dll) 1408
<4>2150 0000 0000 2468(USER32.dll)   16cc
<5>1e84 0000 0000 2474(COMCTL32.dll) 1400
<6>0000 0000 0000 0000               0000
(8)IMAGE_IMPORT_DESCRIPTOR数组结构
IMAGE_IMPORT_DESCRIPTOR
{
Union {
        DWORD Characteristics;
        PIMAGE_THUNK_DATA OriginalFirstThunk;
  };
  DWORD TimeDateStamp;
  DWORD ForwarderChain;
  DWORD Name;
  PIMAGE_THUNK_DATA FirstThunk;
}
(9)下面是在第一个IID数组第一个字段偏移处取到的信息
7C080080 F2050080 87180080 DA0E0080 85180080 ....//后面很多不写了
问题来了~:
(1)每个双字的地址怎么不象<加密于解密>书上写的0000结尾的呢?
(2)MFC写的的程序的输入表和一般WIN32写的输入表有没有区别啊?

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

上传的附件:
收藏
免费 0
打赏
分享
最新回复 (5)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
笨笨雄 14 2007-2-25 15:36
2
0
只要不影响程序加载,你可以用PE头来保存你自己的数据
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whjh 2007-2-25 15:50
3
0
版主说的什么意思啊?我看不懂啊~555
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whjh 2007-2-26 10:07
4
0
怎么没有人帮帮我呢?
雪    币: 38382
活跃值: (19385)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2007-2-26 11:02
5
0
最初由 whjh 发布
问题来了~:
(1)每个双字的地址怎么不象<加密于解密>书上写的0000结尾的呢?
(2)MFC写的的程序的输入表和一般WIN32写的输入表有没有区别啊?
........

1)
不知你所说的双字是指哪个值

2)
区别就是多了MFC71.DLL,MSVCR71.dll等MFC库
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whjh 2007-2-26 11:09
6
0
看雪老大:
我说的双字就是我在(9)里面写的这些
7C080080 F2050080 87180080 DA0E0080 85180080
我看到书上写的XXXX0000 XXXX0000后面都是四个零,但是我找到的都是0080结尾的.所有的我看了几个其他的MFC程序都是这样子的.上面列出的这些指针应该就可以找到输入函数名,但这些是0080结尾的,文件中没有这样偏移的地址.
怎么办啊?
游客
登录 | 注册 方可回帖
返回