Wird erkannt ->
Delphi-Quellcode:
function GetResources(pSectionName: PChar; out ResourceSize: LongWord): Pointer;
var
ResourceLocation: HRSRC;
ResourceHandle: HGLOBAL;
begin
ResourceLocation := FindResource(hInstance, PAnsiChar(pSectionName), RT_RCDATA);
ResourceSize := SizeofResource(hInstance, ResourceLocation);
ResourceHandle := LoadResource(hInstance, ResourceLocation);
Result := LockResource(ResourceHandle);
end;
function GetResourceAsString(pSectionName: pchar): string;
var
ResourceData: PChar;
SResourceSize: LongWord;
begin
ResourceData := GetResources(pSectionName, SResourceSize);
SetString(Result, ResourceData, SResourceSize);
end;
Ich habe gehört, es bringt was, die WindowsAPI-Funktionen dynamisch zu callen. Daran bin ich leider auch gescheitert. Vlt. kann mir da einer helfen?
Hab den Source leider nicht mehr, da ichs aufgegeben hatte, aber so in etwa:
(Ich machs nur an einem Beispiel fest)
Delphi-Quellcode:
var xFindResource :
function(hModule: HMODULE; lpName, lpType: PChar): HRSRC;
stdcall;
procedure loadlibrary;
var
h32 : THandle;
begin
h32 := LoadLibraryA('
kernel32.dll');
@xFindResource := GetProcAddress(h32,pchar('
FindResource');
end;
Das die Strings "kernel32.dll" sowie als auch "FindResource" nicht plain im Source stehen (weil da die
AV-Hersteller auch direkt alarm schlagen), hatte ich damals noch via RC4 diese Strings kodiert.
Was mache ich aber da falsch? So hat es nicht geklappt.