Archive for August 2019

InnoSetup analysieren bzw. auseinandernehmen

8 August 2019

Viele Installationsprogramme sind mit Hilfe von InnoSetup (http://www.jrsoftware.org/) erstellt. Gerade hatte ich das Problem, dass ein Installationsprogramm Schwierigkeiten machte und aufgrund eines schwächelnden Internetdienstes eine Installation nicht möglich war. Um der Sache auf die Spur zu kommen, musste zunächst die Installations-EXE-Datei mittels Innounp (https://sourceforge.net/projects/innounp/) was für Inno-Unpacker steht, entpackt werden.

..\innounp.exe -x -m ..\ProblemSetup.exe

Es werden automatisch Unterverzeichnisse mit den im Setup-Programm enthaltenen Dateien angelegt. Die Verzeichnis-Struktur sieht z. B. so aus:

embedded
{code_Get_InstPath}
{localappdata}
{tmp}
{win}

Dabei enthält das Verzeichnis embedded die Datei CompiledCode.bin welche ein mit RemObject Pascal Script Engine erstellte Datei ist (https://www.remobjects.com/ps.aspx). Möchte man nun verstehen, was in CompiledCode.bin abgeht, kann einem ein kleiner Pascal Script Disassembler mit Namen IFPSTools helfen: https://github.com/Wack0/IFPSTools, er benötigt aber eine PHP-Runtime wie z. B. https://windows.php.net/download#php-7.3. Danach kann man einfach z. B.

.\php.exe .\DisIFPS.php ‚..\embedded\CompiledCode.bin‘ .\diss.txt

aufrufen und man erhält in diss.txt den Code von CompiledCode.bin. Der Code ist zwar etwas gewöhnungsbedürftig zu lesen aber die Struktur und Vorgehensweise kann doch daraus gelesen werden. Wer Pascalscript besser verstehen will, der sollte sich dies hier durchschauen: https://github.com/remobjects/pascalscript.

Eine Alternative zu InnoUnp sei noch genannt: http://constexpr.org/innoextract. Diese Version läuft unter Linux.

Werbeanzeigen