Memory Reading in Python?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
onur22
User
Beiträge: 19
Registriert: Freitag 28. Dezember 2018, 21:25

Hallo,

ich suche eine Möglichkeit mit Python Prozess Memory analysieren und bearbeiten(Reading/Writing) zu können. Ich habe hier im Forum erstmal nichts dazu gefunden und im Internet gibts auch nur wenige Beiträge dazu. Letztlich wird immer wieder CTypes erwähnt, also eine Möglichkeit C in Python zu schreiben. Da ich aber keine Ahnung von C habe, scheint mir das nicht so plausibel, mich als Anfänger nochmal da ran zu machen.

Entsprechend wollte ich fragen, ob es eine andere Möglichkeit gibt?

Grüße
alles ist als Einsteiger möglich. Es ist nur die Frage, wie lange es dauert, bis man die nötigen Vorkenntnisse erworben hat.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@onur22: beliebigen Speicher zu lesen ist ja auch ziemlich low-level, außer mit C und Assembler macht man das in keiner Sprache. Wenn man sich darin nicht auskennt, macht das als Anfänger auch keinen Sinn. Was willst Du eigentlich erreichen?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@onur22: `ctypes` ist keine Möglichkeit C in Python zu schreiben, sondern APIs die in C (und auch anderen Programmiersprachen) geschrieben sind von Python aus zu verwenden. Und zwar gerade *ohne* C-Quelltext zu schreiben. Allerdings sollte man sich ein bisschen damit auskennen, damit man weiss was man da macht, denn da ist die nette, sichere Welt von Python, wo einem die Details wie Speicherverwaltung abgenommen werden am Ende.

Für das genannte Ziel kann man mittels `ctypes` zum Beispiel die entsprechenden APIs vom Betriebssystem oder Bibliotheken von Drittanbietern von Python aus ansprechen. Unter Linux kommt man über das `/proc/`-System eventuell auch mit Dateioperationen aus, man muss da dann aber trotzdem immer noch ziemlich viel über die Systemarchitektur und Prozesse wissen und wie die Speicherverwaltung funktioniert und die entsprechenden Dateien für den Speicher eines Prozesses aussehen.

Aber das ist im Grunde alles nichts für Anfänger und man sollte sich mit C, Assembler oder ähnlichem auskennen und vor allem wie das Betriebssystem für das man das machen möchte Prozesse und Speicher verwaltet bzw. dem Programmierer zur Verfügung stellt. Wobei das normalerweise auf modernen Systemen normale Anwendungsprogrammierer gar nicht interessiert, weil man das nicht braucht.

Damit wären wir dann bei der Frage von Sirius3 was Du *eigentlich* machen willst. Warum denkst Du, dass Du so etwas ungewöhnliches brauchst?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
onur22
User
Beiträge: 19
Registriert: Freitag 28. Dezember 2018, 21:25

__blackjack__ hat geschrieben: Samstag 19. Januar 2019, 16:22 Damit wären wir dann bei der Frage von Sirius3 was Du *eigentlich* machen willst. Warum denkst Du, dass Du so etwas ungewöhnliches brauchst?
Danke für die Klarstellung
Ich bin am lernen und alles, was für mich funktionell und interessant aussieht, schaue ich mir gerne an. Auch wenn es nichts für Anfänger ist und ich mich damit nicht auskenne. Irgendwo muss man ja mal anfangen :)

Konkret hier wollte ich gewisse Abläufe automatisieren, die darauf angewiesen sind Daten von einem Programm auszulesen und entsprechend zu verwerten.
alles ist als Einsteiger möglich. Es ist nur die Frage, wie lange es dauert, bis man die nötigen Vorkenntnisse erworben hat.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@onur22: Dazu musst Du doch aber wissen wie dieses Programm die Daten im Speicher organisiert, also musst Du dafür eigentlich den Quelltext des Programms kennen. Und wenn Du *den* hast, gibt es einfachere Wege an Daten zur Laufzeit zu kommen, denn dann kann man den Quelltext ja auch ändern und die Daten über eine Schnittstelle nach aussen verfügbar machen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Um Abläufe zu automatisieren, gibt es andere Methoden, abhängig von dem, was man konkret machen will, direkt auf den Speicher zuzugreifen ist normalerweise kein funktionierender Weg.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Hört sich mir ein wenig nach hacking und cracking an....
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Falls es darum geht kommt man um C-Kenntnisse IMHO nicht wirklich herum. Und das dann vielleicht auch auf einem Mikrocontroller. Nicht unbedingt wegen der Sprache oder dem konkreten Mikrocontroller sondern eher um ein Gefühl und Verständnis davon zu bekommen wie es so nah an der Hardware aussieht, wenn die einzige tatsächliche Daten”struktur” ein grosses Bytearray ist in dem Code und Daten gespeichert werden und das durch Beschreibungen von Datenstrukturen dann tatsächlich so etwas wie Struktur überlagert wird.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
onur22
User
Beiträge: 19
Registriert: Freitag 28. Dezember 2018, 21:25

ThomasL hat geschrieben: Sonntag 20. Januar 2019, 00:29 Hört sich mir ein wenig nach hacking und cracking an....
Nein, ich möchte Bots machen, also Abläufe automatisieren, wie gesagt.

Was du nennst, ist aber scheinbar durchaus gängig, wenn man Memory Reading nutzt. Das findet man auch viel im Internet, aber auch das findet nur in C++ etc. statt, weshalb mir das nicht hilft.
alles ist als Einsteiger möglich. Es ist nur die Frage, wie lange es dauert, bis man die nötigen Vorkenntnisse erworben hat.
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

onur22 hat geschrieben: Sonntag 20. Januar 2019, 14:53 Nein, ich möchte Bots machen, also Abläufe automatisieren, wie gesagt.
Falls du damit einen Bot für ein Computerspiel meinst, kommt zu den von den anderen beschriebenen Schwierigkeiten noch hinzu, dass Computerspiele, bei denen das relevant ist, häufig Technologien einsetzen, um sich aktiv gegen Speicherzugriffe und -manipulationen zu schützen.
onur22
User
Beiträge: 19
Registriert: Freitag 28. Dezember 2018, 21:25

nezzcarth hat geschrieben: Sonntag 20. Januar 2019, 15:35
onur22 hat geschrieben: Sonntag 20. Januar 2019, 14:53 Nein, ich möchte Bots machen, also Abläufe automatisieren, wie gesagt.
Falls du damit einen Bot für ein Computerspiel meinst, kommt zu den von den anderen beschriebenen Schwierigkeiten noch hinzu, dass Computerspiele, bei denen das relevant ist, häufig Technologien einsetzen, um sich aktiv gegen Speicherzugriffe und -manipulationen zu schützen.
Macht ja nichts
um mal jemanden zu zitieren
alles ist als Einsteiger möglich. Es ist nur die Frage, wie lange es dauert, bis man die nötigen Vorkenntnisse erworben hat.
nach dem motto lerne ich
alles ist als Einsteiger möglich. Es ist nur die Frage, wie lange es dauert, bis man die nötigen Vorkenntnisse erworben hat.
Antworten