Seite 1 von 1

Memory Reading in Python?

Verfasst: Samstag 19. Januar 2019, 15:20
von onur22
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

Re: Memory Reading in Python?

Verfasst: Samstag 19. Januar 2019, 15:26
von Sirius3
@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?

Re: Memory Reading in Python?

Verfasst: Samstag 19. Januar 2019, 16:22
von __blackjack__
@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?

Re: Memory Reading in Python?

Verfasst: Samstag 19. Januar 2019, 17:22
von onur22
__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.

Re: Memory Reading in Python?

Verfasst: Samstag 19. Januar 2019, 17:44
von __blackjack__
@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.

Re: Memory Reading in Python?

Verfasst: Samstag 19. Januar 2019, 18:02
von Sirius3
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.

Re: Memory Reading in Python?

Verfasst: Sonntag 20. Januar 2019, 00:29
von ThomasL
Hört sich mir ein wenig nach hacking und cracking an....

Re: Memory Reading in Python?

Verfasst: Sonntag 20. Januar 2019, 01:06
von __blackjack__
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.

Re: Memory Reading in Python?

Verfasst: Sonntag 20. Januar 2019, 14:53
von onur22
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.

Re: Memory Reading in Python?

Verfasst: Sonntag 20. Januar 2019, 15:35
von nezzcarth
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.

Re: Memory Reading in Python?

Verfasst: Montag 21. Januar 2019, 17:06
von onur22
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