Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

allgemeine PE fragen

Diskussion: allgemeine PE fragen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige hallo hätte da nochma allgemeine fragen zum pe format... ich bastel mir grad nen xtea crypter, ich hab meine ...

Antwort
Alt 11.08.11, 09:27   #1 (permalink)
 
Registriert seit: 17.10.09
HolyWater Leistung: Facit NTK
Likes: 0
Standard allgemeine PE fragen

Anzeige

hallo

hätte da nochma allgemeine fragen zum pe format...
ich bastel mir grad nen xtea crypter, ich hab meine xtea_decipher funktion + entrypoint sauber überschrieben! d.h. ich hab den entrypoint schon auf meinen stub umgeleitet, der dann in einer loop die xtea_decipher func callen soll. wäre an sich kein problem, nur glaube ich nicht dass es ausreicht wenn ich ne loop von 0x11000 (VirtualAddress der .code section) bis +VirtualSize durchlaufen lasse! wenn ich da noch die ImageBase drauf rechne bin ich aber immernoch nicht bei der richtigen adresse. genau so siehts auch am ende mit dem jump zurück aus, da bin ich auch an einer merkwürdigen adresse.

Code:
DWORD dwEP=0-((pSection->VirtualAddress+pSection->Misc.VirtualSize+39)-dwEP)-5;
[...]
memcpy((void*)(((DWORD)pBase)+pSection->PointerToRawData+pSection->Misc.VirtualSize+35),&dwEP,4);
an +34 steht ein 0xE9, danach steht nochmal 0xC3 (für einen debugger check)

thx schonmal
HolyWater ist offline   Mit Zitat antworten
Alt 11.08.11, 13:02   #2 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Und was wäre nun die Frage? Oder soll man darauf aus den 2 Zeilen Code schließen?

Was ist der Startwert für dwEP? Soll dwEP die absolute Adresse darstellen oder die Distanz für einen JMP? Im ersten Fall fehlt defentiv noch die ImageBase in den Berechnungen.

VirtualAddress ist (obwohl der Name etwas anderes vermuten lässt) eine RVA. Also Angabe bezüglich der ImageBase. ImageBase+RVA = Speicheradresse.
Bei relocatable Executablen müsste man stattdessen noch die "echte" Imagebase feststellen (z.B call zum GetModuleHandle(0) oder
Code:
call delta
delta:
pop eax
sub eax, rva_von_delta
sowas in der Art (bei relocatable Exen bekommt man noch ganz andere Probleme, da man die Relocations-Tabelle selber auswerten muss, aber das ist hier eher nicht das Thema ).

Bei "section1.VirtualAddress + section1.VirtualSize + 39" ist man definitiv im 00-initialisierten Speicherbereich (sofert dwEP mit 0 initialisiert wurde). Oder liegt da der Stubcode? Dir ist aber klar, dass, solange man die VirtualSize UND RawSize nicht entsprechend anpasst, nix davon vom Win-PE-Loader in den Speicher gemappt wird? (bin jetzt zu faul im MS-PECOFF nachzuschlagen, ob das nur bei RawSize < VirtualSize der Fall ist oder auch bei RawSize > VirtualSize). Also alle Daten, die nach RawSize noch in der Section liegen oder nach VirtualSize, "schaffen" es nicht in den Speicher.

Zu der zweiten Zeile: wenn man "RawDaten" kopiert, sollte man auch RawSize nutzen . Ich sehe aber ehrlich gesagt keinen Sinn in der Anweisung, da
Code:
pSection->PointerToRawData+pSection->Misc.VirtualSize+35
garantiert außerhalb des VirtualSize Bereichs landet und damit hat man wieder das Problem, dass es vom PE-Loader "ignoriert" wird.

PS: lass Dir einfach alle Zwischenschritte/Werte ausgeben. So findet man am schnellsten den Fehler. Besonders bei C vertut man sich schnell (falsche Klammerung beim casten/Pointern führt zu falschen Berechnungen).
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 11.08.11, 17:31   #3 (permalink)
Themenstarter
 
Registriert seit: 17.10.09
HolyWater Leistung: Facit NTK
Likes: 0
Standard

also was dwEP angeht soll das nen relative jump zum originalen entrypoint sein nur da finde ich (auch mit imagebase) nichts :|

wird auch alles sauber in den speicher gemappt

nur wie ich die relocations auswerten soll kp
HolyWater ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » allgemeine PE fragen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61