Ethonmem - Eine Memoryhacking Library für Linux
-
Hoi
Ich habe mich lange damit beschäftigt meine Memoryhacking Library für Windows auch für Linux verfügbar zu machen.
Da ich aber mittlerweile sowieso an Linux hängengeblieben bin, versuche ich etwas Besseres auf die Beine zu stellen.Ethonmem soll eine schnelle, robuste Library unter der LGPL Lizenz sein, mit der primären Einsatzgebiet Memoryhacking/-editing und zu einem gewissen Satz Debugging.
Wenn die Bibliothek in ihren Grundfesten steht werde ich ein grafisches Frontend ala CheatEngine (für Windows) bauen - Nur möglichst schneller und eleganter.
Das Ganze wird per SVN verwaltet, und zwar hier sobald ich Lust habe eine Initialrevision zu committen: http://code.google.com/p/ethonmem/source/browse/
Nun ja, mein Ansatzpunkt wäre erst mal Informationen über Systemresourcen zu sammeln. Aus gegebenem Anlass ist der erste Teil eine Möglichkeit über die Speicherregionen beliebiger Usermode-Prozesse iterieren und Infos über sie auslesen zu können.
Jetzt habe ich den ersten Code verbrochen und möchte erfahrene C++-Programmierer darum bitten zu checken ob der Code so 'perfekt' ist - Ich möchte möglichst schnellen, schönen und robusten Code ohne auf C-Hacking zurückzufallen:
MemoryRegions.hpp: http://pastebin.com/cnYt6D39
MemoryRegions.cpp: http://pastebin.com/ZiC00Bs1Das wäre es schon. Falls irgendjemand Interesse haben sollte sich zu beteiligen, gerne.
Grüße,
Ethon
-
Auf dem SVN ist ein Update online, Dokumentation + Prozess-Funktionen.
-
So, das Projekt ist mittlerweile um mehrere GRößenordnungen gewachsen.
Abhängigkeiten sind derzeit Boost und ein C++0x-fähiger Compiler.Dabei ist jetzt unter anderem:
- MemoryRegions + Iterator + Hilfsfunktionen
- Prozesse + Iterator + Hilfsfunktionen
- Threads + Iterator + Hilfsfunktionen
- Rudiemtäre Debugging-Engine (Wrapper um ptrace)
- Prozesspeichermanipulation
- Methoden um Prozesspeicher nach Werten zu durchsuchen
- Elegante Fehlerbeschreibungen.
- Fast vollständig per Doxygen dokumentiert.Todo:
- remote_ptr (STL-Algorithmen im fremden Speicher ausführbar machen)
- Sobald Debugger::executeSyscall funktioniert wird ein remote Memory Allocator implementiert.
- Dynamic Library injection.
- Code execution units für x86/x64-64 assembler und Python.
- Python-bindings.Der Code ist nach wie vor im Googlecode-Repo zu finden: http://code.google.com/p/ethonmem/source/checkout
Besonders wegen Debugger::executeSyscall bräuchte ich Hilfe, durch die fehlende Funktionalität wird meine ganze Entwicklung behindert, würde mich freuen wenn mir jemand auf die Fährte helfen könnte.
Grüße,
Ethon