Codeengn Challenges = Basic 12 풀이.
말 그대로 Key 값+주소영역을 찾으면 된다.
인증키는 key + 주소 영역. 다운로드 후 ./exe 파일을 열어봤다.
In the Bin ========? 쓰레기통 안에....내 인생 같다...OTL...
Check를 누르면 반응이 없고, About를 눌러봤다.
위 그림처럼 프로그램 설명이 나온다. 그냥 뭔 소리인지 모르겠다...
올리디버거를 실행했다.
Password or 키, 시리얼 값을 알아낼 때에는 문자열을 봐야 된다.
Search for ==> All referenced text strings 실행.
올바른 키를 찾았다며, 메시지가 있다.
첫번째 줄을 보면, CMP 비교함수가 존재하는데, EAX와 7A2896BF를 비교한다는 것이다.
즉..EAX - 7A2896BF를 해서 0이 나오면 JNZ가 인식하고, 바로 아래로 넘어간다.
근데 위의 차가 0이 아니라면, JNZ는 성공 문자열을 뛰어넘는 00401098로 이동시킨다.
EAX는 7A2896BF를 빼서 0이 나와야 하니, EAX 값은 7A2896BF일 것이다.
7A2896BF(16) ==> 2049480383(10) 그래서 EAX가 무엇인지를 알기 위해 CMP 부분에 브레이크 포인트를 걸고, 프로그램을 실행시켜서 임의로 10을 투입한다.
check 버튼을 누르면 CMP 쪽에 멈춘다.
이게 EAX 값이고, 다시 실행시키면 2049480383.
키 값은 2049480383이고, 성공 메시지 대신 키 값이 나오도록 Hexedit 수정한다.
문제는 값을 넣을 때, 16진수 아스키 코드를 넣어야 한다.
열을 보면, 16개가 있고, 번호는 0 1 2 3 4 5 6 7 8 9 A B C D E F.
32부터 시작해야 되니 00000D30의 B, 즉 000000D3B가 시작점이다.
0x????라고 했으니, 4자리만 뽑으면 0x0D3B.
끝은 33이라고 하는데, NULL이 있기에 문자열의 끝을 알리는 NULL은 16진수로 00을 의미한다. 즉 끝은 33이 아닌 NULL을 포함한 00. 0D45이 마지막이다.
즉 0D3B ~ 0D45까지고, 키 값은 2049480383이므로 합치면 20494803830D3B0D45.
Cf) 진수....어렵다...
'# Related site issues > CODEENGN' 카테고리의 다른 글
Codeengn Challenges = Basic 14. (0) | 2018.04.02 |
---|---|
Codeengn Challenges = Basic 13. (0) | 2018.04.02 |
Codeengn Challenges = Basic 11. (0) | 2018.03.28 |
Codeengn Challenges = Basic 10. (0) | 2018.03.28 |
Codeengn Challenges = Basic 09. (0) | 2018.03.28 |