1. 개요
파일과 함께 지문이 주어짐

시리얼이 5B134977135E7D13일때 이름을 구하시오.

2. 분석
먼저 CFF로 본 결과,


패킹이 되어있지 않다.

Olly로 한번 돌려보고 스택을 따라서 HxD덤프를 떠본결과

7D415E66415E가 떳다.
참고로 12글자이다. 이로 유추할수 있는게, 이름을 입력하면 키길이는 그 두배 만큼 나온다는 것이다.

그리고 나는 이곳이 키를 만드는 구간이라고 생각했다.


그럼 저부분을 역추적해서 5B134977135E7D13가 나오게 하면될것이다.
우선 키 길이는 16이므로 입력된 이름은 8글자일 것이라는 것은 알고 가자.

이번에는 예시로 abcdefgh를 입력하였다. 결과로는
HEX : 37 31 34 32 35 33 37 34 34 35 35 36 37 37 34 38
ASCII: 7  1  4  2  5  3  7  4  4  5  5  6  7  7  4  8
이렇게 나왔다. 규칙성을 여기서 하나더 추론하자면, 31,32... 이것들은 16진수 아스키코드에서 30을 더하면
61,62,63... 고로 a,b,c..가 된다.

우리의 목표는 5B134977135E7D13을 띄우는 것이기에 일단..
HEX : 
ASCII: 5  B  1  3  4  9  7  7  1  3  5  E  7  D  1  3
이름 : K???????

이번에는 Kabcdefg를 입력하였다.
HEX :  35 42 34 31 35 32 37 33 34 34 35 35 37 36 34 37
ASCII:  5  B  4  1  5  2  7  3  4  4  5  5  7  6  4  7
겁나 신기하다.. 각 밑줄에서 홀수번째 숫자가 4,5,7반복된다..

그럼 다음 숫자는 13+20을 한 33, 16진수로 3 까지 하면 맞다.

K3abcdef를 입력해보자.
사실 여기서 나는 특별한 규칙을 찾았다.


이곳에서 연산이 되는 것이다!!! 고로 이곳에서 BP를 걸어주고 계속 연산한 값을 추측해볼 수 있다.
그럼 3번째는 어떻게 되냐면


EDX=a ECX=30이 되었다! 여기서 XOR연산을 하면

예상대로 51이 나왔다..
그럼 이미 답은 유추할 수 있게 되었다 ㅋㅋㅋ

다시말하지만 우리의 목표는 5B134977135E7D13을 띄우는 것이기에
5B 13 49 77 13 5E 7D 13이 숫자들을 각각 10 20 30 40 50 60 70 80으로 xor를 해준다.........
인줄 알았으나 다시 돌려보면 ECX가 싸이클당 10,20,30순으로 루프한다.

다시 계산하면
5B 13 49 77 13 5E 7D 13
10 20 30 10 20 30 10 20
각 연산하면 4B 33 79 67 33 6E 6D 33
16진수 아스키 변환하면 K3yg3nm3

클리어!

'Reversing > Reversing.kr' 카테고리의 다른 글

Reversing.Kr 001 Easy Crack 풀이  (0) 2017.07.04
일단 코드엔진과 다르게 지문이 없다.

그냥 바이너리만 주어짐.

바로 OllyDBG로 열어서 스트링값들을 봐보자


5y, R3versing.. 

이것들을 보자마자 키값이 흩어져있다는 것을 어느정도 감잡아야한다.


바로 처음시작부분에 BP를 걸어주고,

여기서는 동적으로 보다기보단 정적으로 한번 보고
키값을 찾는 식으로 해야할 것이다.

점프문 주변에 먼저 BP를 걸어주고 분석을 시작하자

manvan입력하고 확인 누르고

여기서 멈추는데 밑에보면
ESP+5(0019F6CD)에서 'a'와 맞는지 비교를 하고

틀리면 실패하는 구문으로 점프뛰어버리게 만들었다.
그리고 스택부분에 보면

위와 같이 ESP+4부터 내가 넣은 값이 들어가있었다.
그렇다면 ESP+4가 시작위치인것이고, 여기의 주소는

0019F6CC였다.

일단 여기서 유추할 수 있는 것은
두 번째 문자는 a라는 것이다.

?a?????라는 것이다.

계속 해보자

그러면 이곳 ESP+A부분을 가져오고
5y를 푸쉬한다.

일단 ?a5y??인것 같아서 다시 시작해서
입력값을 바꾸어보았다.


맞게 넘어갔다.
여기서 ?a5y????~인것은 확정

같은방법으로 아래에 있는 R3versing도 이어진다 생각하여 값을 바꿔서 또 해보았다.


그 결과,
분기문을 잘 점프하였고
이 싸이클에서는 한글자 한글자 검사하는 부분이다.


그 결과 여 분기문에 왔고 마지막에
ESP+4와 비교하는 구문이 보였다!!!!

그러면 여기서 45가 16진수 아스키코드료 표현하면 E가 되고
쭉 이어서 다시 적으면
Ea5yR3versing이 된다.

다시 실행해서 위 키값을 입력하면.


성공하였다

'Reversing > Reversing.kr' 카테고리의 다른 글

Reversing.Kr 002 Easy Keygen 풀이  (0) 2017.07.04

+ Recent posts