codeengn) basic 20
Reversing/CodeEngn
2014. 11. 28. 21:36
이번 문제는 key파일에 들어갈 키 값을 구하는 문제 입니다.
일단 CRACKME3.KEY 라는 파일이 필요합니다.
그리고 그 key 파일이 18(12)만큼의 바이트가 있는지 확인 합니다.
12는 헥스코드로 10진수로는 18입니다.
게속 디버깅 해봅시다.
다음과 같은 알고리즘이 나왔습니다.
이 알고리즘은 한자리씩 A~O까지 xor연산을 하는 알고리즘 입니다.
이걸 c언어로 해석해 보았습니다.
일단 key는 대충 123456789123456789로 18자리로 마추었습니다.
이거 푸는데 3일 걸렷다죠 하핫
이 알고리즘은 XOR연산을 한뒤에 연산값을 누적시키는 특징이 있습니다.
이 값하고 나머지 4자리 값하고 같아야 합니다.
그리고 리턴후에 밑에 있는 함수로 가게 됨니다.
이 함수는 나머지 4자리수를 가져오는 함수 입니다.
cmp로 나머지 4자리수와 비교를 합니다.
이제 key값을 알아야 합니다.
key값은 메세지 박스가 출력될떄 CodeEngn!이 되어야 합니다.
따라서 저는 CodeEngn!을 A~O까지 한글자씩 XOR연산을 해서 값을 구해주었습니다.
그리고 올리디버거로 열어서 나머지 4자리 값을 알아냈습니다.
key 값을 저장하고 실행 하였습니다.
그런데 이 문제는 인증이 잘되지 않습니다.
key값중에서 사용하지 않는 값이 있을수 있기 때문 입니다.
따라서 비공개로 게시글을 올려서 인증을 해야 합니다.
'Reversing > CodeEngn' 카테고리의 다른 글
codeengn) advance 4 (0) | 2014.11.30 |
---|---|
codeengn) advance 3 (0) | 2014.11.30 |
codeengn) basic 17 (0) | 2014.11.27 |
codeengn) basic 18 (0) | 2014.11.27 |
codeengn) basic 16 (0) | 2014.11.24 |