So etwas wurde breits vor kurzem auf dem Buhaboard vorgestellt - ein Crackme welches eine interne VM nutzt. Allerdings hatte ich schon länger vor, das selber umzusetzen 
Gepackt: nein
Schwierigkeitsgrad: schwer abschätzbar, aber auf jedenfall nicht anfängerfreundlich
Regeln: naja, keine eigene Erfolgsmeldung einpatchen
Ansonsten - Patch, Serial, Keygen - für jeden ist etwas dabei.
Die VM ist im Crackme integriert (es ist also ein ganz normales Programm -nur werden einige Berechnungen von der VM durchgeführt).
Zur VM: ist eine Stackmachine, als Vorbild diente die MIC-1 Architektur (z.B http://www.cs.auc.dk/~mixxel/NA-F03/slides/NA-L3-F03-v2-gray.pdf), wobei ich nicht so ganz runter gegangen bin wie ich wollte (also keine Gatter Nachbildungen usw, war doch etwas zu aufwändig
)). Soweit ich weiß, ist die JVM (Java VM) auch Stackbasiert - ist also keine "Exotik".
Kurz: eine Stackmachine bietet nach "außen" hin keine Register, sondern erledigt alle Operationen über den Stack. Sie hat einen bestimmten Befehlssatz (Add,mov etc), intern wird (wie auch in x86) jeder Befehl duch Microprogramme realisiert in welchen die "elementaren" Befehle genutzt werden (diese sind direkt in der Hardware implementiert) .
Diese Methode erlaubt "nach außen hin" die lustigsten Befehle anzubieten (Fakultätberechnung,GGT,Primzahlcheck usw direkt als Assemblyanweisung
) ohne solche Funktionen alle in der Hardware zu realisieren.
Der Checkalgo ist einfach gehalten, es gibt auch keine wesentlichen "Gemeinheiten", keine nervende Musik etc (ich konnte es mir nicht verkneifen, eine Kleinigkeit gegen ältere IDA Versionen einzubauen
).
Die Entwicklungszeit betrug übrigens nur einige Stunden, trotzdem lässt es sich damit schon recht bequem programmieren (es leben die EQU Ausdrücke in MASM)
Codeausschnitt
x:=10+20;
Ist also gar nicht so weit hergeholt oder gar zu kompliziert, damit wichtige Passagen zu "virtualisieren".
EDIT: habe den IDA-"Schutz" mal rausgenommen
http://cdw.de.vu/vm.zip
oder (wer trotzdem die Auswirktugen sehen möchte - im Anhang ist die "geschützte" Version)
Gepackt: nein
Schwierigkeitsgrad: schwer abschätzbar, aber auf jedenfall nicht anfängerfreundlich
Regeln: naja, keine eigene Erfolgsmeldung einpatchen
Ansonsten - Patch, Serial, Keygen - für jeden ist etwas dabei.
Die VM ist im Crackme integriert (es ist also ein ganz normales Programm -nur werden einige Berechnungen von der VM durchgeführt).
Zur VM: ist eine Stackmachine, als Vorbild diente die MIC-1 Architektur (z.B http://www.cs.auc.dk/~mixxel/NA-F03/slides/NA-L3-F03-v2-gray.pdf), wobei ich nicht so ganz runter gegangen bin wie ich wollte (also keine Gatter Nachbildungen usw, war doch etwas zu aufwändig
Kurz: eine Stackmachine bietet nach "außen" hin keine Register, sondern erledigt alle Operationen über den Stack. Sie hat einen bestimmten Befehlssatz (Add,mov etc), intern wird (wie auch in x86) jeder Befehl duch Microprogramme realisiert in welchen die "elementaren" Befehle genutzt werden (diese sind direkt in der Hardware implementiert) .
Diese Methode erlaubt "nach außen hin" die lustigsten Befehle anzubieten (Fakultätberechnung,GGT,Primzahlcheck usw direkt als Assemblyanweisung
Der Checkalgo ist einfach gehalten, es gibt auch keine wesentlichen "Gemeinheiten", keine nervende Musik etc (ich konnte es mir nicht verkneifen, eine Kleinigkeit gegen ältere IDA Versionen einzubauen
Die Entwicklungszeit betrug übrigens nur einige Stunden, trotzdem lässt es sich damit schon recht bequem programmieren (es leben die EQU Ausdrücke in MASM)
Codeausschnitt
Code:
code1_ db bipush_,10
db bipush_,20
db iadd_
db istore_,X
Ist also gar nicht so weit hergeholt oder gar zu kompliziert, damit wichtige Passagen zu "virtualisieren".
EDIT: habe den IDA-"Schutz" mal rausgenommen
http://cdw.de.vu/vm.zip
oder (wer trotzdem die Auswirktugen sehen möchte - im Anhang ist die "geschützte" Version)