Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako izvrsiti BILO KOJI fajl ???

[es] :: Pascal / Delphi / Kylix :: Kako izvrsiti BILO KOJI fajl ???

[ Pregleda: 2043 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Kako izvrsiti BILO KOJI fajl ???06.10.2004. u 02:56 - pre 207 meseci
Moracu malo detaljnije da pojasnim problem...
Pravim jedan protector za fajlove koji radi tako sto se posebno programce doda na pocetku nekog fajla, a fajl se enkriptuje. Kad se startuje taj fajl, startuje se programce (koje je na pocetku) koje trazi da se unese sifra i onda pomocu te sifre dekriptuje fajl (koji se nalazi na kraju fajla, iza programceta ).
E sad, ja ceo fajl u toku dekriptovanja zapisujem u MemoryStream. Moze li se nekako izvrsiti taj buffer koji se nalazi u MemoryStream ? Probao sam neke egzibicije sa CreateProcess, ali koliko vidim, on izvrsava samo executabilne fajlove, ne i druge (recimo, mp3), i to samo one koji su na hard disku. Ne mogu da koristim ShellExecute zato sto mi treba handle do procesa, da bi ga sa WaitForSingleObject cekao i posle zavrsetka izbrisao fajl...

Evo primera CreateProcess :

Code:

  FillChar(sInfo, SizeOf(TStartupInfo), 0);
  sInfo.cb := SizeOf(TStartupInfo);
  CreateProcess(nil, mstream.Memory, nil, nil, FALSE, NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo);
  WaitForSingleObject(pInfo.hProcess, INFINITE);
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
*.vdial.verat.net

Sajt: www.diy-fever.com


+1 Profil

icon Re: Kako izvrsiti BILO KOJI fajl ???06.10.2004. u 07:19 - pre 207 meseci
probaj sa ShellAPi-evom
Code:

function ShellOpenFile(hWnd : HWND; AFileName, AParams, ADefaultDir : string; Explore: boolean = False): integer;
var Act: PChar;
begin
  if Explore then
    Act := 'explore'
  else
    Act := 'open';
  Result := ShellExecute(hWnd, Act, pChar(AFileName), pChar(AParams), pChar(ADefaultDir), SW_SHOWDEFAULT );
  if Result <= 32 then
     raise Exception.Create('Error executing file!');
end;


Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Kako izvrsiti BILO KOJI fajl ???10.10.2004. u 15:10 - pre 207 meseci
Citat:
Ne mogu da koristim ShellExecute zato sto mi treba handle do procesa, da bi ga sa WaitForSingleObject cekao i posle zavrsetka izbrisao fajl


Elem, mene zanima da li je moguce da se izvrsi nesto sto se nalazi u MemoryStream ili ne ?
 
Odgovor na temu

Slavisa
Slavisa Dojcinovic
JKP Cistoca
Banjaluka

Član broj: 9861
Poruke: 44
*.teleklik.net.



Profil

icon Re: Kako izvrsiti BILO KOJI fajl ???10.10.2004. u 22:57 - pre 207 meseci
Treba ti CreateProcess() funkcija. Evo primjer koristenja:

Code:

procedure TForm1.Button1Click(Sender: TObject);
var
  StartupInfo : TStartupInfo;
  ProcessInformation : PROCESS_INFORMATION;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), 0);
  StartupInfo.cb := Sizeof(StartupInfo);
  CreateProcess('c:\windows\system32\notepad.exe', nil,
                nil, nil, FALSE, 0, nil, nil,
                StartupInfo, ProcessInformation
                );
  ShowMessage(IntToStr(ProcessInformation.hProcess));
end;


Kriptovani sadrzaj bi morao da dekriptujes u neki privremeni fajl pa da ga pokrenes.
Moguce je izvrsiti nesto sto ne nalazi u memoriji samo sto to u tvom slucaju ne bi radilo :)
Prvo, izvrsavanje ne mozes da zapocnes od pocetka tog strima vec od ulazne tacke programa sto moras da procitas iz PE zaglavlja. Takodje taj steam mora da pocinje na odredjenoj memorijskoj lokaciji (najcesce $00400000 to ti je ImageBase) sto takodje citas iz PE zaglavlja. Cak i kad bi ispunio sve gore navedene uslove opet to ne bi radilo jer bi morao da ucitas sve DLL-ove koje taj program koristi i da zatim zakrpis IAT tabelu.
Sve u svemu veoma komplikovano.

Slavisa
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Kako izvrsiti BILO KOJI fajl ???11.10.2004. u 05:58 - pre 207 meseci
OK...
Video sam da se sa SndPlaySound(....) moze reprodukovati zvuk koji se nalazi u memoriji pa zato pitam...
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kako izvrsiti BILO KOJI fajl ???

[ Pregleda: 2043 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.