본문 바로가기

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

[Simples.kr] [Season 1] Crackme 13

13.exe




우선 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이다.