Es ehrt dich, wenn du nur die komplexeste Variante im Kopf hast, aber ich sprach nunmal davon, dass man PHP nicht als Stub für Methode #1, oder Methode #2 einsetzen kann, weil bamcompile da nicht mitspielen wird.
Eigentlich war das mit den Klassen als Vorschlag gedacht, um den Code weniger aufwändig zu gestalten.
Stell dir mal vor du willst ein Feld in einem Header auslesen und musst da erst 7 (Zahl aus der Luft gegriffen) Zeilen lang mit unpack() rumjonglieren. Ich kann dir versprechen, dass du dann noch bevor du etwas verschlüsselt hast nicht mehr wissen wirst, was in Zeile X gemacht wird.
Übersichtlicher wäre ja ohne Zweifel, wenn man irgendwann halt (braucht selbstverständlich mehr Vorarbeit) ein zusammenhängendes Objekt für eine EXE Hat und dann z.B. sowas machen kann:
$meinExeObjekt->ImageBase = $ibNeu;
Dann weiß man später auch, was wo passiert und der Code ist viel einfacher ausbaubar.
Wenn du C++ wirklich kannst, dann ist das sich nicht verkehrt, zumal du da bereits im Header winnt.h (es reicht windows.h zu inkludieren) alle notwendigen Strukturen definiert hast und dich dann zumindest damit nicht rumärgern musst.
(VB Programmierer müssen sich diese Strukturen selber definieren *hihi* [obwohl die meißten sowieso nur RunPE kopieren und sich somit gar nichts selber definieren müssen...])