[Wargame Write-up]/Yoire
[Yoire] [reversing] pe.stage2/05_crackme_very_hard.php
Kevin S.
2017. 5. 30. 09:21
늘 그랬듯, 입력값으로 0123456789를 넣고, GetDlgItemTextA 함수를 찾아가자.
입력값을 가져온 후, 409E60에 들어있는 주소의 함수를 실행한다.
반복문에서, 입력값을 1 바이트씩 꺼내 0x55와 XOR 한 뒤, 0x2281090 함수(sprintf 계열로 보인다)를 이용해 출력 형태를 변환한다.
모자이크 처리한 값이 정답이다.
ECX에 들어있는 값은 입력값을 XOR한 후 변환한 결과값이다.
이후 비교 연산이 진행된다.
역시 상기 루틴을 아래처럼 Python으로 간단하게 구현해 볼 수 있다.
그냥 실행하면 윈 10 64비트 환경 기준으로 Crash난다.
Ollydbg로 로드해서 위에서 알아낸 문자열을 입력하면 다음 루틴으로 간다.
Clear~