CodeEngn Basic 10

Kail-KM
|2015. 6. 1. 12:40

문제확인



문제를 실행하면 아무것도 입력이 되지 않는다. 대체 어떤 문제인지 디버깅을 해보자.


PEID를 통하여 확인을 해보면 ASPack에 의하여 패킹이 이루어져있는 것을 확인 할 수가 있다. 따라서 우리는 이러한 패킹을 언패킹 해야한다.




풀이


PUSHAD 이후에 Ctrl+F와 Ctrl+L을 통하여 POPAD와 RETN 0C가 인접해 있는 지점을 찾는다. 그 후 주석에 단 것과 같이 RETN 0C 이후에 PUSH를 통하여 OEP주소를 STACK에 PUSH 하고 있으며, 이를 RETN을 통하여 이동을 하면, 이상한 값 만이 나타난다. 여기서 Ctrl+A를 하거나 아니면 OllyDump+LoadPE를 통하여 Rebuild를 하면 제대로 작동하는 것을 확인 할 수가 있다.


프로그램의 문자열을 검색할 경우 아래와 같은 문자열을 확인 할 수가 있다. 경험상으로 미루어보아 Key_File 일 것이라고 충분히 예상할수가 있다. 따라서 cm5.dat이라는 파일을 생성하여 보자.


그 후 계속 분석을 해보면 다음과 같은 알고리즘을 맞이하게 된다. 알고리즘을 통하여 Name으로 부터 키값이 형성이 된다. 그 후 4454D4에서 성공으로 가는 분기점이 나타나는 것을 확인 할 수가 있다. 하지만 여기서 유의해야할 점은 바로 저 분기점이 실행이 될경우 실패메세지가 출력이 되므로 저 부분을 바꾸어 수정을 해야한다. 

처음에는 KEY_FILE에 어떠한 값을 입력을 하면 올바르게 실행이되는건줄 알았으나, KEY_FILE에 ID를 입력해 놓을 경우 그에 해당하는 시리얼을 알아서 출력해주는 프로그램인 것 같다. 알고리즘의 경우에는 반복적으로 보면 충분히 분석 할 수가 있을 것 같다.


KEY_FILE에 Kali-KM이라는 문자열을 넣고 분기점을 성공쪽으로 돌리고 실행을 할 경우 아래와 같이 시리얼 값이 자동으로 나타나는 것을 확인 할 수가 있다.


'Reversing > CodeEngn' 카테고리의 다른 글

CodeEngn Basic 12  (0) 2015.06.01
CodeEngn Basic 11  (0) 2015.06.01
CodeEngn Basic 09  (0) 2015.06.01
CodeEngn Basic 08  (0) 2015.06.01
CodeEngn Basic 07  (0) 2015.06.01