binary/exe dosyada kayıt arama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

binary/exe dosyada kayıt arama

Mesaj gönderen White Rose »

s.a.
binary(exe) bir dosyada aynı tablede olduğu gibi locate gibi kayıt(string) arama nasıl olmalıdır.
seek ile mi ?, blokread ile mi ? read ile mi ? en kısa zamanda aradığımı nasıl bulabilirim
teşekkürler
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Le olması gerekir di galiba ...
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

kod yazarsanız memnun olurum
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

FileStream ın Seek metodu ile ancak bir ofset degeri vererek kaydırma yapabilirsiniz.
yani 1023. byten itibaren 10 byte oku ve string degiskenime ata gibi bir islem yapabilirsiniz.
siz exe icerisinde string arayacaksanız bastan baslayarak dosyayı tarayarak yapmanız lazım
ama tam da emin degilim. :?
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

BlockRead() ve BlockWrite() örneği

Kod: Tümünü seç

var
  FromF, ToF: file;
  NumRead, NumWritten: Integer;
  Buf: array[1..2048] of Char;
begin
  if OpenDialog1.Execute then     { Display Open dialog box }
  begin
    AssignFile(FromF, OpenDialog1.FileName);
    Reset(FromF, 1);	{ Record size = 1 }
    if SaveDialog1.Execute then      { Display Save dialog box}
    begin
      AssignFile(ToF, SaveDialog1.FileName);	{ Open output file }

      Rewrite(ToF, 1);	{ Record size = 1 }
      Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF))
        + ' bytes...');
      repeat
        BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
        BlockWrite(ToF, Buf, NumRead, NumWritten);
      until (NumRead = 0) or (NumWritten <> NumRead);
      CloseFile(FromF);
      CloseFile(ToF);
    end;
  end;
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

ilgilenen arkadaşlara teşekkür ediyorum ancak;
benim istediğim
exe içindeki aradığım stringi (diyelim ki 'MY PROG' diye bir string) en kısa sürede, döngü felan kullanmadan, dosyayı baştan aşağı taramadan nasıl bulabilirim. Yoksa ben onu hex editörünü açıp pozisyonunu bulup, bu pozisyonun numarasını yazarak hallediyorum, ama benim istediğim bunu kodla yapmak ve tek satırla halletmek. tabledeki locate yada find gibi yani.
Teşekkürler.
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

tabledeki locate yada find gibi yani.
find işlemiylede benzeri bir şey yapılıyorda sen farkında değilsin....
döngü felan kullanmadan, dosyayı baştan aşağı taramadan nasıl bulabilirim.
bu tamamen müneccimliğe girer :D
şaka bir yana dosyayı baştan aşagıya taratmadan bu işi yapman mümkün değil işin daha kısa sürmesi için de
-Exe formatlarını incelemen arama yapacağın alanı biraz küçültebilir
-BlockRead kullandığın Bufferın alanını büyük tutarak döngü saysını azalta bilirsin..
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

bk demişki

find işlemiylede benzeri bir şey yapılıyorda sen farkında değilsin....

yazda görelim kardeşim... hani nerde
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

locate in kodunu incelerseniz yada find in
sırayla arama yaptıgını goreceksiniz.
arkadasın bahsettigi sanırım bunu vurgulamak icin
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

yazda görelim kardeşim... hani nerde
ne desem bilmemki ..... gkimirti cevaplamış ama bir iki kelamda biz edelim

İster inanın ister inanmayın Delphi bir formunun üzerine bir iki component koyup bir iki satır yazıp çalıştırdığınız zaman çalışan kısım sizin yazdığınız bir
kaç satırdan ibaret değildir arkasında binlerce satır kod vardır
tabiri caizse biz hazıra konuyoruz o yazılan kodaları yönetiyoruz.
bu tabii ki gereken bir şey herkes herşeyi sıfırdan yazamaz ama kullanılan
kodların bir programcının az çok mantğını anlaması gerektiğini düşünüyorum.....
Delphi insanı tembelleştiriyormu ne?
tavsiyem algoritmalar veri yapılarıyla ilgili kitap karıştırmanız kod okumanız...
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

eğer kalbiniz kırıldıysa özür dilerim ancak siz yukardaki satırda

find işlemiylede benzeri bir şey yapılıyorda sen farkında değilsin....

demişsiniz, ben ona istinaden yazmıştım, vurgunuzu yanlış anlamışım
Kolay gelsin
Cevapla