this is editor:
add in uses "madRes"
this guy will write some strings in EXE file
1) parameter: server fullpath
2) strings to write
------------------------------------------------Code:procedure WriteSettings(ServerFile: string; Settings: string); var ResourceHandle: THandle; pwServerFile: PWideChar; begin GetMem(pwServerFile, (Length(ServerFile) + 1) * 2); try StringToWideChar(ServerFile, pwServerFile, Length(ServerFile) * 2); ResourceHandle := BeginUpdateResourceW(pwServerFile, False); UpdateResourceW(ResourceHandle, MakeIntResourceW(10), 'SETTINGS', 0, @Settings[1], Length(Settings) + 1); EndUpdateResourceW(ResourceHandle, False); finally FreeMem(pwServerFile); end; end;
this guy will read written data from modified exe file
1) parameter: server's fullpath
usage of functions in editorCode:function ReadSettings(ServerFile: string): string; var ServerModule: HMODULE; ResourceLocation: HRSRC; ResourceSize: dword; ResourceHandle: THandle; ResourcePointer: pointer; begin ServerModule := LoadLibrary(pchar(ServerFile)); try ResourceLocation := FindResource(ServerModule, 'SETTINGS', RT_RCDATA); ResourceSize := SizeofResource(ServerModule, ResourceLocation); ResourceHandle := LoadResource(ServerModule, ResourceLocation); ResourcePointer := LockResource(ResourceHandle); if ResourcePointer <> nil then begin SetLength(Result, ResourceSize - 1); CopyMemory(@Result[1], ResourcePointer, ResourceSize); FreeResource(ResourceHandle); end; finally FreeLibrary(ServerModule); end; end;
---------------------------------------------------Code:var Settings: string; begin Settings := 'here String to write'; WriteSettings('here server.exe path', Settings); WriteLn(ReadSettings('server.exe')); // <--- this guy will read written data from server.exe end.
now code server
this guy will load written data
usage of this function in serverCode:function LoadSettings: string; var ResourceLocation: HRSRC; ResourceSize: dword; ResourceHandle: THandle; ResourcePointer: pointer; begin ResourceLocation := FindResource(hInstance, 'SETTINGS', RT_RCDATA); ResourceSize := SizeofResource(hInstance, ResourceLocation); ResourceHandle := LoadResource(hInstance, ResourceLocation); ResourcePointer := LockResource(ResourceHandle); if ResourcePointer <> nil then begin SetLength(Result, ResourceSize - 1); CopyMemory(@Result[1], ResourcePointer, ResourceSize); FreeResource(ResourceHandle); end; end;
here u can download full source and compiled .exe files tooCode:PROCEDURE somefuckedupproc (yowazzup; RockMeBaby) var buffer : string; begin buffer := LoadSettings; end.


LinkBack URL
About LinkBacks
Reply With Quote