시간이 남아서 받아놓은 문제를 하나 살펴보았습니다.(지금 ㅋㅋ)

이번건 엄청나게 쉽군요!!!

이번 글도 풀이글이 아닌 풀이과정 글이라고 보시는게 더 좋을 듯 합니다 ㅎㅎ

일단은 어떻게 생겨먹은 프로그램인지 봐야겠죠??

아래의 사진과 같이 작동합니다.



일반적으로 프로그램을 리버싱하는 사람이라면 10명중 8명은 저 스트링을 찾아가 그 주변부터 분석을 합니다.

저 또한 8명안에 속한 사람이기에 그 주변을 분석 해 보았습니다.




딱 봐도 별다른건 없어보이지요?

그 밑을 한번 봐봤습니다.



여기도 특별한 건 없어보였습니다.

패스워드가 맞으면 good! 아니면 wrong! 이걸 출력해주려고 DS(Data Segment)에 각 문자를 넣어주고 있는 부분 입니다.(MOVSX 명령어로)

사진에는 안나왔지만 세번쨰로 bof!라는 문자를 DS에 넣어줍니다.

이건 왜 넣는지 모르겠네요 ㅋㅋㅋㅋㅋㅋ 낚시하려고 한건가;;

평상시 문제같으면 good! 문자열 이후에 패스워드를 출력해주는 것이 정상입니다.

하지만 good! 이후에는 바로 프로그램이 종료하게끔 되어 있어서 일단 저 부분은 제쳐두고 다시 처음부터 삽질을 하였습니다.

전 다시 삽질 할 때 무조건 EP로 가서 코드를 한줄한줄 연습장에 분석해 가면서 진행합니다..

조금 귀찮고 시간이 많이 걸리는 방법이지만 어느정도는 프로그램의 흐름등을 알 수 있어서 좋더라구요 ㅎ

처음부터 코드를 쭈욱 살피고 있었는데 아래와 같은 부분이 있었습니다.


뭔가를 또 DS에 넣어주고 있더라구요...

보니까 pw로 시작하는 문자열 이었는데 이 부분이 아무래도 패스워드를 DS에 저장하는 부분 같았습니다.

.
.
.
.
.
.



풀이 과정 끝 ㅋ

흠 이번에는 뭐랄까... 너무 쉬웠는데 깊이 들어가서 괜히 삽질한 기분이랄까요.

코드 맨 앞줄에 있을줄 누가 알았겠어요 ㅎㄷㄷ

흠 전 아직도 실력이 부족한가 봅니다..

역시 많이해야 실력이 느는 리버싱 ㅋ
  1. rex0 2009.09.24 19:31

    저도 이거 때문에 시간 많이 보냈었죠..ㅋㅋㅋ

+ Recent posts