Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

kaka09

code engn basic 15 본문

Reversing

code engn basic 15

kaka09 2017. 8. 2. 20:32

[사진]1-1



14번 문제처럼 입력값이 CodeEngn일 때의 시리얼을 구하는 문제이다. 패킹 여부를 알기위해 PEID로 검사를 해보았다.




[사진]1-2



패킹이 되어있지 않는 프로그램이다. 언패킹 과정 없이 올리 디버거를 이용하여 분석을 시도해 보았다.



[사진]1-3




올리 디버거로 열어 봤을때 다음과 같은 어셈코드가 나온다. 이번 문제도 시리얼을 찾는 문제기 때문에 성공메세지 근처에 키값을 비교하는 구문이 존재할 가능성이 높으므로 문자열 검색을 통해 성공 메세지 부분을 찾아 보았다.




[사진]1-4



찾아보면 "You cracked~~~"로 시작하는 문자열을 확인할 수 있다. 해당 부분으로 이동하여 분기구문을 살펴보자





[사진]1-5


어셈코드를 살펴보면 EAX와 45B844를 비교하여 값이 일치하면 "You cracked" 문자열을 출력하고 다를 경우 "Try again"이라는 구문을 출력한다. 분기문도 파악하였으니 이제 실제 값을 셋팅하여 실행한 다음 레지스터나 메모리에 어떤 값들이 저장되는지 동적 디버깅을 시도해보자



[사진]1-6



Name에는 문제에서 제시한 CodeEngn을 입력하고 Serial에는 1234를 입력하였다. 




[사진]1-7



비교구문에서 DS :[45B844] 에는 6160h 이란 값이 저장되었고  EAX에는 4D2h가 저장되었다. 4D2h는 1234의 16진수 값이다. 즉 EAX에는 시리얼값이 들어가는걸 알 수 있고 DS: [45B844]에는 Name 값이 들어가는걸 알 수 있다. 따라서 시리얼값에 6160h을 집어넣기 위해 24928을 입력해주자


[사진]1-8


값을 입력하면 크랙이 되었다는 메세지가 출력되는 것을 확인 할 수 있다.







'Reversing' 카테고리의 다른 글

code engn basic 17  (0) 2017.08.02
code engn basic 16  (0) 2017.08.02
code engn basic 14  (0) 2017.08.02
code engn basic 13  (0) 2017.08.02
code engn basic 12  (0) 2017.08.02