Mein erstes CrackMe [Status: solved]

Hi,

wenn jemand Lust hat sich dran zu versuchen, kann er es ja mal probieren. Obs leicht oder schwer ist kann ich nicht sagen, es ist aber "ausgewöhnlich".

Ziel ist das Passwort zu finden, alternativ kann auch gepachted werden.

Edit: "Unable to Aquire blabla" sollte gefixt sein.
Edit2: Eine weitere, kleine Hürde eingebaut.
Edit3: CrackMe2 hochgeladen. Verbesserter Schutz eingebaut.

-KarlRanseier
 
RE: Mein erstes CrackMe

Hi also unpacked manual kein ding bloß dein crackme gibt beim start ne error und zwar!

Unable to Acquire Cypt Provider!

es kommt also nix zur passwort eingabe :D
Oder soll das so ein?
 
Bei mir läuft es.
Allerdings finde ich keinen Button und auch keine Meldung, nachdem ich was eingegeben habe.

Aber das soll wohl so sein.

Wenn ich heute Abend zu Hause bin, guck ich mir das mal an.
MEW 11 1.2 -> NorthFox/HCC Encrypted

root
 
Original von KarlRanseier
Oh, ich schaus mir später nochmal kann. Scheint wohl was schief gelaufen zu sein.

Karl

Hi Karl
also ich nutze windows Xp home mit allen updates wens dir weiter hilft wie gesagt es läüft leider nicht(
Aber ich sehe dann heute abend noch mal nach ob es dann funzd :D
Wen dann kommt ein flash tut wieder :D
Best Regards
KingSuperFly
 
Hi SUID
also sehe dir mal diese Bp liste an solte dir weiter helfen denke ich)
Diese liste enstand durch Dielbach Ratte und mich)
Greetz in dem sinne noch mal :D
@kein Problem kommt wen als SWF datei :D
Code:
Die wichtigsten Bps^^

RegQueryValueExA
getdlgitemtexta
getwindowtexta
lstrcmpA
GETWINDOWSLONG 
 vbaStrCmp
GetPrivateProfileStringA
GetPrivateProfileIntA
WritePrivateProfileStringA
WritePrivateProfileIntA
messageboxa 



CreateWindowEX 
destroywindow 


getlocaltime" und "gettickcount" calls, die werden gern benutzt um 'ne trial rückwärts zu zählen. 
eine andere möglichkeit ist die trialzeit in milisekunden umzurechenen und nach dem wert zu suchen... 

z.B. push 1000h = 1000 millisekunden = 1 sekunde 
3000 dec = 3 Sekunden. 
0BB8 hex = 3 Sekunden. 

Reading & Writing Files 
----------------------- 
These are generic calls to read/write to a file, usually binary in nature: 

ReadFile 
WriteFile 

more on locating file accesses: 

SetFilePointer 

GetSystemDirectory 
GetSystemDirectoryA 

These are the most common calls to read/write from/to a *.ini file 
or a file of similar format. 

for 16-bit win apps: 

GetPrivateProfileString 
GetPrivateProfileInt 
WritePrivateProfileString 
WritePrivateProfileInt 

for 32-bit win apps: 

GetPrivateProfileStringA 
GetPrivateProfileIntA 
WritePrivateProfileStringA 
WritePrivateProfileIntA 

Interrupt info: 
_____________ 

file accesses (A couple by YOSHi) 

bpint 21 if (ah==3d) 
bpint 2f if (ah==01) 

The Registry 
------------ 
Create or delete a new key in the registry: 

RegCreateKey 
RegDeleteKey 

RegCreateKeyA 
RegDeleteKeyA 


Read a value from the currently open registry key: 

RegQueryValue 
RegQueryValueA 


Open or close a registry key: 

RegCloseKey 
RegOpenKey 

RegCloseKeyA 
RegOpenKeyA 



Dialog Boxes 
------------ 
Get text or integer from a dialog box edit: 

GetWindowText 
GetDlgItemText 

GetWindowTextA 
GetDlgItemTextA 

GetDlgItemInt 


Open a message box, usually one that says "invalid registration": 

MessageBox 
MessageBoxA 
MessageBoxExA 
MessageBeep 

and other ways to display text... 

SENDMESSAGE 
WSPRINTF 

Time & Date 
----------- 
These get the time and date 

GetSystemTime 
GetLocalTime 

SystemTimeToFileTime 

oder GetTickCount 

Generating a Window 
--------------------- 

createwindow 
createwindowexa 
showwindow 

bitblt (a type of memory move, similar to hmemcpy) 

CD-ROM Calls (Donated by: +-=Riddler=-+) 
---------------- 

GetDriveType (if eax=5 then it is a cdrom check) 
GetDriveTypeA 

GetDriveType Return Function codes: 

Value Meaning 
0 Drive Cannot Be determined 
1 Root Dir Does not exist 
2 DriveRemoveable 
3 A Fixed Disk (HardDrive) 
4 Remote Drive(Network) 
5 Cd-Rom Drive 
6 RamDisk 

GetLogicalDrives 
GetLogicalDrivesA 

GetLogicalDriveStrings 
GetLogicalDriveStringsA 

OTHER CDROM INFORMATION 

Wen man kein error message bekommt mal versuchen auf fvbaStrCmp zu Breaken! 
fvbaStrCmp 
fvbaStrCmp 
showwindow 
showwindow 

Delphi programme! 
destroywindow 
bei delphi startnags is destroywindow immer nen netter breakpoint. 
CreateWindowEX 
CreateWindowEX 
Such im Olly nach der bad Meldung. 

Du findest darüber einen JNZ, und darüber einen Call in dem in ca.90%aller Fälle die ser**al Routine stattfindet. 
In den gehst du rein (rechte Maustaste Follow). 
Du findest einen push ebp und setzt nen BP drauf(Breakpoint). 
Nun startest du das Prog, gibst deine Daten ein(Einzelplatz Lizenz), und Olly breakt. 
Nun stepst du mit F8 durch den Code(beachte rechts oben das Fensterlein im Olly), und bald hast du die Trophäe!


CreateWindowEX 
destroywindow 


getlocaltime" und "gettickcount" calls, die werden gern benutzt um 'ne trial rückwärts zu zählen. 
eine andere möglichkeit ist die trialzeit in milisekunden umzurechenen und nach dem wert zu suchen...

z.B. push 1000h = 1000 millisekunden = 1 sekunde 
3000 dec = 3 Sekunden. 
0BB8 hex = 3 Sekunden.

1) Data Type Conversion: 
i) __vbaI2Str Converts a String to Byte or Integer 
ii)__vbaI4Str Converts a String to Long 
iii)__vbar4Str Converts a String to Single 
iv)__vbar8Str Converts a String to Double 
v) VarCyFromStr (for VB6. You have to have OLEAUT32.DLL in your WINICE.DAT)String to Currency 
vi) VarBstrFromI2 (for VB6. You have to have OLEAUT32.DLL in your WINICE.DAT)Integer to String: 

2) Moving Data 
i) __vbaStrCopy - Copies a String to memory - same as Windows' API HMEMCPY 
ii) __vbaVarCopy - Copies a Variant to memory 
iii) __vbaVarMove - Copies a Variant to memory 

3) Mathematical 
i) __vbavaradd - Add two Variants 
ii) __vbavarsub - Subtract two Variants 
iii) __vbavarmul - Multiply two Variants 
iv) __vbavaridiv - Divide two Variants to get an Integer 
v) __vbavarxor - XOR 

4) Miscellaneous 
i) __vbavarfornext - Used in codes where there is a For... Next... Statement (Loop) 
ii) __vbafreestr 
iii) __vbafreeobj 
iv) __vbastrvarval - Get the value from a specific location in a String 
v) multibytetowidechar 
vi) rtcMsgBox - Shows the message box - same as Windows' API messagebox/a/exa 
vii) __vbavarcat - Joins 2 Variants together 
viii) __vbafreevar 
ix) __vbaobjset 
x) __vbaLenBstr - Gets string length 
xi) rtcInputBox - Shows a Visual Basic Input Box - same as window's API getwindowtext/a, GetDlgItemtext/a 
xii) __vbaNew - shows a dialogue box - same as Windows' API Dialogbox 
xiii) __vbaNew2 - shows a dialogue box - same as Windows' API Dialogboxparam/a 
xiv) rtcTrimBstr - trims a string 

5) Comparisons 
i) __vbastrcomp - Compares two strings - Same as Window's API lstrcmp 
ii) __vbastrcmp - Compares two strings - Same as Window's API lstrcmp 
iii) __vbavartsteq - Compares two variants 
iv)__vbaFpCmpCy - Compares Floating point to currency. sp; - Compares Floating point to currency
 
Klasse. Das sieht doch mal sehr gut aus und kann so einem Hobby-Crackme-Vergewaltiger wie mir sicher weiter helfen. :D

Merci :)

Viele Grüsse

root
 
Hi ATHO
jo complett ist sie nicht(
aber ich ediere mal den post und füge GETWINDOWSLONG und vbaStrCmp hinzu)
Danke für die vervollständigung.
Ps: ich hätte auch noch ne nette patch tabbele wie man was patchen solte wen intresse vorhanden sein sollte :D
Best Regards
KingSuperFly
 
Das verstehst du unter einer Patch-Tabelle ? Conditional-Jumps ?
Die kennt man doch. :)

Ich dachte das wäre jetz etwas augeklügelteres.
 
Hi
für ausgeklügeltes sollte man asm beherschen dann sollte es kein problem sein,obwohl ich ja selber noch viel lernen muß an wissen)
Ich denke aber diese tabelle hilft newbie zu verstehen,wie man jumps zur badboy mesage zb umkehren kann.
Sollte diese tabelle nicht weiterhin erwünscht sein werde ich entfernen =)
Greetz
KingSuperFly
 
So, den OEP habe ich (glaube ich zumindest). Aber ich kriegs nich gebacken die IAT zu rekonstruieren.

Also zuerst habe ich ganz normal das Viech in OllyDbg geladen. Man sieht einen JMP. Dann bin ich einen weitergesteppt.

Nun sind wir hier:

Code:
 BE 1C904100     MOV ESI,crackMe.0041901C
 8BDE            MOV EBX,ESI
 AD              LODS DWORD PTR DS:[ESI]

Dann habe ich runtergescrollt bis zum Return.(C3). Breakpoint gesetzt, und dann F9.
Angekommen und gleich einen weiter steppen.
Das sieht jetzt so aus:
DAS ist der OEP:

Code:
 6A            DB 6A                                    ;  CHAR 'j'

Dann mit Strg+A den Code analysiert.
So mit Ollydump das ganze jetzt dumpen.
Ich hab mal probiert ihn die IAT rebuilden zu lassen. Hat nicht hingehauen. Also nächstes mal Haken weg und speichern: dump.exe

So jetzt mein Problem. Der Import Reconstrucor findet nichts per AutoSearch. Wenn ich nur Get Imports klicke, zeigt er an, dass die Imports alle nicht gültig sind ;(
 
Original von hbier
was ist ein "olly"? ist aus deinem log da.
Hi hbier
Also Olly ist ein Debuger )
Mit dem hab ich ja in dem Flash movie hand angelegt.
So zu sagen dein arbeitswerckzeug beim reversing ist er.
Bei intresse das Handwerck des reversing zu erlernen kannst du jat mal auf bei googel nach ollydebug suche,n oder auf meiner Hp dir den Olly Shadow laden.
Dir sollte nur eins klar sein,reversing heißt sehr viel lesen und sich wissen aneignen,der selbst versuche nicht auschließt.Die meisten scheitern schon daran.
Also immer viel tuts lesen und dein brain nutzen,und versuchen das erlangte wissen um zu setzen 8)
Es gibt genug Tuts für newbies zum einstieg in die reversing welt,wenn auch oft English :rolleyes:

@+++ATH0
ich habe mal fix ein Flash movie erstellt zum easy Oep finding und mupen des target bloß du siehts auch das teil läüft halt nich uf meinen pc"!
Siehe oberen post,deine oep ist verkehrt bestimmt mein ist 4F71 und deine? )
hie rmal das flash movie zum mupen.

http://rapidshare.de/files/3055149/oep.rar.html
 
So ich hab jetz einfach die RVA und die Grösse aus dem Flash-Movie bei dir übernommen. Denn alleine will der Import Reconstructor bei mir nichts finden X(. Merkwürdig...
Aber danke, jetz ist es wenigstens unpacked. Jetz gehts erstmal auf nen Grillabend und morgen mach ich dann weiter. :D
 
Hi
viel spaß beim grillen)
bis morgen mal ,mach dann morgenmal nen pick von deinen importrec einstellungen bitte)
ich nutze ne fixed version von importrec =)
Greetz
KingSuperFly
 
Hi,

so, ihr könnte euch das hackit nochmals von oben runterladen, es sollte nun ohne Fehlermeldung bei allen laufen. Falls diese Fehlermeldung doch noch erscheint, bitte bescheid sagen!

Viel Spaß damit!

Karl
 
Zurück
Oben