reg dosyasını gömüp çalıştırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
semenderip
Üye
Mesajlar: 42
Kayıt: 04 Nis 2007 03:57

reg dosyasını gömüp çalıştırma

Mesaj gönderen semenderip »

s.a arkadaşlar
benim yapmak istediğim şey oluşturdugumuz exeye reg dosyasını gömerek buna baglı bir buton atayarak o butona tıkladıgımızda otomatik olarak rege kayıt yapması ben programa regsitry degeri yazmak istemiyorum çünkü gömecegimiz reg dosyası boş olacak ve başka bir programdan ben oraya yazma işlemi yapacagım..Şimdi reg dosyasını rese nasıl gömerim ve projemdeki butona tıkladıgımda nasıl kayıt yaptırırım proyedeki butona nasıl baglarım şimdiden teşekkür ederim cevap verenede vermeyede
DaNGeR_HaCKeR
Üye
Mesajlar: 13
Kayıt: 22 Eki 2006 11:33

Mesaj gönderen DaNGeR_HaCKeR »

Devamlı kullandığım bir kodu yazacağım;

Kod: Tümünü seç

procedure regedit();
 var
reg: TRegistry; //Tregistry 'ı değişken kullanarak kısaltıyoruz
hedef: string; // Register 'e değer ekleyeceğimiz hedefi belirtmek için değişken kullanıyoruz.
begin

{ Kod Başlıyor }
hedef:= 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\'; //Buraya Hedefi Belirliyoruz
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE; //Yönetimine girilecek anahtarı giriyoruz 
reg.LazyWrite := false;
reg.OpenKey(hedef,false); // Anahtarı Açıyoruz
reg.WriteString('Shell','Explorer.exe'); //Anahtara değeri ekliyoruz
reg.CloseKey; { Anahtarı kapıyoruz }
reg.free; {Anahtarı kapıyoruz}
end;
Ben yukarıdaki kodu bir procedure halinde yazdım aslında fonksiyonda olabilirdi.Kullanımını bilmiyoruzsan

Kod: Tümünü seç

Bir buton yada her hangi bir onclick action ı olan bir item(button,label vs...) koy ve regedit; yaz. Bu kodu direk buttona da ekleyebilirsin procedure regedit(); 'ti silerek.
Umarım yardımcı olmuşumdur ;)
DaNGeR_HaCKeR
Üye
Mesajlar: 13
Kayıt: 22 Eki 2006 11:33

Mesaj gönderen DaNGeR_HaCKeR »

Yanlış anlamış olabilirim.Eğer kodları kullanarak program üzerinden regedit'e kayıt yapmak istemiyorsan;
1- Bir adet memo oluştur memo yu nasıl yapmak istiyorsan öyle yap ve memo1.visible:= false; yap sonrada butona memo1.lines.savetofile('Abcd.reg'); kodunu ekleyerek olayı bilir.
2- Res olayını kullanabilirsin. Exe içine exe gömmek gibi bir anahtar kelime seçip bu olayı sanırım forumda bulabilirsin ;)
semenderip
Üye
Mesajlar: 42
Kayıt: 04 Nis 2007 03:57

Mesaj gönderen semenderip »

ilgin için teşekkürler fakat anlamatamadım heralde ben zaten reg kayıt işlemini yapıyorum ve reg dosyası olarak dışarı kaydettiriyorum fakat demek istediğim dışarı cıkarmış oldugumuz reg dosyasına tıklayınca rege tekrar kayıt oluyorya bu görevi onun yerine exe dosyası yapsın diyeceksinki butona o komutu verip neden direk kayıt yapmıyorum amacım bu içine reg dosyası gömerek dışardan buraya kayıt yaptırmak ki şöle örnek vereyim bazı cracklerde tıkladıgımızda reg dosyasına kayıt yapar ama bu crack dosyasındaki reg degerleri başka bir program üzerinden yazılır yoksa her programa başka dosya yazmak gerekmektedir ben ana programa degerleri girdikten sonra oluştur adlı butona tıklayacagım ve bana içine benim yazmış oldugum reg degerleri girili exe dosyası oluşturacak sorum bundan ibaret umarım anlatabilmişimdir yurt dışında durmaktan türkçeyide unutacagız :oops:
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Kısacası derlenmiş exe içindeki resourceları değiştirip kaydetmek istiyorsun. TResourceStream sınıfını incelemen gerekmekte. Al sana bir de örnek:

Kod: Tümünü seç

var
    SecRes : TResourceStream;
    pTemp : pchar;
    TempPath : string;
begin
    SecRes := TResourceStream.create(hInstance, 'SECONDAPPEXE', RT_RCDATA);
    pTemp := StrAlloc(MAX_PATH);
    GetTempPath(MAX_PATH, pTemp);
    TempPath := string(pTemp);
    StrDispose(pTemp);
    SecRes.SaveToFile(TempPath + 'Second.exe');
    SecRes.free;
    WinExec(pchar(TempPath + 'Second.exe'), SW_SHOW);
end;
Kolay gele.
semenderip
Üye
Mesajlar: 42
Kayıt: 04 Nis 2007 03:57

Mesaj gönderen semenderip »

hocam sagolun dosyayı gömdüm ve butona tıkladıgımda calışması için aşagıdaki kodu ekledim fakat butona tıkladıgımda exeyi dışarı atıp çalıştırıyor bunun yerine res dosyasından dosyayı cıkarmadan direk çalıştırma olmuyormu

procedure TForm1.Button2Click(Sender: TObject);
var
rStream: TResourceStream;
fStream: TFileStream;
fname: string;
begin
fname:=Paramstr(0))+'MODUL.EXE';
rStream := TResourceStream.Create
(hInstance, 'INTRO', RT_RCDATA);
try
fStream := TFileStream.Create(fname, fmCreate);
try
fStream.CopyFrom(rStream, 0);
finally
fStream.Free;
end;
finally
rStream.Free;
end;
WinExec(FNAME,SW_SHOW);
end;
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

exe'ye exe gömmek istiyorsan.

İlk Önce Oluşturmak İstediğiniz Dosyayı " C: " Dizinine Kopyalayın, " C: " Dizininde Bir Text Dosyası Oluşturun, Ve Text Dosyasına

Kod: Tümünü seç

Rapier EXE "C:\Rapier.exe"
Yazın Ve Dosyayı Rapier.rc Olarak Kaydedin.
Komut Satırını Açın(Başlat/Çalıştır/Cmd) Ve

Kod: Tümünü seç

 brcc32 Rapier.rc 
Parantez İçindekini Yazın (Rapier.rc Dosyası Nerede İse Orayı Yazın)).

Kod: Tümünü seç

C:/>brcc32 Rapier.rc
Enter'a Bastığınız Zaman C:'de Rapier.res Dosyası Oluşmuş Olması Lazım. Res Dosyasını Alıp Ekleyeceğimiz Programın Olduğu Klasore Atıyoruz Ve Kodunda

Kod: Tümünü seç

{$R *.DFM}
Bu Şekilde Bir Yazı Olacak Bunun Yanına

Kod: Tümünü seç

{$R Rapier.RES}
Bunu Ekleyin. Implemention'un Altında

Kod: Tümünü seç

{$R *.DFM} {$R Rapier.RES}
Böyle Görünmesi Gerek!!!

Ve Exe Oluşturmak İçinse Aşağıdaki Komutlar Yeterli

Kod: Tümünü seç

procedure ExtractRes(ResType, ResName, ResNewName: String);
var
Res: TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, ResName, PChar(ResType));
try
Res.SaveToFile(ResNewName)
Finally
Res.Free
end;
end;

ButtonClick Olayına;
ExtractRes('exe', 'Rapier', 'Server.exe'); //ExtractRes('Res Oluşturduğunuz Dosyanın Türü (Exe, Avi, Jpg, vs)', 'Res Oluşturduğunuz Dosyanın Adı', 'Yeni Oluşturacağınız Dosyanın Adı(.exe Türünü Yazmayı Unutmayın)'); //
res dosyasını editlemek değilde, exe'yi oluşturdukdan sonra editlemek daha mantıklı, bunun için;


ExeMod.pas ve ExeMod.dcu İndir Project Dosyanın Yanına Koy Ve
Project1.dpr'i Editleyince Son Şekil'i Şöyle Olması Lazım;

Kod: Tümünü seç

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  ExeMod in 'Unit\ExeMod.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Ve Uses'a "ExeMod" Ekle, Sonra

Bir Button Koy Ve OnClick'ine

Kod: Tümünü seç

InsOrReplaceInFile('ADegiskeni', 'Server.exe' 'exeye yazdırılacak yazı);
Yaz

Bu Kod Oluşan Exe'ye (Önceden Oluşturmuş Olman Gerek) "ADegiskeni" Adında String Yerleştirir.

Oluşan Exe'de Bunu Görmek İçin

Kod: Tümünü seç

ExtractFromExe('ADegiskeni', Edit1.Text);

Kolay Gelsin
Cevapla