Hi
Ich habe im Internet das hier gefunden:
http://dirkgerrits.com/publications/elf-virus.pdf
ich versuche grade das hier zu verstehen:
Die Adresse für die Nutzlast wird hier ja mit der Konstante 0x8048000 berechnet. Warum?
Ich nehme an dass das nur auf 32bit systemen funktioniert und dass die adresse auf 64bit systemen eine andere ist.
(irgendwas mit 0x400000). Da wollte ich mal fragen wo man diese Konstante her bekommt und ob man die auch
irgendwie durch etwas dass nicht so systemabhängig ist ersetzen kann...
Die zweite Frage ist etwas thoretischer: warum werden hier nur die segmente mnipuliert?
Es gibt doch auch sections... Was genau ist der unterschied? Und warum wird das eine verändert und das andere nicht?
Ich habe vor einiger zeit einmal mit dem PE Format herumgespielt und wenn ich mich richtig erinnere dann
musste ich da auch etwas mit den sections machen...
Dritte Frage: In dem Text wird geschrieben, dass das NOTE segment entführt wird, weil man um ein weiteres segment hinzu zu fügen die ganze, restliche, Datei nach hinten
verschieben müsste... Heißt nach hinten verschieben einfach nach hinten verschieben? (Was ja ziemlich einfach sein dürfte) oder muss dann auch noch etwas anderes angepasst werden...
Hat jemand irgendwo einen Text oder code stückchen wo beschrieben wird, wie man eine section hinzufügt/vergrößert?
liebe grüße
Ich habe im Internet das hier gefunden:
http://dirkgerrits.com/publications/elf-virus.pdf
ich versuche grade das hier zu verstehen:
Code:
phdr.p_offset = payload_offset = lseek(fd, 0, SEEK_END);
payload_address = 0x8048000 - (payload_size + pre_payload_size);
adjustment = payload_offset % 0x1000 - payload_address % 0x1000;
if(adjustment > 0)
payload_address -= 0x1000;
payload.address += adjustment;
ehdr.e_entry = payload_address;
phdr.p_type = PT_LOAD;
phdr.p_vaddr = phdr.p_paddr = payload_address;
phdr.filesz = phdr.p_memsz = payload_size + pre_payload_size;
phdr.p_flags = PF_R | PF_X;
phdr.p_align = 0x1000;
Ich nehme an dass das nur auf 32bit systemen funktioniert und dass die adresse auf 64bit systemen eine andere ist.
(irgendwas mit 0x400000). Da wollte ich mal fragen wo man diese Konstante her bekommt und ob man die auch
irgendwie durch etwas dass nicht so systemabhängig ist ersetzen kann...
Die zweite Frage ist etwas thoretischer: warum werden hier nur die segmente mnipuliert?
Es gibt doch auch sections... Was genau ist der unterschied? Und warum wird das eine verändert und das andere nicht?
Ich habe vor einiger zeit einmal mit dem PE Format herumgespielt und wenn ich mich richtig erinnere dann
musste ich da auch etwas mit den sections machen...
Dritte Frage: In dem Text wird geschrieben, dass das NOTE segment entführt wird, weil man um ein weiteres segment hinzu zu fügen die ganze, restliche, Datei nach hinten
verschieben müsste... Heißt nach hinten verschieben einfach nach hinten verschieben? (Was ja ziemlich einfach sein dürfte) oder muss dann auch noch etwas anderes angepasst werden...
Hat jemand irgendwo einen Text oder code stückchen wo beschrieben wird, wie man eine section hinzufügt/vergrößert?
liebe grüße

Zuletzt bearbeitet: