SORU
1 ŞUBAT 2011, Salı


C GCC ile C/: Statik/kütüphane yürütülebilir kaynak dosyaları Ekle

Herkes için nasıl bir fikir var statik olarak herhangi bir kaynak doğru yürütülebilir ya da paylaşılan kitaplık dosyası GCC kullanarak derleme dosyası mı?

Örneğin asla (ve eğer yaparlarsa, bu dosya zaten var değiştirmek istiyorum) değiştirmek ve onları istemem eklemek resim dosyaları dosya sisteminde yalan söylemeyi ben de isterdim.

Eğer bu mümkün (ve Windows için Visual C de bunu yapabilir, çünkü ben öyle düşünüyorum), nasıl kendi ikili depolanan dosyalar yükleyebilir miyim? Çalıştırılabilir dosyanın kendisi ayrıştırma, dosyayı bulmak ve veri özü var mı?

Belki de henüz görmedim GCC için bir seçenek var. Arama motorları kullanarak gerçekten doğru şeyler tükürmek değildi.

Bu paylaşılan kitaplıklar ve ELF çalıştırılabilir normal çalışmaya ihtiyacım var.

Herhangi bir yardım için teşekkür ederiz

CEVAP
1 ŞUBAT 2011, Salı


Objcopy (GNU binutils) bir dosyadan ikili veri foo-veri bağlantısı için kullandım.çalıştırılabilir dosya: veri bölümüne bin

objcopy -B i386 -I binary -O elf32-i386 foo-data.bin foo-data.o

Bu dosyaya bağlayabilirsiniz foo-data.o nesne dosyası verir. C arayüzü gibi bir şey görünüyor

/** created from binary via objcopy */
extern uint8_t foo_data[]      asm("_binary_foo_data_bin_start");
extern uint8_t foo_data_size[] asm("_binary_foo_data_bin_size");
extern uint8_t foo_data_end[]  asm("_binary_foo_data_bin_end");

gibi şeyler yapabilirsiniz

for (uint8_t *byte=foo_data; byte<foo_data_end;   byte) {
    transmit_single_byte(*byte);
}

ya

size_t foo_size = (size_t)((void *)foo_data_size);
void *foo_copy = malloc(foo_size);
memcpy(foo_copy, foo_data, foo_size);

Eğer hedef mimariye sahiptir özel kısıtlamaları olarak nerede sabit ve değişken veri saklanır, ya da istediğin için saklayan veri .text kesimi için uygun içine aynı bellek türü programın kodu, sen-ebilmek oyun ile objcopy parametreleri biraz daha fazla.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • amc

    amc

    21 EYLÜL 2005
  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • Feel The Electricity!

    Feel The Ele

    20 ŞUBAT 2010