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 16 본문

Reversing

code engn basic 16

kaka09 2017. 8. 2. 21:13

[사진]1-1



이번 문제도 시리얼을 구하는 문제다. 끝까지 이걸로 우려먹는 건가????... 암튼 이번에도 패킹 여부를 확인하기 위해 먼저 PEID로 확인절차를 가했다.



[사진]1-2


패킹은 되어있지 않지만 C++ 프로그램으로 작성되었다는것을 확인 할 수 있다. C#은 있었어도 C++은 처음이다. 일단 올리 디버거로 실행이 되는지 한번 살펴 보았다.




[사진]1-3



다행히 올리 디버거로 잘 실행이 되는것을 확인할 수 있었다. 또 덤으로 콘솔창이 하나 실행이 됬는데 아무래도 이번 문제는 콘솔기반 프로그램이라서 그런듯.. 아무튼 올리 디버거로 정상적인 디버깅이 가능하니 문자열을 찾아보자




[사진]1-4



콘솔기반이라 그런지 굉장히 문자열이 많이 쓰인다.  성공 메세지 찾느랴 눈 빠질뻔한건 덤 이다.. 위 사진을 참고하면 "Good job"과 "Wrong password" 메세지를 보면 "Good job" 메세지가 name과 password가 일치했을때의 메세지 라고 생각할 수 있다. 그러면 이제 성공 메세지 근처의 어셈코드를 확인하여 분기문을 찾아보자




[사진]1-5


[사진]1-5의 맨 위를 보면 분기문을 확인 할 수 있다. EAX와 [EBP-3C]의 값을 서로 비교해서 일치하면 성공 메세지를 아니면 실패 메세지를 출력하는 구조로 설명할 수 있다. 이제부터 동적 디버깅을 통하여 EAX와 EBP-3C에 어떤 값들이 들어가는지 확인을 해보자






[사진]1-6



name과 password를 위 사진처럼 입력하면 EBP-3C와 EAX에 각각 E4C60D97, 4D2가 들어가는것을 확인할 수 있다. 이를 통해 EBP-3C에는 NAME이 EAX에는 PASSWORD가 저장되는것을 확인할 수 있다. 따라서 조건문을 맞춰주기 위해서 E4C60D97의 10진수 값을 PASSWORD에 집어넣으면 된다. 




[사진]1-7


해당 값을 입력하면 성공 메세지가 출력되는 것을 확인 할 수 있다.








'Reversing' 카테고리의 다른 글

code engn basic 18  (0) 2017.08.03
code engn basic 17  (0) 2017.08.02
code engn basic 15  (0) 2017.08.02
code engn basic 14  (0) 2017.08.02
code engn basic 13  (0) 2017.08.02