首页
社区
课程
招聘
[求助]读{ah007翻译的“PE文件格式”1.9版 }疑问,请PE老鸟指点迷津呀
发表于: 2009-4-4 03:54 4027

[求助]读{ah007翻译的“PE文件格式”1.9版 }疑问,请PE老鸟指点迷津呀

2009-4-4 03:54
4027
原始第一个换长        第一个换长
            |                    |
            |                    |
            |                    |
            V                    V

            0-->    函数1     <--0
            1-->    函数2     <--1
            2-->    函数3     <--2
            3-->    foo       <--3
            4-->    mumpitz   <--4
            5-->    knuff     <--5
            6-->0            0<--6      /* 最后的RVA是0! */

图当中的名字就是尚未讨论的IMAGE_IMPORT_BY_NAME(输入名字)。每一个都是一个16位的数字(一个提示)跟着一些数量未定的字节,它们都是以0结尾的、输入符号的ASCII码名字。
提示就是指向输出DLL文件名字表的索引(参见上面的输出目录)。那个索引中的名字将被一一尝试,如果没有相符的,再使用二进制搜索来寻找名字。

------------------------------------上述为原文引用-----------------------------------------

红色标注的部分,和我在<winnt.h>找到的IMAGE_IMPORT_BY_NAME定义不符呀?

typedef struct _IMAGE_IMPORT_BY_NAME {
    WORD    Hint;
    BYTE    Name[1];    // 这个地方放不下字符串呀?
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 53
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我自己有点想通了,其实函数名字符串就是向数组“Name”的地址写入就是了,反正是在硬盘上,即使加载到内存,也是有对应的空间的。

只会写程序,思维定势了。

不知道老鸟,我说的对不对~~
2009-4-4 05:10
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
3
BYTE    Name[1];这个地方是利用了c语言的“豪放”性,即不检查数组是否越界。运行的时候可以任意伸缩。微软的头文件很多都是这样写的。
2009-4-5 10:41
0
游客
登录 | 注册 方可回帖
返回
//