ilginç bir uygulama örneği

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:

ilginç bir uygulama örneği

Mesaj gönderen White Rose »

s.a.
Run-time anında bir program kendi içinden herhangi bir yerinden/adresinden string okuyabilir yada aynı yere string yazabilirmi ?
cevaplarınız içi teşekkürler.
assoft

Mesaj gönderen assoft »

Bu konuda hiç bir bilgiye sahip değilim ama okuma her halukarda yapılıyor zaten ama yazma için sanırım crc bilgisi olmazı lazım herhalde...
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

Nasıl Yani? biraz daha açarmısın?
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 »

yani diyelim ki
deneme.exe diye bir programınız var ve bu programla çalışırken programın herhengi bir yerinden farzedin ki 120850 bayt pozisyonundan 20 karakterlik bir string okutup, sonra buraya başka bir string yazdırıp kaydedeceksiniz, deneme.exe bu arada run-time olarak çalışıor olacak. Yani kendi kendinden binary olarak exe'sinden kayıt okuyup yine exe içine yaza
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Merhaba.
Okuma işlemi tamam da yazma işlemine OS izin vermez ki :?
Kolay gelsin..
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 »

okuma işlemi naıl olacak ? kod yazarsanız memnun olurum
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

bLue aLonE yazdı:Merhaba.
Okuma işlemi tamam da yazma işlemine OS izin vermez ki :?
Kolay gelsin..
Evet okuma olayını bende merak ettim... Fakat bildiğim kadarı ile okuma zaten windows veya işletim sistemlerinin kaynak görevi... Ve harici olacağını zannetmiyorum... :roll:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

İşletim sistemindeki kayıtli bir dosyayı BlockRead(...) ile okuyabilir, BlockWrite(...) ile de yazabilirsiniz. Fakat açık ve çalışır durumdaki bir dosyada bu işlemleri yapmak mantıklı değildir, işletim sistemi de buna izin vermez.. :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,

Kod: Tümünü seç

const
  degisken:string='irdakNiclayDeneme';

şeklinde bir değişken tanımlamışım.
Bir exe nin içindeki bir stringi aramak için bir imza bırakmışım.
Bizim asıl istediğimiz exe nin içinde Deneme değeri olsun.
Bunun için önce byte tabanlı dosyayı açıp önce okunanın i olup olmadığına bakacağız. Eğer i ise 15 defa daha okusun diyeceğiz. Sonra imzamız olan irdakNıçlay değerini arayacağız aradığımız bu ise ondan sonraki 6 karaktere bakacağız.
butona aşağıdaki kodu yükledim.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);

var
f:file of byte;
okunan:byte;
sayi:longint;
aranan:string;
i:integer;


begin

         Assignfile(f,'c:\silsup2\sifre.exe');
            filemode:=fmOpenRead  ;


           {$I-}
         Reset(F);
          {$I+}

                sayi:=0;
                aranan:='';


            while not eof(f) do

           begin
               seek(f,sayi);

             read(f,okunan);

              if chr(okunan)='i' then
                begin
                       aranan:=aranan+chr(okunan);

                    for i:=1 to 16 do
                       begin

                       inc(sayi);
                       seek(f,sayi);
                        read(f,okunan);
                         aranan:=aranan+chr(okunan);

                           end;

                  if copy(aranan,1,11)='irdakNiclay' then
                     begin

                              showmessage(copy(aranan,12,6));
                            exit;
                           end else
                              begin
                                aranan:='';
                                 dec(sayi,15);

                                end;

                end;





              inc(sayi);

           end;



  showmessage('dongu bitmiş');


end;


Yukarıdaki filemode:=fmOpenRead ; satırına dikkat edin.
o satır olmazsa exe dosyada arama yapamayız.
Butona tıkladığımda showmesage() ile bana Deneme değerini yazıyor.
Umarım istediğiniz böyle bir şeydir.

Ben de yazma işini merak ediyorum. Bilen hocalarımızı yazmaya davet ediyorum.
İyi çalışmalar.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Bir defasında exe'ye kendi kendini update edebilmesi için birşeyler yazmıştık, takla attırmak zorunda kaldık ki bahsettiğimiz gibi stabil bir çözüm de olmadı zira..Açık olan bi dosyaya zaten OS işaret koyuyor ve onunla harici bir işlem yapılmasını engelliyor (genel olarak tabii..).Ancak okuma işlemi için herhangi bir sorun çıkaracağını sanmıyorum..
vesper
Üye
Mesajlar: 78
Kayıt: 28 Tem 2005 08:23

Mesaj gönderen vesper »

http://www.mephzara.com/wiki/wiki_e.php ... DataStream

delphi 6 ile yapılmış player.exe oluşturulduktan sonra , creator.exe ile resim seçiyorsunuz, player.exe nin sonuna resmi yazıyor. Player exe kendisindeki resmi gösteriyor. Belki birilerinin işine yarar.
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şlar için teşekkür ediyorum

ofenX
kardeşimiz bir kod yazmış, ancak bu kod her defasında 1 katakter okuyor
ve dosyayı baştan aşağı okuduğunu düşünürseniz pek pratik çözüm olmuyor.
Ben çok alterenatif denedim ama gerek okuma ve gerekse yazma işini yapamadım, yazma işinin olmayacağı kesin fakat belki okuma konusunda
benim bilmediğim, başkalarının bildiği birşeyler olabilir diye düşünmüştüm.
Bu durumda başka bir programdan ilgili exe yi açıp okuma-yazma işlemi yapmak gerekiyor.
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 »

yeniden merhaba

http://www.delphiturk.com sitesinde exemod diye bir kod buldum
bu kod(unit) yukarıda bahsettiğim işi yapıyor.

yalnız benim istediğim ayrı bir şey var.
exe dosya içinde istediğimiz bir stringi table'deki locate örneğinde olduğu gibi hemen bulabilirmiyiz. Yani exe dosyayı baştan sona bayt bayt taramadan tek bir kod ile hemen bulabilirmiyiz.
Yoksa bayt bayt okuyup kontrol ettirmek pratik bir çözüm değil.
Cevapla