이번 문제도 전 문제처럼
이름이 주어지고 그에 맞는 시리얼값을 구하는 문제입니다.
exeinfope로 열어보면
32비트 기반 실행파일이고 델파이로 작성된것으로 확인됩니다.
별다른 패킹은 없으므로 그대로 분석을 진행하겠습니다.
먼저 프로그램을 실행시켜보면
다음과 같이 이름과 시리얼값을 입력할수 있습니다.
이름을 CodeEngn으로 입력하고 시리얼값은 임의의값으로 넣어보면
다음과 같이 다시하라는 메세지박스가 출력됩니다.
이제 본격적인 분석을 해보겠습니다.
먼저 아까 봤던 메세지박스에 있는 문자열을 찾아보면
다음과 같이 보입니다.
이제 이 문자열이 쓰인 함수로 진입해보겠습니다.
함수에 진입해보면 다음과 같은 구조인것이 확인됩니다.
디컴파일해보면 다음과 같은 코드인데
델파이로 만들어진 프로그램답게 조금 복잡해보이지만
차근차근 분석해보면 간단합니다.
sub_458760 함수를 호출해서 이름값을 받은뒤 특정 연산값을 반환하고
그뒤에 시리얼값을 받아서 정수로 변환한뒤 이름값을 통해서 연산된 반환값과 비교해서
같아야하는 구조입니다.
그러므로 시리얼값을 알아내기 위해서는 이름에 CodeEngn을 넣고나서 나오는 최종연산값을 확인해보면 됩니다.
그러므로 if문 바로전에 중단점을 걸어놓고 실행시킨뒤 이름과 임의의 시리얼값을 입력해줍니다.
그런 다음 반환값이 저장되어있는 메모리주소를 확인해보면
다음과 같이 0x6160이라는 값이 저장되어있습니다.
그러므로 시리얼키는 0x6160 입니다.
이것을 10진수로 표현하면 24928 입니다
이 시리얼키를 입력해보면
다음과같이 크랙에 성공했다는 메세지박스가 나오므로
정답은 24928이 됩니다.
'워게임 > CodeEngn' 카테고리의 다른 글
[CodeEngn] Basic RCE L17 (0) | 2022.07.17 |
---|---|
[CodeEngn] Basic RCE L16 (0) | 2022.07.08 |
[CodeEngn] Basic RCE L14 (0) | 2022.07.06 |
[CodeEngn] Basic RCE L13 (0) | 2022.07.06 |
[CodeEngn] Pro RCE L01 (0) | 2022.07.04 |