Czy jest jakaś szansa, aby dowiedzieć się, jak zbudowano plik binarny pod Linuksem? (i / lub inny Unix) Kompilator, wersja, czas, flagi itp ... Patrzyłem readelfi nie mogłem znaleźć wiele, ale mogą istnieć inne sposoby analizy kodu / sekcji binarnej itp. Coś wiesz jak wyodrębnić?
W dyskusji na temat kompatybilności wstecznej w jądrze Linuksa i interfejsach graficznych GUI , Alan Cox zauważa, że „ moje jądro 3.6rc będzie nadal uruchamiać fałszywy plik binarny zbudowany w 1992 roku. X jest z powrotem kompatybilny z aplikacjami znacznie starszymi niż Linux ”. Więc w jaki sposób wstecznie kompatybilne …
Ale dają instrukcje jak cd downloaded_program ./configure make install Spowoduje to utworzenie potrzebnego pliku ELF i prawdopodobnie niektórych plików .so. Dlaczego nie umieścić tych w pliku zip do pobrania, na przykład w aplikacjach Windows? Czy jest jakiś powód, dla którego użytkownik musi je skompilować?
Wcześniej widziałem dyskusję na temat magii ELF, ostatnio komentarze w tym pytaniu dotyczącym wymiany stosu zabezpieczeń . Widziałem o tym wcześniej i widziałem to we własnych dziennikach rozruchowych .. Ale nie jestem pewien, co to jest. Strona podręcznika na elfie jest trochę ponad moją głową, ponieważ nie używam języków C …
Znalazłem termin „ plik wykonywalny LSB ” lub „ obiekt współdzielony LSB ” w danych wyjściowych filepolecenia w systemie Linux. Na przykład: $ file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=4637713da6cd9aa30d1528471c930f88a39045ff, stripped Co w tym kontekście oznacza „LSB”?
Ilekroć uruchamiam plik na pliku binarnym ELF, otrzymuję ten wynik: [jonescb@localhost ~]$ file a.out a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped Zastanawiam się tylko, co zmieniło się w Linuksie 2.6.9, że ten plik binarny …
Biorąc pod uwagę jądro Linuksa w wersji 2.6.x lub nowszej i istniejącą przestrzeń użytkownika, która jest zdolna do uruchamiania zarówno plików binarnych ELF32, jak i ELF64 (tj. Dawno temu Skąd mam wiedzieć, że mój procesor obsługuje 64-bitowe systemy operacyjne pod Linuksem? ) Jak mogę ustalić, czy dany proces ( przez …
Próbuję dowiedzieć się więcej o wersjonowaniu bibliotek w systemie Linux i o tym, jak to wszystko uruchomić. Oto kontekst: - Mam dwie wersje biblioteki dynamicznej, która udostępnia ten sam zestaw interfejsów, powiedzmy libsome1.soi libsome2.so. - Aplikacja jest połączona z libsome1.so. - Ta aplikacja używa libdl.sodo dynamicznego ładowania innego modułu, powiedzmy …
Mam wykonywalny plik binarny; nazwijmy to a.out. Widzę, że plik binarny zawiera ciągi $ strings a.out ... /usr/share/foo .... Muszę zmienić ciąg /usr/share/foona /usr/share/bar. Czy mogę po prostu zastąpić ciąg sed? sed -i 's@/usr/share/foo@/usr/share/bar@' a.out To wygląda na bezpieczne. Czy to zadziała również, gdy struny nie będą tej samej długości?
Czy można sprawdzić, czy dany program został skompilowany z instrumentacją GNU gprof, tj. Z flagą „-pg” przekazaną zarówno do kompilatora, jak i linkera, bez uruchamiania go, aby sprawdzić, czy wygeneruje gmon.outplik?
Skompilowałem mały program C (2 linie kodów) z gcc, aby spróbować zrozumieć format pliku ELF. Robię readelf -hna pliku obiektowym, mam w nagłówku: OS/ABI: UNIX - System V Korzystam z Fedory, więc dlaczego nie jest to Linux? Edycja : skompilowałem int main(){ int x = 0; x++; } z gcc …
Co już wiem: Plik wykonywalny ELF ma wiele sekcji, oczywiście sekcje .text i .data są ładowane do pamięci, ponieważ są to główne części programu. Ale aby program działał, potrzebuje więcej informacji, zwłaszcza gdy jest połączony dynamicznie. Interesują mnie sekcje takie jak .plt, .got, .dynamic, .dynsym, .dynstr itp. Części ELF, które …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.