-
-
[求助]13章静态脱壳光盘代码问题
-
发表于:
2008-8-22 21:38
4382
-
316行
//文件大小检测
//有问题,循环检测没啥意义
PIMAGE_SECTION_HEADER ps = psbase;
dwProbeSize = 0;
for (int i = 0; i < ph->FileHeader.NumberOfSections; i++)
{
if (ps->PointerToRawData >= dwProbeSize)
dwProbeSize = ps->PointerToRawData + ps->SizeOfRawData;
};
这个循环个人感觉应该加上 ps++; 这句,不知对否。
i
void *RvaToPointer(void *pMap, DWORD Rva)
{
int i = IndexOfRva(pMap, Rva);
if (i < 0)
{
if (i = -2) return NULL;
return ((BYTE *)pMap + Rva); //i=-1
}
else
{
PIMAGE_DOS_HEADER pd = (PIMAGE_DOS_HEADER)pMap;
PIMAGE_NT_HEADERS ph = (PIMAGE_NT_HEADERS)((BYTE *)pMap + pd->e_lfanew);
PIMAGE_SECTION_HEADER ps = (PIMAGE_SECTION_HEADER)((BYTE *)ph + sizeof(IMAGE_NT_HEADERS));
ps += i;
return ((BYTE *)pMap + ps->PointerToRawData + Rva - ps->VirtualAddress);
};
}
这个函数,i=-1时,文件什么情况下会这样啊,还有效么?
另外最后一句返回为什么写成这样?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课