Ausführbare Dateien entpacken

Hallo Khabrovites. Im Rahmen des Kurses "Reverse-Engineering. Basic" hat Alexander Kolesnikov (Spezialist für den komplexen Schutz von Informatisierungsobjekten) einen Artikel vorbereitet.



Wir laden außerdem alle zu einem offenen Webinar zum Thema "Ausnutzung von Schwachstellen im Treiber" ein. Teil 1 " . Die Webinar-Teilnehmer analysieren zusammen mit einem Experten die Sicherheitslücken beim Treiberüberlauf und die Besonderheiten der Entwicklung von Exploits im Kernel-Modus.






In diesem Artikel werden Ansätze zum Analysieren gepackter ausführbarer Dateien mit einfachen Reverse Engineering-Tools erläutert. Wir werden einige der Packer diskutieren, die zum Packen ausführbarer Dateien verwendet werden. Alle Beispiele werden unter Windows ausgeführt. Die untersuchten Ansätze können jedoch problemlos auf jedes Betriebssystem portiert werden.





Toolkit- und Betriebssystemkonfiguration

Für Tests verwenden wir eine virtuelle Maschine unter Windows. Das Toolkit enthält die folgenden Anwendungen:





  • x64dbg Debugger;





  • x64dbg Scylla-Plugin standardmäßig installiert;





  • hiew Demo;





Der schnellste und einfachste Weg, eine ausführbare Datei zu entpacken, ist die Verwendung eines Debuggers. Da wir aber auch die Programmiersprache Python berücksichtigen werden, benötigen wir möglicherweise ein Projekt:





  • uncompile6- Projekt, mit dem Sie den Bytecode einer virtuellen Python-Maschine analysieren können;





  • pyinstallerExtractor ist ein Tool zum Extrahieren eines pyInstaller-Archivs.





Allgemeine Methoden zum Auspacken

, . . , . — UPX. , .





, , . 1.5 .





-? , ? . , :





, UPX:





:





  1. — , , ;





  2. : , .





, , . :





  1. — , ;





  2. — ( , );





  3. ;





  4. .





. . pushad/popad



push



. ESP/RSP, "Hardware Breakpoint" , . , . .





UPX

. UPX:





:





:





ESP — . :





:





, Scylla Hide .





, .





PyInstaller

, . , PyInstaller — , Python . , Python . .





- . Python PyInstaller. :





def main():
    print("Hello World!")

if __name__ == '__main__':
    main()
      
      



pyInstaller



exe



:





pip install pyinstaller
pyinstaller -F hello.py #-F   
      
      



, , . , , , . .





, ./dist/test.exe



. pyinstallerextractor



uncompile3



:





, . exe



. test.pyc



. hiew



:





, Python. — uncompile6



.





.






"Reverse-Engineering. Basic".





« . 1».








All Articles