sweetchip's blog

안녕하세요


Lafarge's CrackMe 0.2버전의 시리얼 생성루틴을 그대로 어셈블리 언어와 합쳐서


코딩해 봤습니다.



crackme.exe


위 파일을 크랙미 원본입니다.






위 사진은 키젠 입니다.



L_key_gen_by_sweetchip.exe




음..


이렇게 딸랑 올리기는 좀 그래서 아래 소스코드 첨부합니다.


//Open Source Project

//Language : C


#include

#include


int main()

{

static int namelen;

static int keylen;

static char name[0x20];

char keytable[0x100] = "_r <()<1-Z2[l5,^";

static char result[0x100];

printf("/////////////////////////////////////////\n");

printf("/////Larfarge's CrackMe 0.2v ///////\n");

printf("///// Key-Gen ///////\n");

printf("/////////////////////////////////////////\n");

printf("MY NAME IS : ");

gets(name);


namelen = strlen(name);

keylen = strlen(keytable);


__asm

{

XOR ESI,ESI

LEA EDI,DWORD PTR DS:keytable

MOV EAX,DWORD PTR DS:namelen


}

__asm

{

go:

mov eax,esi

push 0x19

cdq

idiv DWORD PTR DS:keylen

mov eax,esi

pop ebx

lea ecx,DWORD PTR DS:[EDI EDX]

cdq

idiv DWORD PTR DS:namelen

LEA EAX,DWORD PTR DS:name

MOVZX EAX,BYTE PTR DS:[EAX EDX]

MOVZX EDX,BYTE PTR DS:[ECX]

XOR EAX,EDX

cdq

IDIV EBX

add dl,0x41

inc esi

cmp esi,DWORD PTR DS:keylen

mov BYTE PTR DS:[ECX],DL

jl go

}

__asm

{

LEA ESI,DWORD PTR DS:keytable

LEA EDI,DWORD PTR DS:result

MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

MOV BYTE PTR DS:[result 0x4],0x2D


LEA ESI,DWORD PTR DS:[keytable 0x4]

LEA EDI,DWORD PTR DS:[result 0x5]

MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

MOV BYTE PTR DS:[result 0x9],0x2D


LEA ESI,DWORD PTR DS:[keytable 0x8]

LEA EDI,DWORD PTR DS:[result 0xA]

MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

MOV BYTE PTR DS:[result 0xE],0x2D

LEA ESI,DWORD PTR DS:[keytable 0xC]

LEA EDI,DWORD PTR DS:[result 0xF]

MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

}


printf("My serial is : %s\n\nMade By sweetchip 2012/10/16\n\nhttp://pgnsc.tistory.com, http://studyc.co.kr\n\n",result);

system("pause");

}


신고

댓글 1