Современные решения

для защиты Windows приложений

и восстановления исходного кода
АвтъA: ыDизвестен. Дат? ??бликации: 22.08.2004

Дь@авит? EXE файл ? свыФ ??ильEение ? за??стит? ег?




ПеревьC ? английскьB?: GPcH

1. Запустите бльIыM? ? создайте .rc-файл:

TESTFILE EXEFILE C:\Windows\Notepad.exe

(Проверьте ??авил??ъBть ??ти ? EXE файл?!)

2. СъFраыGте файл ??? myres.rc

3. С????илируйте ?то? файл ис????зу? brcc32.exe
(?? ъьходитс? ? ????? Delphi ? ??дпап?? bin) чть@? ????чить myres.res

4. С????руйт? myres.res ? ????? ? ??ьD??ьK.

5. В ??ду?? ъь??шите след??ще?:

CODE NOW!

var
Form1: TForm1;
NOTEPAD_FILE: string;

implementation

{$R *.DFM}
{$R MYRES.RES}

function GetTempDir: string;
var
Buffer: array[0..MAX_PATH] of Char;
begin
GetTempPath(SizeOf(Buffer) - 1, Buffer);
Result := StrPas(Buffer);
end;

// Extract the Resource
function ExtractRes(ResType, ResName, ResNewName: string): Boolean;
var
Res: TResourceStream;
begin
Result := False;
Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType));
try
Res.SavetoFile(ResNewName);
Result := True;
finally
Res.Free;
end;
end;

// Execute the file
procedure ShellExecute_AndWait(FileName: string);
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb := 'open';
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
begin
Ph := exInfo.HProcess;
end
else
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
end;

// To Test it
procedure TForm1.Button1Click(Sender: TObject);
begin
if ExtractRes('EXEFILE', 'TESTFILE', NOTEPAD_FILE) then
if FileExists(NOTEPAD_FILE) then
begin
ShellExecute_AndWait(NOTEPAD_FILE);
ShowMessage('Notepad finished!');
DeleteFile(NOTEPAD_FILE);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
NOTEPAD_FILE := GetTempDir + 'Notepad_FROM_RES.EXE';
end;





Комментарии

Добавил: dxp Дата: 16.02.2007

А можно как-нибудь сделать в делфи так, чтобы файл не сохранять на жесткий диск?


Добавление комментария


Ваше имя (на форуме):

Ваш пароль (на форуме):

Комментарии могут добавлять только пользователи,
зарегистрированные на форуме данного сайта. Если Вы не
зарегистрированы, то сначала зарегистрируйтесь тут

Комментарий: