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 engine basic 5 본문

Reversing

code engine basic 5

kaka09 2017. 7. 27. 15:18

[사진] 1-1


해당 문제는 주어진 프로그램에서 등록키를 찾아보라는 문제 같으니 한번 프로그램을 실행시켜 보자



[사진] 1-2


프로그램을 실행시켜 보니 어떠한 키값을 입력해서 인증을 해야하는 프로그램처럼 보였다. 키값을 통해 인증을 한다는 것은 바이너리 내부에 인증과 관련된 키값이 존재할테고 그 키값을 입력하면 문제를 풀 수 있을것 같았다. 그러므로 디버거를 이용해 까보자


[사진] 1-3


디버거를 이용해 바이너리를 열어보면 경고창이 하나 뜬 다음 조금 이상한? 바이너리들이 보여진다.. 인터넷으로 검색해본 결과 패킹 되어 있는 바이너리이다. 따라서 언패킹을 시켜줘야 한다. 사용된 툴은 peid와 upx.exe 파일을 사용하였다.



[사진] 1-4


먼저 PEID를 이용하여 바이너리가 어떤걸로 패킹이 되었는지 확인을 하였다. 확인 결과 upx로 패킹이 되었음을 알 수 있었고, upx 언패킹과 관련된 도구인 upx.exe를 이용하여 5번문제의 바이너리를 언패킹 시켰다. 언패킹을 시킨 다음 디버거를 이용해 파일을 열어보면 이전에 떴던 경고창은 사라지고 바이너리 파일이 잘 열리는걸 확인 할 수 있다. 이제 바이너리를 열어서 문자열이 존재하는 부분을 탐색하여 보자



[사진] 1-5



스트링만 검색해본 결과 인증키가 떡하니 보인다. 저게 답일 것 같지만 조금 자세하게 하기 위해서 실제 어떤과정으로 인증이 되는지 살펴보기로 하자 편의상 IDA를 이용하여 분석하겠다.


[사진] 1-6


바이너리를 분석해보면 edx에 Registered User를 적재한 다음 sub_403b2c 함수를 호출한다. 여기서 함수의 리턴값이 0이 아닌경우 loc_440F8C로 분기하여 Wrong Serial, try again!! 이라는 경고 메세지를 띄운다. 따라서 값을 입력할때 첫번째 Unregistered... 라고 되어 있는 부분에 Registered User를 입력하고 두번째 키를 입력하는 부분에 GFX-754-IER-954를 입력하여 주면 loc_440F8C으로 분기하지 않고 밑에 Congrasts!을 출력이 된다.



[사진] 1-7







'Reversing' 카테고리의 다른 글

code engn basic 9  (0) 2017.08.01
code engn basic 8  (0) 2017.08.01
code engn basic 7  (0) 2017.07.31
code engine basic 6  (0) 2017.07.31
code engine basic 4  (0) 2017.07.27