PDA

Tam Sürümünü Görmek İçin : cbuilder exe ye dll gömme


Mehmett_sarica
17/11/2004, 19:12
exe nin içine dll dpl vs. nasıl gömülür?


Kozan
29/11/2004, 21:36
Mesela dll dosyanı hex editörle açıp, copy all to c source (genellikle tanınmış tüm hex editörlerde bulunur) kopyalayıp, projene yeni bir header ekleyerek ya da ana proje dosyana da olabilir bir dizi olarak tanımlayabilirsin.

Programın açıldığında direkt bu ihtiyacı olan (veya ne amaçlı ise) dll i örneğin \\windows\\system32 den okusun istiyorsan, bu tanımladığın hex kodu içeren dizinin elemanlarını program açılışında bir dosyaya yazmasını sağlayabilirsin.

Örnek kod verecek olursak:

Ben makinamda bulunan ( \\Windows\\System32\\d3d8thk.dll ) dosyasının hex kodlarını bir dizi olarak şöyle tanımladım:

8192 byte ve her bir byte ı teker teker dizi elemanı olarak atandığından dizinin görünüşü biraz büyük olabilir, bu bir sorun teşkil etmiyor.

NOT: Yazı fazla büyüdüğünden forum kabul etmedi. Bu sebeple dizinin tamamını yazmıyorum.
*
*
*
koyduğum yerler normalde devam ettiği anlamındadır.


unsigned char dll_kaynagi[8192] = {
0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00,
0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68,
0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F,
0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20,
0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF3, 0x9F, 0x1E, 0xCE, 0xB7, 0xFE, 0x70, 0x9D, 0xB7, 0xFE, 0x70, 0x9D, 0xB7, 0xFE, 0x70, 0x9D,
0x6D, 0xDD, 0x6C, 0x9D, 0xB1, 0xFE, 0x70, 0x9D, 0x4D, 0xDD, 0x69, 0x9D, 0xB0, 0xFE, 0x70, 0x9D,
0xB7, 0xFE, 0x71, 0x9D, 0xF5, 0xFE, 0x70, 0x9D, 0x4D, 0xDD, 0x4F, 0x9D, 0xB6, 0xFE, 0x70, 0x9D,
0x20, 0xDD, 0x35, 0x9D, 0xB6, 0xFE, 0x70, 0x9D, 0x4D, 0xDD, 0x4D, 0x9D, 0xB6, 0xFE, 0x70, 0x9D,
0x52, 0x69, 0x63, 0x68, 0xB7, 0xFE, 0x70, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x45, 0x00, 0x00, 0x4C, 0x01, 0x04, 0x00,
0x60, 0x24, 0xF8, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x21,
0x0B, 0x01, 0x07, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xA5, 0x13, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00,
0x04, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
0xBE, 0x5B, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x20, 0x19, 0x00, 0x00, 0xB3, 0x07, 0x00, 0x00, 0xA8, 0x14, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x00, 0xB8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
0x20, 0x11, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0xD3, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x2E, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00,
0x14, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0,
0x2E, 0x72, 0x73, 0x72, 0x63, 0x00, 0x00, 0x00, 0xB8, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x00, 0x08, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x2E, 0x72, 0x65, 0x6C, 0x6F, 0x63, 0x00, 0x00,
0xE4, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
*
*
*
*
*
*
};


Evet, bu diziyi bu şekilde tanımladıktan sonra, sıra geldi programın açılışında dll dosyasını system32 ye yükleyecek fonksiyona (tabi dosya işlemleri vs.. işler için kullanılacak headerları da include etmelisin programına):

//----------------------------------------------------------------------


void sisteme_dll_at()
{
char sisdizin[100];
GetSystemDirectory(sisdizin,100);
AnsiString dll_dosyam=AnsiString(sisdizin)+"\\d3d8thk.dll";

int i;

FILE *fp;

if((fp=fopen(dll_dosyam.c_str(),"wb"))==NULL)
{
ShowMessage("Dll dosyasını atamadık!");
}
else
{
for(i=0;i<8192;i++)
{
putc(dll_kaynagi[i],fp);
}
}

fclose(fp);
}


Fonksiyonumuz da hazır olduğuna göre, bu fonksiyonu BCB Projende Formun OnCreate olayında çağırırsan \\Windows\\system32 dizinine d3d8thk.dll dosyası yazılacaktır.

Yani:


void __fastcall TForm1::FormCreate(TObject *Sender)
{
sisteme_dll_at();
}



Not: Burada sadece bir yol gösterdim. Daha farklı şekillerde de aynı türden işlemler yapılabilir.



Saygılar...