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 |