본문 바로가기

[Wargame Write-up]/Simples.kr Season 1

[Simples.kr] [Season 1] Crackme 10

10.exe




초입부터 디버거 탐지를 한다. 다음 진행을 위해 XOR 문으로 우회해서 패치해 실행 파일을 뽑아내겠다.




우선 참조 문자열 검색으로 성공 메시지로 보이는 곳 주변을 찾아보면, strlen이 보인다. 


입력 문자열이 14(0x0E) 글자이어야 한다.




조건에 맞게 입력해주면 저 비교문을 지나갈 수 있다. 


다음은 VaZoNeZ 문자열을 strcpy, strcat를 하고 나서 사용자 이름을 부르는 듯한 함수를 호출한다. 




저 부근을 실행해 보면, 403324 주소의 값을 buffer라는 매개변수에 push하는데, 사용자 이름이 들어간다. 


그것을 Certlab으로 패치한다. 




다음에는 루프 2개가 나오는데, 첫 번째 루프는 사용자 이름과 어떤 문자열을 각종 연산을 하는 듯 보이는데, 키 생성하는 부분인 모양이다. 


루프 외부에 breakpoint를 걸고 실행해보자.




위의 루프의 결과를 ECX 넣고 입력값과 비교하는 것 같다. 즉, 


키는 4031A4에 있다.




이 문자열의 CRC-32 값을 구하면 되는데, 0x1E 때문에 직접 칠 수는 없다. 


별 수 없다…




정답은 404631371