Reversing.kr >> 2번째 문제 Easy keygen 풀이과정 설명
먼저 문제는 시리얼 >> 5B134977135E7D13 << 이것을 입력했을때의 name을 찾으면 된다. 먼저 문제를 모르니까 입력값으로
이렇게 입력하면 예상대로 wrong이 뜬다. 이제 입력값을 입력 했으니
코드를 분석해 보면
빨간 부분에 브레이크 포인트를 걸고 실행 시켜 보면
입력한 값이 이렇게 들어간걸 볼수있다.
그 다음,
이 부분이 상당히 중요한데, 먼저 00401077~0040107C를 보면 3번 반복문을 돌리는 걸 알 수 있다. 그리고 아까위에서 입력한 값이 ESP+10에 들어 간걸 볼수있었는데,
그 부분이 EDX에 들어가고, 그다음 그 위에 있는 ESP+C는 10,20,30을 가르킨다.
(이 부분은 ECX에 들어간다) 그 다음 밑에서 XOR을 시켜주는데, 여기서 EBP값과
ESI값은 각각 004010A2와 004010AC에서 점점 1 씩증가한다.
한마디로 정리 해서 말하자면, 이제 name으로 입력한값을 abcdefg라고, 쳤을때
이것을 10,20,30과 하나씩 비교하여 XOR시킨다는 뜻이다.
그래서
그 다음 그 값을 serial과 비교해서 둘이 동일하면 Correct아니면, Wrong이 뜬다는 뜻이다.
그 결과 >> serial로 주어진 값 5B134977135E7D13를 10,20,30과 각각 XOR시켜주면
결국 name이 나온다. 16진수니까 2개씩 끊어서 계산해주면
5B 13 49 77 13 5E 7D 13
10 20 30 10 20 30 10 20 (XOR)
4B 33 79 67 33 6E 6D 33
K 3 y g 3 n m 3 (ASCII)
'IT전공관련' 카테고리의 다른 글
큐 구조 설명 및 구현 (0) | 2017.07.30 |
---|---|
스택 구조 설명 및 구현 (0) | 2017.07.30 |
어셈블리어 용어 정리 & 리눅스 용어 정리 (0) | 2017.07.19 |
c언어 메모리 구조(코드) (0) | 2017.07.17 |
x86 CPU 레지스터 조사 (1) | 2017.07.17 |