안녕하세요~~
테라트입니다
오늘도 코드엔진 문제풀이 시작하겠습니다 ㅎ
오랜만에 코드엔진 사이트에 들어가 보니 화면 디자인이 조금 바뀌었네요
URL : https://codeengn.com/challenges/
새로 바뀐 화면에서는 문제별로 사이트가 존재하지 않았습니다
그냥 스크롤 내려서 12번 문제를 찾으시면 됩니다
파일 이미지를 누르면 해당 문제의 파일을 다운로드 할 수 있고
새롭게 파일 패스워드가 생긴 듯합니다
파일을 다운로드한 후 동적으로 실행 먼저 해보겠습니다
키 값을 체크하는 프로그램 같아서 아무 값이나 입력하고 Check를 눌러보았습니다
올바른 키 값을 입력하지 않으면 동작하지 않는 것 같군요
패킹되어 있지 않은 것을 확인하고 바로 올리디비거에 올려보았습니다
올바른 키를 입력했다면 성공했다, 축하한다 등의 메시지가 보이겠죠?
문자열을 검색해보겠습니다
축하 메시지로 보이는 부분을 확인했습니다!
이제 올바른 키 값인지를 확인하는 CMP 명령어가 나올 것 같아서
잘 살펴보니 CMP 명령어가 있었습니다
** CMP A B
: A와 B의 값을 비교하는 어셈블리어
CMP 함수로 숫자와 비교하는 것으로 보아 키 값이 숫자임을 추측해볼 수 있습니다
올리디버거에서는 숫자가 16진수로 표현이 되는데
프로그램 상에서는 10진수로 계산됩니다
그래서 CMP 함수에서 비교하는 값을 계산기를 통해 10진수로 변경해보도록 하겠습니다
계산기에서 보기-프로그래머용으로 변경하시면 다음과 같이 계산기 배치가 변경이 됩니다
Hex : 16진수
Dec : 10진수
Oct : 8진수
Bin : 2진수
입니다
10진수로 변경하면 다음과 같은 숫자를 확인할 수 있습니다
맞는 키 값인지 프로그램을 통해 확인해보도록 하겠습니다
다음과 같이 성공 메시지를 확인할 수 있습니다!
문제에서 제시한 해결 조건은 키 값을 알아내는 것에서 그치는 것이 아니라
키 값을 입력했을 때 성공 메시지 대신 키 값이 노출되도록 요구하였습니다
HexEditor를 사용하면 됩니다
HexEditor는 이전 글에서 설명했기 때문에 따로 사용법은 설명하지 않고 바로 진행하도록 하겠습니다
스크롤을 내려서 성공 메시지에 표시되었던 문구를 찾으면 됩니다
Ctrl + V를 통해 메시지 대신 키 값을 입력해주시고
값의 마지막에 Null 값을 추가해주어야만 문자열이 끝난 것을 알 수 있습니다
그렇기 때문에 Hex 값의 문자열 마지막 부분에 00을 추가적으로 입력하여 줍니다
다음과 같이 설정 후 저장한 다음 프로그램을 다시 실행해서
아까 찾은 키 값을 입력해주시면
성공 메시지 대신 키 값이 표시됨을 확인할 수 있습니다!!
수고하셨습니다 :)
CodeEngn Challenges : Basic 14 문제 풀이 (2) | 2019.07.03 |
---|---|
CodeEngn Challenges : Basic 13 문제 풀이 (2) | 2019.04.26 |
HexEditor 프로그램 HxD 사용법 (0) | 2019.03.08 |
CodeEngn Challenges : Basic 11 문제 풀이 (0) | 2018.12.09 |
CodeEngn Challenges : Basic 10 문제 풀이 (0) | 2018.10.25 |
댓글,
테라트
Since 2018.07.03 / IT 관련 정보, 일상의 공유를 위한 블로그