首页
社区
课程
招聘
[旧帖] [求助][求助]DOS头重复添加了?为啥还是能读取输入表 0.00雪花
发表于: 2010-12-3 12:57 3075

[旧帖] [求助][求助]DOS头重复添加了?为啥还是能读取输入表 0.00雪花

2010-12-3 12:57
3075
这里imagebase(表示DOS头) 是不是重复添加了 还是后面 明明pNtHeader已经加入了Imagebase (DOS头)但是后面确还是有加入imagebase  但是运行起来却是正确的

        PBYTE ImageBase;
        PIMAGE_THUNK_DATA r;   
        PIMAGE_NT_HEADERS pNtHeader;   
        PIMAGE_IMPORT_DESCRIPTOR pImport;   
        //取得DOS头基址
        ImageBase=(PBYTE)GetModuleHandle(NULL);//0x400000
       
        //PE头=ImageBase+[ImageBase+3c]
        pNtHeader = (PIMAGE_NT_HEADERS) (ImageBase + ((PIMAGE_DOS_HEADER) ImageBase)->e_lfanew);   
       
        //IMAGE_DIRECTORY_ENTRY_IMPORT值为1 表示import tabale
       
        pImport = (PIMAGE_IMPORT_DESCRIPTOR)
                (ImageBase + pNtHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Imagebase是基址
2010-12-3 13:27
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有重复加,DataDirectory数组中导入表的地址,以及后面的函地址都是相对地址,是需要加ImageBase才能找到的。
2010-12-3 14:06
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
明白了谢谢 0x42a0000x42a000
2010-12-3 14:25
0
游客
登录 | 注册 方可回帖
返回
//