[ Passwd @ 24.08.2005. 15:06 ] @
Ovako, nesto pokusavam napravit al ne znam kako..
Uglavnom kako .exe fajl ucitati (ne pokrenuti) vec ga ucitat i rastavit na bitove/bajtove!

Znaci ako postoji neki fajl proba.exe, program ga ucita kao:

001910128902109289743909098039032823782848040284787482

Tako nesto!!

Znam da je malo glupo al je potrebno!

Unaprijed zahvalan...
[ Passwd @ 24.08.2005. 17:13 ] @
Dosta hitno
[ Burgos @ 24.08.2005. 17:59 ] @
http://www.experts-exchange.co...nguages/Delphi/Q_21318238.html
[ Passwd @ 25.08.2005. 12:43 ] @
Hm..evo koda:

Code:

procedure TForm1.Button1Click(Sender: TObject);
var f:file;
     zn:char;
     kod:string;
begin
assignfile(f,'c:\neki_program.exe');
kod:='';
while not eof(f) do
begin
blockread(f,zn,1);
kod:=kod+zn;
end;
memo1.text:=memo1.text+kod;
end;


I javlja mi ovu gresku kad stisnem button : I/O error 103..u cem je problem??
[ Toyo @ 25.08.2005. 13:17 ] @
Stavi reset iza assign
[ Passwd @ 25.08.2005. 13:26 ] @
Eh, sada javlja access violation in module....
[ Toyo @ 25.08.2005. 15:24 ] @
A koja ti je duzina exe fajla koji ucitavas?

Sigurno je veca nego duzina stringa. Moras da kontrolises koliko podataka smeju maksimalno da se ucitaju. Znaci nesto ovako:

duzina:=0;
while not eof(f) and (duzina<max_duzina_stringa) do
begin
inc(duzina);
read(f,ch);
...
end;

najbolje ti je nesto ovako (pisao sam napamet, pa mozda ima gresaka):
Code:

var 
 niz:array[1..maxduz] of byte;
 f:file of byte;
begin
 assignfile....
 reset..
 if ioresult=0
 begin
  duzina:=min(filesize(f),maxduz);
  blockread(f,niz,duzina);
  closefile(f);
 end;
end;


[Ovu poruku je menjao Toyo dana 25.08.2005. u 16:31 GMT+1]
[ Bojan Kopanja @ 25.08.2005. 17:03 ] @
Za proveru IOResulta mors da odradis isto to sto je rakao Toyo, samo stavi kod izmedju na kome program moze da "pukne" {$I+} i {$I-} jer ce svejedno puci ako ne ugasis prvo ovu kompajlersku direktivu!
[ Passwd @ 25.08.2005. 18:28 ] @
Heh, probao sam dodati samo closefile(f) [zaboravio sam bio na to] i umjesto f:file;
stavio sam f:file of byte; ,te sad program radi bez greske , ali svaki fajl koji ucitam u memo text ispise "MZP"...????
[ Passwd @ 25.08.2005. 19:09 ] @
bit ce da treba nesto trece, naime trebam metodu s kojom pravi anti-virusi otvaraju datoteke i tako ih "rastave" na bitove i onda ako se neki niz bitova poklopi sa nizom bitova kakav ima neki virus, to je taj virus

jednostavno, al me evo malo cima
[ Toyo @ 25.08.2005. 20:08 ] @
Pa ne bih rekao da je bas tako jednostavno.Fajl koji proveravas moze da bude dugacak i 1GB pa moras na sve da budes spreman. Znaci ucitavas delove fajla u memoriju i sve dok ne dodjes do kraja, a u tom memorijskom bloku gde si ucitao deo fajla, proveravas da nema virusa, samo mora da se pazi na slucaj kada se ne ucita ceo virus u blok nego je on negde na sredini izmedju 2 bloka.

Ako je naprimer duzina bloka 30000, a duzina virusa 600, ti ucitas 30600 bajtova a poredis samo prvih 30000 a zatim ako nema virusa ucitas sledecih 300600 pocevsi od 30000-e pozicije u fajlu (mora da se vrati pokazivac u fajlu za 600 nazad).