AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi asm code aus anderen prozessen lesen
Thema durchsuchen
Ansicht
Themen-Optionen

asm code aus anderen prozessen lesen

Ein Thema von wadimwadim · begonnen am 9. Aug 2008 · letzter Beitrag vom 10. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
wadimwadim

Registriert seit: 22. Mai 2008
45 Beiträge
 
#1

asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 09:44
Hallo,
ich möchte den asm code aus einem laufendem prozess auslesen. nicht den ganzen, sondern nur stellen aus bestimmten adressen.
z. B. ist auf

00X12345 push ebp

könnte ich jetzt den asmteil von 00X12345 sehen? also ohne einen debugger.
kann man so etwas in delphi umsetzen? und welche funktionen müsste ich dafür benutzen?
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 09:49
Hallo,

mit der Funktion MSDN-Library durchsuchenReadProcessMemory kannst Du Speicher aus fremden Prozesse lesen.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
wadimwadim

Registriert seit: 22. Mai 2008
45 Beiträge
 
#3

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 10:14
ich möchte nicht die werte der adresse haben, sondern den asm code...
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 10:17
Hallo,
Zitat von wadimwadim:
ich möchte nicht die werte der adresse haben, sondern den asm code...
was meinst Du? Die Werte im Speicher sind doch der Code.
Oder willst Du den Maschinencode in Mnemonics umwandeln? Dann musst Du Dir einen Disassembler bauen.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
wadimwadim

Registriert seit: 22. Mai 2008
45 Beiträge
 
#5

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 11:14
also...
nehmen wir an, dass es so aussieht:

00123456 push ebp
00234567 mov ecx
00345678 xxx

ich möchte aus diesen adressen (00123456,...) den asm code bekommen, also push ebp. wie stelle ich das an?
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 11:23
Hi,

indem du den Maschinencode einliest (s. o.) und dann deassemblierst (s. o.)

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 11:26
Zitat von wadimwadim:
also...
nehmen wir an, dass es so aussieht:

00123456 push ebp
00234567 mov ecx
00345678 xxx

ich möchte aus diesen adressen (00123456,...) den asm code bekommen, also push ebp. wie stelle ich das an?
Du liest einfach mit ReadProcessMemory den Speicher des Process von (im Bsp) 00123456 bis 00345678 aus.
Dann hast du eben die Bytes dieser Adressen. Das ist quasi der Assemblercode. Man muss diese Bytes nur eben richtig interpretieren.

Ach ja

Zitat:
mov ecx
ergibt keinen Sinn
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#8

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 14:11
Kleines Beispiel: 90 (hexadezimal) entspricht z.B. NOP
Genaueres kannst du entsprechenden Tabellen dazu entnehmen, übersetzen musst du das dann schon selbst.
Die erste Tabelle, die ich eben auf die schnelle gefunden hab, ist z.B. diese: ftp://download.intel.com/design/Pent...s/24319102.PDF
Man beachte, dass das Gnze unter Umständen aber vom Prozessor abhängig ist.
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

Registriert seit: 10. Okt 2006
Ort: 's-Hertogenbosch, Die Niederlande
222 Beiträge
 
RAD-Studio 2010 Arc
 
#9

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 18:58
The package "madDisAsm" features a full x86 disassembler including MMX, 3dNow enhanced, SSE and SSE2 support. The disassembler can examine a single x86 instruction (see ParseCode) or a full function (see ParseFunction) and either return a short analysis or a full text disassembly. Register contents are watched/followed if possible, this improves the analyses for jump/call targets. Case/switch jump tables are automatically detected and handled correctly.

http://help.madshi.net/madDisAsm.htm
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

Re: asm code aus anderen prozessen lesen

  Alt 9. Aug 2008, 20:17
Hallo zusammen,

so einfach ist das aber nicht. Im Prinzip steht im Speicher OpCode,Daten,OpCode,Daten....
NOP z.B. hat keine zugehörigen Daten. Aber was ist wenn 90 kein OpCode sodern Daten ist?
Dann läuft die Interpretation ganz schön vor die Wand.
Wenn der Code von fremden Anwendungen interessant ist, würde ich die entsprechende exe durch einen Disassembler jagen, dann hat man die Chance was halbwegs vernünftiges zu bekommen.

Zu DOS-Zeiten konnte DEBUG auch direkt auf den Haupspeicher zugreifen, wenn der's heute noch kann, warum in Delphi nochmal neu schreiben?

Gruß
K-H
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 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