so mein erstes crackme -solved

mal gucken wie lange ihr braucht

wichtig ist das ihr die MFC71.dll habt, wenn ich die statisch eingebunden hätte, dann wäre das programm 4 kb zu groß geworden zum hochladen
die meisten c++(windows) programmierer haben die mit sicherheit, aber auch andere programme verwenden sie
 
#include <afxtempl.h>

bool algo(long x)
{
long pw = 13;

CArray<bool> myarray;
myarray.SetSize(3,3);

myarray.SetAt(0 ,false);
myarray.SetAt(1, true);
myarray.SetAt(2, true);

char *c = "Richtig";

__asm{
mov eax, x
add eax, 1015
mov pw, eax
sub pw,1015
mov ebx,pw
mov x,ebx//muss so bleiben
mov ecx,c
push ecx
mov ecx,pw
pop ecx
push x
add x, eax
pop x



}
if(x / 15 == 676716)
{
myarray.SetAt(0, true);
}
if(x < 10140000)
{
myarray.SetAt(1, false);
}
if(x - 740 != 10150000)
{
myarray.SetAt(2, false);
}

if(myarray.GetAt(0) == true && myarray.GetAt(1) ==true && myarray.GetAt(2) != false)
{
return true;
}
else
return false;

};


Da hat wohl auch mein von hand geschriebener inline assembler nichts gebracht ;(
 
wenn die erste bedingung zutrifft sind die anderen beiden automatisch auch richtig, von daher brauchte man die garnicht zu reversen
 
wenn ich mit f9 zur eingabe gekommen bin und dann eine zahl eingebe,
wie kann ich dann weiter debuggen ?

bin neu bei olly :rolleyes:
 
dann landest Du wieder bei Deinem BP (den Du vorher hoffentlich gesetzt hast ;) ) . Also BP platzieren, F9 (damit es läuft) und dann was eingeben.
 
ich setze mit f2 einen bp lasse es mit f9 bis zur eingabe laufen
gebe eine zahl ein drücke okay
und dann ist das fenster immer aktiv und ich kann in olly nix mehr machen
 
Moment, wichtig ist, den BP nach der Eingabe zu setzen, also in diesem Fall z.B
hier:
Code:
00401204   |.  C745 F0 20344000                  MOV [LOCAL.4],crackmic.00403420                   ;  ASCII "Richtig"
0040120B   |.  8B45 08                           MOV EAX,[ARG.1]
0040120E   |.  05 F7030000                       ADD EAX,3F7
irgendwo. Mit F7 kann man immer Schrittweise durchgehen, F9 hat dann den Sinn, große Passagen zu überspringen. Und BP unterbrechen eben den Programmablauf. In diesem Fall will man gar nicht durch die ganze Exe durch, sondern direkt bei der Bearbeitung der Eingabe landen und schauen, was da passiert - also muss auch der BP sich in der Nähe befinden.
Wo setzt Du denn Deinen BP?
 
Zurück
Oben