Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Easy Crackme

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General programming -> Crackmes
View previous topic :: View next topic  
Author Message
dnsi0
I post too much
Reputation: 0

Joined: 04 Jan 2007
Posts: 2674

PostPosted: Sun Apr 12, 2009 9:48 am    Post subject: Easy Crackme Reply with quote

Patch it so that it always give a success message.
Back to top
View user's profile Send private message
HolyBlah
Master Cheater
Reputation: 2

Joined: 24 Aug 2007
Posts: 446

PostPosted: Sun Apr 12, 2009 11:14 am    Post subject: Reply with quote

Patched the compare
Back to top
View user's profile Send private message
pkedpker
Master Cheater
Reputation: 1

Joined: 11 Oct 2006
Posts: 412

PostPosted: Mon Apr 13, 2009 12:08 pm    Post subject: Reply with quote

I tried to solve by putting in password but failed

but its if if(EncryptText(Text) = 111) then make thread for win() function with messagebox for win.

IDK if i got it correctly.

Code:

v2 = ((INPUTT + v4 - 1) & 0xff) ^
        ((((INPUTT + v4 - 1) << 6) & 0xff) + 1048575) &
        ((unsigned int)v2 >> (INPUTT + v4 - 1) & 0xff);


Code:

int __fastcall CHECK_PREVIOUS_DWORD(int result)
{
  if ( result )
    result = *(_DWORD *)(result - 4);
  return result;
}

int __fastcall CHECK_ANSWER(int INPUT)
{
  int v1; // ebx@1
  int v2; // esi@1
  int v3; // ST00_4@1
  signed int v4; // eax@2
  int v6; // eax@1
  int INPUTT; // [sp+8h] [bp-4h]@1
  int v9; // [sp-Ch] [bp-18h]@1

  INPUTT = INPUT;
  System____linkproc___LStrAddRef();
  v3 = *MK_FP(__FS__, 0);
  *MK_FP(__FS__, 0) = &v9;
  v2 = 305419896;
  v6 = CHECK_PREVIOUS_DWORD(INPUTT);
  v1 = v6;
  if ( v6 )
  {
    v4 = 1;
    do
    {
      v2 = *(_BYTE *)(INPUTT + v4 - 1) ^ ((*(_BYTE *)(INPUTT + v4 - 1) << 6) + 1048575) & ((unsigned int)v2 >> *(_BYTE *)(INPUTT + v4 - 1));
      ++v4;
      --v1;
    }
    while ( v1 );
  }
  *MK_FP(__FS__, 0) = v3;
  return System____linkproc___LStrClr();
}

int __stdcall START_THREADS(int a1)
{
  int v1; // ST18_4@1
  int INPUT; // [sp+4h] [bp-8h]@1
  int v5; // [sp-Ch] [bp-18h]@1
  DWORD ThreadId; // [sp+8h] [bp-4h]@3

  INPUT = 0;
  v1 = *MK_FP(__FS__, 0);
  *MK_FP(__FS__, 0) = &v5;
  if ( **(_DWORD **)a1 == -827473698 )
  {
    INPUT = Controls__TControl__GetText();
    if ( CHECK_ANSWER(INPUT) == 111 )
      CreateThread(0, 0, (DWORD (__stdcall *)(LPVOID))WIN, 0, 0, &ThreadId);
    else
      CreateThread(0, 0, (DWORD (__stdcall *)(LPVOID))FAIL, 0, 0, &ThreadId);
  }
  *MK_FP(__FS__, 0) = v1;
  return System____linkproc___LStrClr();
}


void __stdcall FAIL(LPVOID a1)
{
  MessageBoxA_0(0, "Password Is Fail", "Fail", MB_ICONERROR);
  ExitThread(0);
}

void __stdcall WIN()
{
  MessageBoxA_0(0, "Password Is Sucess", "Sucess", MB_ICONINFORMATION);
  ExitThread(0);
}

_________________
Hacks I made for kongregate.
Kongregate Universal Badge Hack: http://forum.cheatengine.org/viewtopic.php?p=4129411
Kongreate Auto Rating/Voter hack: http://forum.cheatengine.org/viewtopic.php?t=263576
Took a test lol
Back to top
View user's profile Send private message
dnsi0
I post too much
Reputation: 0

Joined: 04 Jan 2007
Posts: 2674

PostPosted: Mon Apr 13, 2009 6:09 pm    Post subject: Reply with quote

pkedpker wrote:
I tried to solve by putting in password but failed

but its if if(EncryptText(Text) = 111) then make thread for win() function with messagebox for win.

IDK if i got it correctly.

Code:

v2 = ((INPUTT + v4 - 1) & 0xff) ^
        ((((INPUTT + v4 - 1) << 6) & 0xff) + 1048575) &
        ((unsigned int)v2 >> (INPUTT + v4 - 1) & 0xff);


Code:

int __fastcall CHECK_PREVIOUS_DWORD(int result)
{
  if ( result )
    result = *(_DWORD *)(result - 4);
  return result;
}

int __fastcall CHECK_ANSWER(int INPUT)
{
  int v1; // ebx@1
  int v2; // esi@1
  int v3; // ST00_4@1
  signed int v4; // eax@2
  int v6; // eax@1
  int INPUTT; // [sp+8h] [bp-4h]@1
  int v9; // [sp-Ch] [bp-18h]@1

  INPUTT = INPUT;
  System____linkproc___LStrAddRef();
  v3 = *MK_FP(__FS__, 0);
  *MK_FP(__FS__, 0) = &v9;
  v2 = 305419896;
  v6 = CHECK_PREVIOUS_DWORD(INPUTT);
  v1 = v6;
  if ( v6 )
  {
    v4 = 1;
    do
    {
      v2 = *(_BYTE *)(INPUTT + v4 - 1) ^ ((*(_BYTE *)(INPUTT + v4 - 1) << 6) + 1048575) & ((unsigned int)v2 >> *(_BYTE *)(INPUTT + v4 - 1));
      ++v4;
      --v1;
    }
    while ( v1 );
  }
  *MK_FP(__FS__, 0) = v3;
  return System____linkproc___LStrClr();
}

int __stdcall START_THREADS(int a1)
{
  int v1; // ST18_4@1
  int INPUT; // [sp+4h] [bp-8h]@1
  int v5; // [sp-Ch] [bp-18h]@1
  DWORD ThreadId; // [sp+8h] [bp-4h]@3

  INPUT = 0;
  v1 = *MK_FP(__FS__, 0);
  *MK_FP(__FS__, 0) = &v5;
  if ( **(_DWORD **)a1 == -827473698 )
  {
    INPUT = Controls__TControl__GetText();
    if ( CHECK_ANSWER(INPUT) == 111 )
      CreateThread(0, 0, (DWORD (__stdcall *)(LPVOID))WIN, 0, 0, &ThreadId);
    else
      CreateThread(0, 0, (DWORD (__stdcall *)(LPVOID))FAIL, 0, 0, &ThreadId);
  }
  *MK_FP(__FS__, 0) = v1;
  return System____linkproc___LStrClr();
}


void __stdcall FAIL(LPVOID a1)
{
  MessageBoxA_0(0, "Password Is Fail", "Fail", MB_ICONERROR);
  ExitThread(0);
}

void __stdcall WIN()
{
  MessageBoxA_0(0, "Password Is Sucess", "Sucess", MB_ICONINFORMATION);
  ExitThread(0);
}


Sorta. You got the createthread part. And sorta into the encryption thingy.
Back to top
View user's profile Send private message
pkedpker
Master Cheater
Reputation: 1

Joined: 11 Oct 2006
Posts: 412

PostPosted: Tue Apr 14, 2009 12:06 am    Post subject: Reply with quote

i gave up anyways but is it possible to pm or or paste here if u dont care the encryption part i wanna see how close I came.
_________________
Hacks I made for kongregate.
Kongregate Universal Badge Hack: http://forum.cheatengine.org/viewtopic.php?p=4129411
Kongreate Auto Rating/Voter hack: http://forum.cheatengine.org/viewtopic.php?t=263576
Took a test lol
Back to top
View user's profile Send private message
Flyte
Peanuts!!!!
Reputation: 6

Joined: 19 Apr 2006
Posts: 1887
Location: Canada

PostPosted: Tue Apr 14, 2009 1:29 am    Post subject: Reply with quote

Well, it isn't exactly the smartest password protection, considering there are an infinite (baring memory restrictions) number of possible passwords.

Here are the first 10 that are 5 characters long:

Code:
ahfcc
ehfcc
hhfcc
aaadc
baadc
caadc
daadc
eaadc
faadc
gaadc


Here is a program that generates all the passwords for a set string length (for characters a->z only):

Code:
#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::string;

void __fastcall Bruteforce(string &lol, int index)
{
   if(index >= 0) {
      for(char a = 'a'; a < 'z'; a++) {
         lol[index] = a;
         Bruteforce(lol, index-1);
      }
   } else {
      register int temp = 305419896;
      for(int j = 0; j < lol.length(); j++) {
         temp = lol[j] ^ ((lol[j] << 6) + 1048575) & (temp >> lol[j]);
      }
      if(temp == 111) {
         cout << lol << endl;
      }
   }
}

void Generate(int len)
{
   string lol;
   lol.clear();
   lol.resize(len+1);
   Bruteforce(lol, len-1);
}

int main()
{
   Generate(5);
   cin.sync();
   cin.ignore();
   return 0;
}
Back to top
View user's profile Send private message
dnsi0
I post too much
Reputation: 0

Joined: 04 Jan 2007
Posts: 2674

PostPosted: Tue Apr 14, 2009 5:51 pm    Post subject: Reply with quote

Flyte wrote:
Well, it isn't exactly the smartest password protection, considering there are an infinite (baring memory restrictions) number of possible passwords.

Here are the first 10 that are 5 characters long:

Code:
ahfcc
ehfcc
hhfcc
aaadc
baadc
caadc
daadc
eaadc
faadc
gaadc


Here is a program that generates all the passwords for a set string length (for characters a->z only):

Code:
#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::string;

void __fastcall Bruteforce(string &lol, int index)
{
   if(index >= 0) {
      for(char a = 'a'; a < 'z'; a++) {
         lol[index] = a;
         Bruteforce(lol, index-1);
      }
   } else {
      register int temp = 305419896;
      for(int j = 0; j < lol.length(); j++) {
         temp = lol[j] ^ ((lol[j] << 6) + 1048575) & (temp >> lol[j]);
      }
      if(temp == 111) {
         cout << lol << endl;
      }
   }
}

void Generate(int len)
{
   string lol;
   lol.clear();
   lol.resize(len+1);
   Bruteforce(lol, len-1);
}

int main()
{
   Generate(5);
   cin.sync();
   cin.ignore();
   return 0;
}


GJ for reversing it and getting the hashing algorithm X.X
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General programming -> Crackmes All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites