사용자 입력부분


키젠 알고리즘의 결과가 push 되는 곳


소문자를 대문자로 바꾸어 주는 알고리즘

push에 들어가는 인자값을 하나씩 역으로 분석하는 것이 빠르다.
 
name에 ABCD를 입력하고 분석 하였다.
 
 
 
edi = 0x0012f538

arg10 : ebp-40 :


 int ebp_40;
 int edi = 1242424; //0x0012f538
 ebp_40 = edi * 3;
 printf("ebp_40 = %X\n", ebp_40);



arg9 : ebp-3c :


 int edx;
 int ebp_3c;
 int ebp_2c;
 ebp_2c = strlen(input);
 edx = ebp_2c;
 ebp_3c = edx * 2;
 printf("ebp_3c = %X\n", ebp_3c);


arg8 : ebp-44 :


int ebp_44 = strlen(input)+edi;
 printf("ebp_44 = %X\n", ebp_44);

arg7 : ebp-38 :


int ebp_38;
 int ebx = 0;
 int ecx;
 int esi;
 edx = strlen(input)-1;
 edi = 0;
 ecx = input[0];
 esi = ecx;
 ebx += esi;
 ebx *= ecx;
 edx--;
 do{
  ecx = input[edi];
  esi = input[edi+1];
  edi++;
  ebx += esi;
  ebx *= ecx;
 }while(edx--);
 ebp_38 = ebx;
 printf("ebp_38 = %X\n", ebp_38);

arg6 : ebp-4c :


int ebp_4c;
 ebp_4c = 0x0012f538 + 4;
 printf("ebp-4c = %X\n", ebp_4c);

arg5 :


int ebp_48;
 ebp_48 = strlen(input) + 5;
 printf("ebp-48 = %X\n", ebp_48);

arg4 : ebp-54 :


int ebp_54;
 eax = 0;
 ebx = 0;
 ecx = 0;
 edx = 0; 
 do{
 eax = input[ecx];
 edx = eax * 6;
 eax ^=edx;
 ebx += eax;
 ecx++;
 }while(ecx != strlen(input));
 ebx += ebp_50;
 ebp_54 = ebx;
 printf("ebp-54 = %X\n", ebp_54);

arg3 : ebp-50 : 


int ebp_50;
 unsigned int eax;
 ecx = 0;
 edx = 0;
 ebx = 0;
 eax = 0;
 do{
  eax = input[ecx];
  eax += ecx;
  ebx += eax;
  ecx++;
 }while(ecx != strlen(input));
 eax <<= 1;
 eax = eax ^ 0x1e240;
 ebp_50 = eax;
 printf("ebp_50 = %X\n", ebp_50);
 
arg2 :
"%lX%lu-%lu%lX-%lu%lu-%lX%lX"
 
arg1 :
char keygen[] ={0, };
    
PUSH되는 인자값들을 올리디버거로 실행하면서 코드의 오류를 찾기위해
printf를 이용하여 값들을 확인하며 작업했음

C코드로 작성후 실행화면


실행파일에 키 적용


알고리즘 분석 및 키젠파일 만들기 성공


+ Recent posts