24,32 → 24,41 |
|
#include "file_compat.h" |
|
Boolean readPARMresource(HMODULE hm,char **reason,int readobfusc){ |
Boolean readPARMresource(HMODULE hm,char **reason){ |
Boolean res = false; |
Handle h; |
|
if( !(h = Get1Resource(PARM_TYPE,PARM_ID_NEW)) |
&& !(h = Get1Resource(PARM_TYPE,PARM_ID_OLD)) |
&& readobfusc |
&& ((h = Get1Resource(OBFUSCDATA_TYPE_NEW,OBFUSCDATA_ID_NEW)) || |
(h = Get1Resource(OBFUSCDATA_TYPE_OLD,OBFUSCDATA_ID_OLD))) ){ |
if( (h = Get1Resource(PARM_TYPE,PARM_ID_NEW)) || |
(h = Get1Resource(PARM_TYPE,PARM_ID_OLD)) ) |
{ |
HLock(h); |
if(GetHandleSize(h) == sizeof(PARM_T)) { |
deobfusc((PARM_T*)*h); |
gdata->obfusc = true; |
res = readPARM(*h, &gdata->parm, reason, 0 /*Mac format resource*/); |
gdata->obfusc = false; |
ReleaseResource(h); |
} else { |
// Obfuscated PARM has wrong size. Should not happen |
// PARM has wrong size. Should not happen |
gdata->obfusc = false; |
ReleaseResource(h); |
return false; |
} |
} |
if(h){ |
else if( ((h = Get1Resource(OBFUSCDATA_TYPE_NEW,OBFUSCDATA_ID_NEW)) || |
(h = Get1Resource(OBFUSCDATA_TYPE_OLD,OBFUSCDATA_ID_OLD))) ) |
{ |
HLock(h); |
if(GetHandleSize(h) == sizeof(PARM_T)) { |
deobfusc((PARM_T*)*h); |
res = readPARM(*h, &gdata->parm, reason, 0 /*Mac format resource*/); |
gdata->obfusc = true; |
ReleaseResource(h); |
} else { |
// Obfuscated PARM has wrong size. Should not happen |
gdata->obfusc = false; |
ReleaseResource(h); |
return false; |
} |
} |
if (!res) { |
gdata->obfusc = false; |
} |
61,7 → 70,7 |
short rrn = FSpOpenResFile(&sfr->sfFile,fsRdPerm); |
|
if(rrn != -1){ |
if(readPARMresource(NULL,reason,0)) |
if(readPARMresource(NULL,reason)) |
res = true; |
CloseResFile(rrn); |
}else |