4k Intros - wie?



  • Hey

    ich habe eine frage bezüglich solcher 4k intros.
    wie werden die denn programmiert?!

    wenn ich:

    #include <iostream>
    
    int main()
    {
        std::cout << "Hallo Welt!" << std::endl;
        return 0;
    }
    

    kompiliere, hab ich ein 700kb Programm. lol

    Hab mir eine Präsentation angesehen, wo solche 4k Intros vorgestellt wurden.
    Mein erster Gedanke war, dass es eine .exe wäre die eine andere .exe aufruft. Ist natürlich quark^^

    meine frage: wie machen die das?



  • julius´´ schrieb:

    kompiliere, hab ich ein 700kb Programm.

    erstens: kein <iostream> (500k)
    zweitens: keine exceptions (30k)
    drittens: keinen startup-code, der erstmal eine konsole augmacht, die kommandozeilenparameter bereitstellt, globale variablen konstruiert, atexit bereitstellt und so sachen, die man nicht braucht.
    ich hab zwar noch keine gebaut, aber ich nehme an, ich würde kein C oder C++ nehmen, sondern rohes assembler und je nachdem vielleicht ein wenig forth.



  • #include<Windows.h>
    
    int main() {
    	MessageBox(0, L"Hello World", L"Hello World", MB_OK);
    	return 0;
    }
    

    3k exe mit VS2010 im Release Modus 😉

    http://keyj.s2000.ws/?p=29



  • Nein. Die werden keineswegs nur in Assembler geschrieben. Sehr oft sind das "normale" C oder C++ Binarys, natürlich wird schon geschaut, dass man nicht gerade ein Haufen Libs hat, die man nicht braucht.

    Dazu kommen am Ende dann noch irgendwelche Packerprogramme, wie z.B Crinkler, die genau für das gemacht sind:
    http://www.crinkler.net/

    Gibt noch andere, einfach mal in den readme's der Intros schauen da sind die Packer meist auch genannt.



  • upx ist zum Beispiel einigermaßen gut. Damit kann man ne ganze Menge rausholen.

    Im Code wird dann viel mit Rekursion gearbeitet. Da muss man dann auch wirklich gut mit umgehen können.^^


Log in to reply