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
Memory Reading in Python?
@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?
- __blackjack__
- User
- Beiträge: 13107
- 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?
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?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Danke für die Klarstellung__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?
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.
- __blackjack__
- User
- Beiträge: 13107
- 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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
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
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
- __blackjack__
- User
- Beiträge: 13107
- 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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
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.
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 nichtsnezzcarth hat geschrieben: ↑Sonntag 20. Januar 2019, 15:35Falls 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.
um mal jemanden zu zitieren
nach dem motto lerne ichalles ist als Einsteiger möglich. Es ist nur die Frage, wie lange es dauert, bis man die nötigen Vorkenntnisse erworben hat.
alles ist als Einsteiger möglich. Es ist nur die Frage, wie lange es dauert, bis man die nötigen Vorkenntnisse erworben hat.