제목 : Crack me #1
목적 : 시리얼을 프로그램 내부에서 추출 하여 시리얼 생성기를 만든다.
파일명 : due-cm1.exe (첨부파일)
내부 로직 :
미리 정의 되어있던 시리얼 값
"0x7B,0x61,0x65,0x78,0x64 ,0x6D,0x26,0x6B,0x7A,0x69 ,0x6B,0x63,0x65,0x6D,0x26 ,0x3C,0x26,0x66,0x6D,0x7F ,0x6A,0x61,0x6D,0x7B,0x26 ,0x6A,0x71,0x26,0x6C,0x7D ,0x6D,0x64,0x61,0x7B,0x7C" |
과 사용자가 입력한 값을 비교해서 정확히 일치 할 경우 Success 하는 프로그램
입력 값 변환 Logic :
사용자 입력값을 3번에 걸쳐서 변환 시킨다.
a(사용자 입력 값) xor 0x43 a xor 0x1E a xor 0x55 |
시리얼 생성기 프로그램 소스 :
#include <vector> #include <cstdio> #include <string> #include <sstream> using namespace std;
int main() { char a[35] = {0x7B,0x61,0x65,0x78,0x64 ,0x6D,0x26,0x6B,0x7A,0x69 ,0x6B,0x63,0x65,0x6D,0x26 ,0x3C,0x26,0x66,0x6D,0x7F ,0x6A,0x61,0x6D,0x7B,0x26 ,0x6A,0x71,0x26,0x6C,0x7D ,0x6D,0x64,0x61,0x7B,0x7C }; int b = 35; for(int i = 0 ; i < b; i++){ a[i] = a[i]^0x43; a[i] = a[i]^0x1E; a[i] = a[i]^0x55; } printf("%s",a); scanf("%d",&b); } |
사용 Tool : OllyDbg
난이도 : ★★☆☆☆
-------------------------------------------------------------------------------
Debug 화면 Capture (ㅠ,.ㅠ 에잇~ 이미지 잘못 올렸네요~ 다음꺼 올릴때는 잘올리겠습니다. ^^)
1. 임의 값을 입력해서 프로그램 내부 Logic 점검
2. 내부 Logic파악과 비교 대상이 되는 String 파악
3. 파악된 Logic과 String을 대상으로 Key generator 개발
4. Success
댓글 없음:
댓글 쓰기