본문 바로가기

Wargame/Reversing-W

CodeEngn advance 9

9번문제다. Password를 구해오라고한다.



실행시키고 일단 유저네임, 패스워드 다 아무런값이나 넣고 실행해보면

틀렸다고 구문이 출력된다. 이제 이걸 가지고 올리디에서 분석을 진행하자



스트링 검색을 켜보면 이렇게 나온다.

저 DonaldDuck은 뭐지?라고 생각할 수 있는데

저게 바로 Username이다.



이 비교문에서도 DonaldDuck과 비교하는 걸 알 수 있고

이것 말고도 실행시키자마자 왼쪽 아래부분의 헥스값 표시부분을 보면

Username은 DonaldDuck이라고 나온다.



중요한건 패스워드를 찾는 것이다. Username에 대한 검사를 마친뒤에

디버깅을 계속 진행하다보면 이렇게 내가 입력한 0x457 과

원래의 패스워드 값처럼 보이는 0x0088228f 를 비교하는 걸 알 수 있다.

원래의 패스워드 값은 0x0088228f라는 걸 알 수 있다.



그래서 Username에 DonaldDuck

Password에는 0x0088228f 의 십진수 값인 8921743을 넣어주고 엔터를 눌렀다.



틀렸을때 안나오던 I can't believe you felt for that! xD라는 구문이 출력되긴하는데

아직도 틀렸단다.. 새로나온 문자열을 해석해보면 맞은것 같긴한데.. 좀 이상하다



성공문을 출력하는 부분으로 찾아가보니

맞아도 저 00A112AD 부분에서 뻑이나서 실패할때 나오는 문자열을 출력한다..



저 부분만 JE -> JNZ로 고쳐주면



성공문이 출력되고, 패스워드를 맞췄다.


저 부분이 왜 뻑이나는지 몰라서 검색을 통해 알게 된 사실인데

이 프로그램은 시스템 자체적으로 주소를 할당한다고 한다.

그래서 그 주소를 할당해주는 함수의 옵션을 조금 조작하면

제대로 작동된다고 한다..

그냥 점프문 패치를 하는걸로..


반응형

'Wargame > Reversing-W' 카테고리의 다른 글

wargame.kr keypad_crackme  (0) 2017.08.02
wargame.kr easy_crackme  (0) 2017.08.01
CodeEngn advance 8  (0) 2017.07.20
CodeEngn advance 5  (0) 2017.07.20
CodeEngn basic 20  (0) 2017.07.19