-
-
《软件加密技术内幕》hying壳的一个BUG
-
发表于:
2004-12-19 14:58
4596
-
在FindFirstResADDR函数中,有一种情况没有考虑,就是如果没有资源怎么办?
FindFirstResADDR PROC
LOCAL FirstResAddr:DWORD
push edi
push esi
push ecx
mov FirstResAddr,7fffffffh
mov esi,PeHeadBase
assume esi : ptr IMAGE_NT_HEADERS
mov eax,dword ptr [esi].OptionalHeader.DataDirectory[2*SIZEOF IMAGE_DATA_DIRECTORY].VirtualAddress
mov esi,eax ;资源起点偏移
add eax,MapOfFile
mov edi,eax ;资源起点地址
....
如果没有资源,eax==0,所以此处少了一个判断,此函数中要加一个判断,返回的后,在调用此函数的地方7也要加一个判断即可。该怎么加大家应该知道吧。:D
我做了一个测试程序:
#include<stdio.h>
void main()
{
printf("Hello,World!\n");
getchar();
}
用vc6编译将没有资源,有兴趣的可测试一下。附近为编译好的测试程序。
附件:test.rar
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!