easy-crackme1.exe 분석 보고서

2021. 5. 6. 18:43악성코드 분석

1. easy-crackme1.exe 실행

단서1 : ‘input:’ 이라는 문자열을 찾음

가설1 : input이라는 문자열이므로 무언가를 입력하는 부분 같음, 디버깅할 때 input이라는 문자열로 main함수나 중요한 부분을 찾을 수 있겠다는 생각을 함

 

2. main 함수

결과1 : 가설대로 main 함수를 찾을 수 있었음

함수 설명 : %d(정수)라는 자료형을 두 개 입력받고 정수를 가지고 easy-crackme1 (1).140001180이라는 함수를 불러와 어떠한 조건으로 검사하고 correct!인지 wrong!인지를 확인한다.

가설1 : 설명에 있던 함수의 리턴값이 1이여야 test 연산을 하면 1이 되어 ZF(ZF -> 0)이 세팅되지 않기 때문에 je문에 만족하지 않게 되어 correct! 값을 출력하게 될 것 같다.

 

3. easy-crackme1.140001180 함수

함수 설명 : 입력받은 정수들(ex. 첫 번째 수를 x, 두 번째 수를 y라고 하겠다.)을 받아온 후 여러 가지 조건들을 만족하면 xor eax eax를 실행하여 1(??)을 리턴할 것이다.

1. 첫 번째 조건 : x0x2000보다 크고 y2000보다 작거나 같아야 한다. (x > 0x2000, y <= 0x2000)

2. 두 번째 조건 : xy를 곱한 값은 0x6AE9BC가 되어야 한다. (x * y == 0x6AE9BC)

3. 세 번째 조건 : x 나누기 y 한 값은 소숫점을 버리고 4가 되어야 한다. (x // y == 4)

4. 네 번째 조건 : x yxor한 값이 0x12FC가 되어야 한다. (x^y == 0x12FC)

 

4. 조건 해결을 위한 python 프로그램

코드 설명 : 위 조건들을 가지고 순서대로 해결해 나아갔다.

 

 

easy-crackme1_분석 보고서.hwp
0.39MB

'악성코드 분석' 카테고리의 다른 글

지역변수 출력 (리버싱 유형 - 1)  (0) 2021.03.17
메모리 구조  (0) 2021.02.25
abex' crackme #1 write-up  (0) 2021.02.06
x64dbg 사용법  (0) 2021.01.30
리버스 엔지니어링 기초 (레지스터 및 명령어)  (0) 2021.01.28