초입부터 디버거 탐지를 한다. 다음 진행을 위해 XOR 문으로 우회해서 패치해 실행 파일을 뽑아내겠다.
우선 참조 문자열 검색으로 성공 메시지로 보이는 곳 주변을 찾아보면, strlen이 보인다.
입력 문자열이 14(0x0E) 글자이어야 한다.
조건에 맞게 입력해주면 저 비교문을 지나갈 수 있다.
다음은 VaZoNeZ 문자열을 strcpy, strcat를 하고 나서 사용자 이름을 부르는 듯한 함수를 호출한다.
저 부근을 실행해 보면, 403324 주소의 값을 buffer라는 매개변수에 push하는데, 사용자 이름이 들어간다.
그것을 Certlab으로 패치한다.
다음에는 루프 2개가 나오는데, 첫 번째 루프는 사용자 이름과 어떤 문자열을 각종 연산을 하는 듯 보이는데, 키 생성하는 부분인 모양이다.
루프 외부에 breakpoint를 걸고 실행해보자.
위의 루프의 결과를 ECX 넣고 입력값과 비교하는 것 같다. 즉,
키는 4031A4에 있다.
이 문자열의 CRC-32 값을 구하면 되는데, 0x1E 때문에 직접 칠 수는 없다.
별 수 없다…
정답은 404631371
'[Wargame Write-up] > Simples.kr Season 1' 카테고리의 다른 글
[Simples.kr] [Season 1] Crackme 12 (0) | 2017.10.07 |
---|---|
[Simples.kr] [Season 1] Crackme 11 (0) | 2017.10.07 |
[Simples.kr] [Season 1] Crackme 09 (0) | 2017.10.07 |
[Simples.kr] [Season 1] Crackme 08 (0) | 2017.10.06 |
[Simples.kr] [Season 1] Crackme 07 (0) | 2017.10.06 |