We don't display ads so we rely on your Bitcoin donations to 1KWEk9QaiJb2NwP5YFmR24LyUBa4JyuKqZ
Post date: Feb 7, 2011 8:26:22 PM
This delphi snippet, written by one of my best friends CrACKsMAN, details string patching; a simple method to add settings to an executable.
StringPatch.exe
program StringPatch;//CrACKsMAN//opensc.wsuses Windows;function Patch(Path, NewString, OldString: AnsiString): Boolean;var Handle : THandle; BRead, BWrote : Cardinal; Size, Offset : Cardinal; FileBuffer : AnsiString;begin Result := False; Handle := CreateFileA(PAnsiChar(Path), GENERIC_WRITE or GENERIC_READ, FILE_SHARE_WRITE or FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if Handle <> INVALID_HANDLE_VALUE then begin Size := GetFileSize(Handle, nil); SetLength(FileBuffer, Size); SetFilePointer(Handle, 0, nil, FILE_BEGIN); ReadFile(Handle, PAnsiChar(FileBuffer)^, Size, BRead, nil); Offset := Pos(OldString, FileBuffer); if Offset <> 0 then begin SetFilePointer(Handle, Offset -1, nil, FILE_BEGIN); WriteFile(Handle, PAnsiChar(NewString)^, Length(OldString), BWrote, nil); If Integer(BWrote) = Length(OldString) then Result := True; end; end; CloseHandle(Handle);end;begin Patch('Test.exe', 'CrACKsMAN patched this string :)', '##################################################');end.Test.exe
program Test;uses Windows;var Note : AnsiString = '##################################################';begin MessageBoxA(0, PAnsiChar(Note), 'StringPatch', 0);end.