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

MFC写的程序输入表的问题

2007-2-25 14:49
3903
我自己用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写的输入表有没有区别啊?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

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

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

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