malware-analyse und reverse engineeringmulticores.org/teaching/files/mare_03-laufzeit.pdf ·...
TRANSCRIPT
![Page 1: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/1.jpg)
Malware-AnalyseundReverseEngineering
3:Laufzeit!30.3.2017
Prof.Dr.MichaelEngel
![Page 2: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/2.jpg)
Überblick(heute)
Themen:• LadenundAusführen vonBinärprogrammen• Linkerskripte• Dynamischer Loaderld.so• Statische undDynamische Libraries• Speicherallokation
MARE03– Laufzeit 2
![Page 3: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/3.jpg)
Übersetzungeines(C-)ProgrammsPräprozessor• Expandiert#include undMakrosCompiler• ErzeugtAssembler-Quellcode
ausC-SourcecodeAssembler• ErzeugtObjektcodeausAssembler-
QuellcodeLinker• Fügt(einoder)mehrereObjektdateien
(+evtl.Libraries)zuausführbarerDatei(oderLibrary) zusammen
Loader• LädtausführbareDateizur
Ausführung inHauptspeicherMARE03– Laufzeit 3
![Page 4: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/4.jpg)
Wiederholung:ELF-Struktur
ELF-DateibestehtausSektionen,u.a.:• Programmtext• VerschiedeneDatensegmente• Symbole
MARE03– Laufzeit 4
Sektion Funktion.text Maschinencode (Instruktionen)
undEinsprungadresse
.rodata Vorinitialisierte Konstanten
.data Vorinitialisierte Variable
.bss Uninitialisierte Daten
.symtab Adressen zu symbolischenNamen
![Page 5: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/5.jpg)
VirtuellerSpeicherinUnix/Linux(1)
LinuxsetztVorhandenseineinerMMU*voraus• ÜbersetztvirtuelleAdresseninphysikalischeAdressen
• Illusion: JederProzesshatgesamtenAdressraumfürsichzurVerfügung• Schutzvon(physikalischem)SpeichervorungewünschtemZugriff• Granularität:„Seite“(z.B.4096Bytes)
MARE03– Laufzeit 5
*MMU=MemoryManage-ment Unit
![Page 6: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/6.jpg)
VirtuellerSpeicherinUnix/Linux(2)
ÜbersetzungvonAdressenüberSeitentabellen• Fürjede(abgebildete)Speicherseite (page):Adressedeszugehörigen(gleich
großen)physikalischenSeitenrahmens (page frame)• Sparse mapping:nurimphys.SpeichervorhandeneSeitenabgebildet• Seitentabelleneintrag(page table entry)enthältnebenAdresseauch
InformationüberZugriffsrechte: Lesen/Schreiben*(undvielesmehr)
MARE03– Laufzeit 6
*Bei 32-BitIntel-CPUsfehlt Bit,dasAusführenvonCodeausderSeiteverbietet!
![Page 7: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/7.jpg)
VirtuellerSpeicherinUnix/Linux(3)
StrukturderSeitentabelle• Seitentabelle(page table)istDatenstrukturimRAM• KleineAusschnitteimTranslationLookaside Buffer (TLB) zwischengespeichert
MARE03– Laufzeit 7
![Page 8: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/8.jpg)
VirtuellesSpeicherlayoutvonProzessen(1)AufteilungdesvirtuellenAdressraums (hier:32Bit=4GB)• UserModeSpace=Prozessadressraum,separatfürjedenProzess• JederProzessbesitzteigeneSeitentabelle• KernelimoberemTeil(25/50%)jedes Prozessadressraumseingeblendet(Ausnahme:MacOSX)
MARE03– Laufzeit 8http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/
![Page 9: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/9.jpg)
VirtuellesSpeicherlayoutvonProzessen(2)JederProzessbesitzteigeneSeitentabelle• WirdbeiProzessumschaltungvomKernelumgeschaltet• AdressraumfürdenKernel(oberstesGigabytevirtuelleAdressen)bleibtimmereingeblendet
MARE03– Laufzeit 9http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/
![Page 10: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/10.jpg)
LayouteinesProzessesimSpeicher(1)
ÜbergangvonProgrammzuProzess• Definition:
„Programm=ProzessinAusführung“• Prozess=Laufzeitkontext einesProgramms• LadendesProgrammsinRAM• Zuteilungvirtueller AdressbereichezuProgrammsektionen• ZusätzlichReservierungvonAdressbereichenfürdynamischwachsendeBereiche• Heap,Stack
• Adressbereichoberhalb3GB(=0xC0000000)fürProgrammnichtles-/schreib-/ausführbar(dortistderKernel!)
MARE03– Laufzeit 10
![Page 11: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/11.jpg)
LayouteinesProzessesimSpeicher(2)
MARE03– Laufzeit 11
InELF-Dateienthalten
Dynamischalloziert
Dynamischalloziert
MetainformationeninELFenthalten
![Page 12: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/12.jpg)
DefinierendesSpeicherlayoutseinesProgramms(1)LinkerberücksichtigtLinkerScript• DefiniertAdressbereichefürELF-Sektionen• ZusätzlichauchEinsprungadressen,Reihenfolgen,Alignment,...
MARE03– Laufzeit 12
Einfaches Linker-Skript:
SECTIONS{
. = 0x10000;
.text : { *(.text) }
. = 0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }}
Startbei virtuellerAdresse 0x10000:• Textsektion
Startbei virtuellerAdresse 0x80000000:• Zuerst .data• Direkt danach .bss
![Page 13: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/13.jpg)
DefinierendesSpeicherlayoutseinesProgramms(2)Kontrolle:FunktioniertdasLinker-Skript?• AusgabevonSymbolenmitnm:
MARE03– Laufzeit 13
Linker-Skript foo.ld:SECTIONS{
. = 0x10000;
.text : { *(.text) }
. = 0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }}
$ gcc –m32 –c foo.c$ ld –m elf_i386 –T foo.ld –o foo foo.o$ nm foo0001002c R a08000000 D b08000004 B c00010000 T main
Beispielprogramm foo.c:
const int a = 42;int b = 23;int c;
int main(void) {c = a + b;return c;
}
✓✓
✓
![Page 14: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/14.jpg)
DefinierendesSpeicherlayoutseinesProgramms(3)...Sektion.rodata imLinkerskriptnichtangegeben:automatischalloziert!
MARE03– Laufzeit 14
Linker-Skript foo.ld:SECTIONS{
. = 0x10000;
.text : { *(.text) }
. = 0x8000000;
.rodata : { *(.rodata) }
.data : { *(.data) }
.bss : { *(.bss) }}
$ gcc –m32 –c foo.c$ ld –m elf_i386 –T foo.ld –o fox foo.o$ nm fox08000000 R a08000004 D b08000008 B c00010000 T main
Beispielprogramm foo.c:
const int a = 42;int b = 23;int c;
int main(void) {c = a + b;return c;
}
✓✓
✓
✓
…gehtdoch!
Linkerskripte können viel mehr – Anordnen einzelnerObjektdateien,Arithmetik aufAdressen,Alignment,Aufteilen zwischen ROM/RAM-Bereichen,…
![Page 15: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/15.jpg)
DefinierendesSpeicherlayoutseinesProgramms(4)KontrolledesLayoutsmitreadelf:
MARE03– Laufzeit 15
$ readelf -l fox
Elf file type is EXEC (Executable file)Entry point 0x10000There are 3 program headers, starting at offset 52
Program Headers:Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg AlignLOAD 0x001000 0x00010000 0x00010000 0x00030 0x00030 R E 0x1000LOAD 0x002000 0x08000000 0x08000000 0x00004 0x00008 RW 0x1000GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
Section to Segment mapping:Segment Sections...00 .text01 .rodata .data .bss02
Linker-Skript foo.ld:SECTIONS{. = 0x10000;.text : { *(.text) }. = 0x8000000;.rodata : { *(.rodata) }.data : { *(.data) }.bss : { *(.bss) }
}
![Page 16: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/16.jpg)
Shared Libraries(1)
Programmesind(meist)nichtstandalone• Gehtauch,istaberaufwendig...• LibrariesenthaltennützlicheFunktionalität,z.B.:• libc – C-Standardfunktionen• libm– Mathematikfunktionen• libX11– FunktionenfürX11WindowSystem
• VieleProgrammeenthaltendieselbenLibraries• BeistatischemLinken:KopievonLibrary-CodeistinjedemausführbarenProgrammenthalten➙ benötigtPlattenplatz
• KopievonLibrary-CodemussfürjedenProzessinHauptspeicheralloziert werden➙ benötigtRAM
MARE03– Laufzeit 16
![Page 17: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/17.jpg)
Shared Libraries(2)
Shared LibrariessindELF-Dateien• Enthaltenüblicherweisekeinmain• NichtinELF-DateieinesProgrammsenthalteneFunktionen/Symbolemüsseninshared library/ies gesuchtwerden
• Namensauflösungistaufwendig• Shared libraries verwendenHashtabellen
• MehrzuNamensauflösungnächsteWoche...
MARE03– Laufzeit 17
![Page 18: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/18.jpg)
DynamischerLinkerld.so
Welcheshared libraries werdenvoneinemELF-Filereferenziert?
MARE03– Laufzeit 18
$ gcc -m32 -o foo foo.o$ ldd foo
linux-gate.so.1 => (0xb7701000)libc.so.6 => /lib32/libc.so.6 (0xb759f000)/lib/ld-linux.so.2 (0xb7702000)
Weit “oben”imProzessadressraum:“kurz vor”0xC0000000
“ldd”(listdynamicdependencies)gibt Listedersharedlibsaus
ld.so (hier:/lib/ld-linux.so.2– für ELF)…• sucht undlädt diesharedlibraries,dieein Programm benötigt• bereitet dasProgramm aufdieAusführung vor• undstartet es
Dateiname dersharedlibrary“libc”Dateiname deszu verwendenden dynamischen Loaders
![Page 19: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/19.jpg)
Besondereshared libraries
Wasistlinux-gate.so.1?
MARE03– Laufzeit 19
$ gcc -m32 -o foo foo.o$ ldd foo
linux-gate.so.1 => (0xb7701000)libc.so.6 => /lib32/libc.so.6 (0xb759f000)/lib/ld-linux.so.2 (0xb7702000)
Zu linux-gate.so.1existiertkeineDatei!• Virtuelle shared library,vomKernelindenProzessadressraumeingeblendet• StelltportableMechanismen fürSystemaufrufezurVerfügung
…nurderVollständigkeithalber...
Detailsunter http://www.trilithium.com/johan/2005/08/linux-gate/
![Page 20: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/20.jpg)
SpeicherlayouteinesProzesseszurLaufzeit(1)VirtuellesDateisystem/proc• EnthältInformationendesKernelsüberSystem- undProzesszustände,z.B.:• Speicherbelegung:/proc/meminfo• Systemlaufzeit:/proc/uptime• VersiondesKernels:/proc/version
• InformationüberlaufendeProzessein/proc/[pid]/,z.B.• /proc/[pid]/cmdline:KommandozeilebeimAufruf• /proc/[pid]/sched:Scheduling-Statistik• /proc/[pid]/stack:AktuellerStackinhalt (Funktionshierarchie)• /proc/[pid]/maps:BelegungdesvirtuellenSpeichers
MARE03– Laufzeit 20
![Page 21: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/21.jpg)
SpeicherlayouteinesProzesseszurLaufzeit(2)/proc/[pid]/maps• Beispiel:SpeicherlayoutfürProzess„foo“herausfinden
MARE03– Laufzeit 21
$ ps ax | grep foo10323
Welche Prozess-IDhatfoohier?10323
$ cat /proc/10323/maps08048000-08049000 r-xp 00000000 90:5a 10520727 /home/me/f/foo08049000-0804a000 rw-p 00000000 90:5a 10520727 /home/me/f/foob75f8000-b75f9000 rw-p 00000000 00:00 0 b75f9000-b7745000 r-xp 00000000 90:5a 8529693 /emul/ia32-linux/lib/libc-2.7.sob7745000-b7746000 r--p 0014c000 90:5a 8529693 /emul/ia32-linux/lib/libc-2.7.sob7746000-b7748000 rw-p 0014d000 90:5a 8529693 /emul/ia32-linux/lib/libc-2.7.sob7748000-b774b000 rw-p 00000000 00:00 0 b7758000-b775b000 rw-p 00000000 00:00 0 b775b000-b775c000 r-xp 00000000 00:00 0 [vdso]b775c000-b7779000 r-xp 00000000 90:5a 8529726 /emul/ia32-linux/lib/ld-2.7.sob7779000-b777b000 rw-p 0001c000 90:5a 8529726 /emul/ia32-linux/lib/ld-2.7.sobf9ee000-bfa03000 rw-p 00000000 00:00 0 [stack]
Wird dynamisch bei StartvonProzess vergeben
linux-gate.so
libc
Dynamischer Loader
DasProgramm selbst
![Page 22: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/22.jpg)
SpeicherlayouteinesProzesseszurLaufzeit(3)
MARE03– Laufzeit 22
...umsortiert und gekürzt...
bf9ee000-bfa03000 [stack]
b7779000-b777b000 ld-2.7.sob775c000-b7779000 ld-2.7.so
b775b000-b775c000 [vdso]
b7746000-b7748000 libc-2.7.sob7745000-b7746000 libc-2.7.sob75f9000-b7745000 libc-2.7.so
08049000-0804a000 /home/me/f/foo08048000-08049000 /home/me/f/foo
![Page 23: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/23.jpg)
Laden:vonELF-DateizuSpeicherinhalt
MARE03– Laufzeit 23
http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/
![Page 24: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/24.jpg)
SpeicherlayoutvonCausermitteln(1)Voncrt0vordefinierteglobaleVariable(viaLinkerskript):#include <stdio.h>
extern char __executable_start;extern char __etext;
int main(void){
printf("0x%lx\n", (unsigned long)&__executable_start);printf("0x%lx\n", (unsigned long)&__etext);return 0;
}
MARE03– Laufzeit 24
Ausgabe:$ gcc –m32 –o etext etext.c && ./etext0x80480000x80484a8
etext.c
_etext =“endof.textsection”
![Page 25: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/25.jpg)
SpeicherlayoutvonCausermitteln(2)WelcheVariablenstehenzurVerfügung?
MARE03– Laufzeit 25
$ gcc –m32 –o etext -Wl,--verbose etext.c && ./etext
... 250 Zeilen Ausgaben (Demo) ...
-Wl,xxx übergibt Parameter“xxx”andenLinker!
![Page 26: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/26.jpg)
Fazit
LinkenundLaden• VirtuellerSpeicherundSpeicherlayoutvonProzessen• DefinitionüberLinkerskripte
• Shared LibrariesunddynamischerLader• Speicherlayout• ...undzugehörigeLinux-Tools
MARE03– Laufzeit 26
![Page 27: Malware-Analyse und Reverse Engineeringmulticores.org/teaching/files/MARE_03-Laufzeit.pdf · Malware-Analyse und Reverse Engineering 3: Laufzeit! 30.3.2017 Prof. Dr. Michael Engel](https://reader030.vdocuments.pub/reader030/viewer/2022040711/5e14d731c8182261504b1e27/html5/thumbnails/27.jpg)
Literatur
ELF• TISCommittee,„ToolInterfaceStandard(TIS)Executable and LinkingFormat
(ELF)Specification“,Version1.2Onlineunterhttps://www.uclibc.org/docs/elf.pdf
Linker• JohnR.Levine, „Linkers and Loaders“,MKP1999,ISBN1-55860-496-0
Online(beta)unterhttps://www.iecc.com/linker/• Workingwithlibrariesandthelinker
http://www.bottomupcs.com/libraries_and_the_linker.xhtmlld.so undShared Libraries• UlrichDrepper,„How to write shared libraries“
https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf• Optimizing linkerload times – https://lwn.net/Articles/192624/ABI-Konventionen• https://sites.google.com/site/x32abi/
MARE03– Laufzeit 27