우선 Key 값을 찾기 위해 성공 메시지 부분을 살펴보았다.
40107D에 breakpoint를 걸고 이 부분을 한 줄씩 실행해 보았다.
403000부터 403527을 아우르는 문자열을 ESI에 넣고, 4바이트씩 더해서 EBX에 넣어 40110F 함수의 연산을 하는데, 그 문자열이 null일 때까지 반복한다.
이 문제를 푸는 데에는 별 의미 없는 낚시 코드이다.
결국 Key 값은 40107D의 CMP operand 중 하나인 0x7A2896BF(2049480383)이다.
그 다음, Hex Editor에서 성공 메시지 대신 key 값을 넣으려면 어느 범위에 넣어야 하냐는 문제이다.
실행파일을 복사한 후 hex editor로 열어보자.
Block 안의 값이 성공 메시지이다.
이 곳을 key 값이 되도록 채워보자. 채우고 남은 부분은 null(00)로 채운다.
채워보면 0D3B ~ 0D45(null 값까지) 범위에 key 값이 존재하게 된다.
즉, Auth key는 Key + start_offset + end_offset이므로, 20494803830D3B0D45이다.
'[Wargame Write-up] > Simples.kr Season 1' 카테고리의 다른 글
[Simples.kr] [Season 1] Crackme 15 (0) | 2017.10.08 |
---|---|
[Simples.kr] [Season 1] Crackme 14 (0) | 2017.10.08 |
[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 10 (0) | 2017.10.07 |