Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Assembler (https://www.delphipraxis.net/67164-assembler.html)

mandumoal 10. Apr 2006 15:58


Assembler
 
Hi,

ich bin gerade dabei ein bisschen ASM zu lernen.
Dazu hab ich mir die Befehle angesehen...

Jetzt hab ich mit PE-Explorer eine meiner EXEn angeschaut und würde gern mal irgendwas verändern?

Kann man mit dem PE-Explorer den ASM-Code verändern, oder muss man das mit einem HEX-Editor machen?

Wie kann ich z.B. aus einem "push exc" ein "push eax" machen?



vielen Dank für die Hilfe,

mandumoal

brechi 10. Apr 2006 16:09

Re: Assembler
 
Ob das jetzt mit dem PE-Explorer geht weiß ich nicht, aber um aus einem PUSH ECX (nicht EXC) ein PUSH EAX zu machen muss man an der richtigen Stelle aus einer 0x51 eine 0x50 machen. Die bekommt man mit debuggen / disassemblen raus und muss man dann wohl noch von der VA in die RA umrechnen.
Sagt dir das nichts -> lern weiter, google hilft :)

mandumoal 10. Apr 2006 16:41

Re: Assembler
 
Danke für die Antwort,

kannst du mir noch sagen wie du von "PUSH ECX" auf "0x51" kommst?

Danke

faux 10. Apr 2006 16:46

Re: Assembler
 
Zitat:

Zitat von mandumoal
Danke für die Antwort,

kannst du mir noch sagen wie du von "PUSH ECX" auf "0x51" kommst?

Danke

Also PUSH ECX ist nur ein Mnemnonic für den HEX-Code 51. Der Assembler (Compiler) wandelt das dann dementsprechend um. MaBuSe hat da mal eine Ausführliche Erklärung verfasst.
Suche einfach mal nach Assembler und User MaBuSe.

Ah! MaBuSe hat aus dem Post (der eine Antwort in einem Thread war) ein Tutorial gemacht:
http://www.delphipraxis.net/internal...ct.php?t=36841

Grüße
Faux

Balu der Bär 10. Apr 2006 16:46

Re: Assembler
 
Geht ganz einfach per Debugger, zum Beispiel OllyDBG.

mandumoal 10. Apr 2006 17:07

Re: Assembler
 
Hi,

Vielen Dank für den Verweis auf das Tutorial, das war sehr fein.

Leider sagt mir aber VA und RA tatsächlich nicht viel, ich denke es werden zwei Arten sein, eine Adresse anzugeben.
V=virtual? R=Relative? ???

Noch ein kleiner Tipp, bitte?

Google spuckt so verdammt viel aus...

Danke!

brechi 10. Apr 2006 19:06

Re: Assembler
 
VA = Virtual Address
RVA = Relative Virtual Address

Wenn du z.b. eine Funktion hast die bei 0x00407212 beginnt und die exe an 0x00400000 geladen ist, dann hast du die RVA 0x7212.
Wenn du die dann in ein FileOffset umrechnen willst musst du noch die RVA bezüglich der section wo die funktion nun hinzeigt subtrahoeren und die RFA der Section (heisst das so?) wieder addieren

Nehmen wir die Kernel32.CopyFileA:

Virtuelle Adresse: 0x77E89029
- Base von der Kernel32.dll: 0x77E70000
____________
RVA: 0x00019029

zeigt in die section '.text' die die RVA 0x00001000 hat
des subtrahieren und die RFA (0x00000600) von der section '.text' addieren

d.h. in der Datei an der Stelle 0x00018629 befindet sich die Funktion

Hab des jetzt nicht selbst getestet, wenn Fehler sind bitte anmerken ;>


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz