能力值:
(RANK:350 )
|
-
-
2 楼
看PE结构。
http://bbs.pediy.com/upload/bbs/unpackfaq/ARTeam%20PE_appendix1_offsets.htm
文字描述:
http://bbs.pediy.com/showthread.php?t=61497
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
没想到坛主居然会光顾新兵论坛!
论坛中有pe格式的文献,3c不是算的,是规定的,那里存放pe签名的offset
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我一直很激动的。。。
我向知道那个pe的rva和直接用ultraedit32打开看到的东西,怎么直接对应。。。
我是写程序输出的。。。
0x3c 后的两个字符是PE
0x3d输出的怎么跑到文件开始的地方去了。。。这个地方我很模糊。。。
basP= (unsigned char*)lpMemory ;
for(int j = 0; j < 2; j++)
{
printf("%x\n",basP[j]);
}
printf("\n");
curP=0x3d+basP;
curP=(unsigned char*)((DWORD)*curP + (DWORD)lpMemory);
//printf("%x",(DWORD)lpMemory);
for(int j = 0; j < 0x10; j++)
{
printf("%x\n",curP[j]);
}
curP文件指针的当前位置
lpMemory 是内存映射后的基址。。。
给我小菜说说问题出哪了吧
|
能力值:
(RANK:410 )
|
-
-
5 楼
你似乎搞错了吧?PE结构中的0x3C是IMAGE_DOS_HEADER结构中的e_lfanew成员偏移地址,并不是'PE'的rva偏移地址。e_lfanew成员保存着的才是'PE'结构的rva偏移。
PIMAGE_DOS_HEADER pIDH;
PIMAGE_NT_HEADERS pINH;
pIDH = (PIMAGE_DOS_HEADER)lpMemory;
pINH = (PIMAGE_NT_HEADERS)((DWORD)pIDH->e_lfanew + (DWORD)pIDH);
printf("%s\n",(char*)&pINH->Signature);
|
能力值:
( LV12,RANK:210 )
|
-
-
6 楼
貌似你加了两次lpMemory !
curP=(unsigned char*)((DWORD)*curP + (DWORD)lpMemory);
你把这一句注释起来看看`~~
或者把:
curP=0x3d+basP;
改成:
curP=0x3d;
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
什么也不说了 眼泪哗哗的。。。。谢谢大家。。。我会更加努力的。。。
|
|
|