首页
社区
课程
招聘
[求助]PE文件结构的一个小问题
发表于: 2007-7-7 17:47 5166

[求助]PE文件结构的一个小问题

2007-7-7 17:47
5166
IMAGE_DOS_HEADER MyDosHeader;
        IMAGE_NT_HEADERS MyNtHeader;
        LONG e_lfanew;
        WORD e_magic;
        FILE *file;
        file=fopen("c:\\Client.exe","r+b");
        fread(&MyDosHeader,sizeof(IMAGE_DOS_HEADER),1,file);
        e_magic=MyDosHeader.e_magic;
        e_lfanew=MyDosHeader.e_lfanew;
        if(e_magic!=IMAGE_DOS_SIGNATURE)  //判断 ms-dos header
        {
                printf("Error\n");
                fclose(file);
        }
        else
        {
                fseek(file,e_lfanew,SEEK_SET);  // 从 pe 头开始读取
                fread(&MyNtHeader,sizeof(IMAGE_NT_HEADERS),1,file);
                Si=MyNtHeader.Signature;
                if(Si==IMAGE_NT_SIGNATURE)  //判断是否是pe文件
                {
                        fseek(file,(e_lfanew + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER)),SEEK_SET);
                        fread(&MyOptional,sizeof(IMAGE_OPTIONAL_HEADER32),1,file);
                        printf("表的偏移量%08x\n",MyOptional.DataDirectory[0].VirtualAddress);
                        printf("表的大小%04x\n",MyOptional.DataDirectory[0].Size);
                }
                else
                    fclose(file);

   为什么得不到  表的偏移量 ~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
看了一下,没看到你哪里有错,不过,没看到你哪里定义有"Si"和"MyOptional"的变量?还有,我看你读取的表是程序的输出表一项,而你读取的是exe程序,不是Dll文件,exe一般是没有输出表的,所以你读取输出表那一项一般都是空的,没有数值的。
2007-7-7 19:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哦..知道了 我是跟着 http://www.pediy.com/bbshtml/BBS6/pediy7006.htm 写的 
呵呵  Si 是个dword 类型 MyOptional  是IMAGE_OPTIONAL_HEADER32的 结构体
2007-7-7 20:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢了。 . 改成了dll的文件 就能得到 输出表的偏移地址了
2007-7-7 20:03
0
游客
登录 | 注册 方可回帖
返回
//