
noch so ein Sleep-Encryption-Ding. habe für dieses hier auch den Standard-GitHub-Repo-Namen verwendet.
noch ein weiteres Sleep-Encryption-Ding. Habe dafür auch den Standard-GitHub-Repo-Namen verwendet.
TpAllocWork + TpPostWork + TpWaitForWork + TpReleaseWork, um den Callback zu erstellen, auszuführen und zu bereinigen.
Der Callback ist eine zusammengeschusterte Assembly-Routine, die eine Menge ROP-Gadgets aneinanderreiht, die Argumente (entweder festkodierte Werte oder basierend auf einem Offset innerhalb einer Struktur, die als TpAllocWork-Parameter übergeben wird) in die richtigen Register poppen und dann zum nächsten Gadget bzw. zur nächsten Funktion zurückkehren. Zwischen einigen Funktionsaufrufen wird Padding erzeugt, indem 5 Müllwerte gepusht werden, zusammen mit einem Gadget, das den Stack-Pointer um 40 Bytes verschiebt – eine provisorische Lösung, um einige seltsame Stack-Probleme zu beheben, auf die ich gestoßen bin. Das ist wahrscheinlich auch der Grund, warum der Call-Stack furchtbar aussieht, aber ich weiß nicht, wie ich das sonst angehen soll.
Wenn du das erweitern und tatsächlich nützlich machen willst, wirst du auf eine Menge seltsames Stack-Gefrickel stoßen (zumindest bei mir). Außerdem kann ich nicht garantieren, dass die ROP-Gadgets, die ich gefunden habe, in allen Windows-Versionen vorhanden sind (ich habe auf Server 2016 entwickelt).
Kudaes, für die Entwicklung von RustChain, von dem ich die ROP-Idee habe
C5pider, für die Entwicklung von Ekko und die Hilfe beim Verständnis von Sleep Encryption
x86matthew, für die Hilfe beim Beheben seltsamer Stack-Probleme
NinjaParanoid, für einen Blog-Post über die Tp-APIs