ilginç bir uygulama örneği
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
ilginç bir uygulama örneği
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.
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.
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
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
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
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul
Merhaba,
ş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.
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.
Kod: Tümünü seç
const
degisken:string='irdakNiclayDeneme';
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;
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.
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
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..
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.
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.
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
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.
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.
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
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.
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.