Challenges : Basic 12
Author : Basse 2002
Korean :
Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다
이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음
0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다.
문제 : Key값과 + 주소영역을 찾으시오
Ex) 7777777????????
English :
You will see a success message after finding the key.
If you would want the Key itself to replace the success message in the MessageBox,
open up a Hex Editor and overwrite the key value in the offset range 0x???? ~ 0x????.
Q : find the key value and the offset range and write the solution in this format : key????????
(first ???? for the start and the next 4 ?s for the end).
-----------------------------------------------------------------------------------------------
심플 합니다. 심플한 키젠입니다. PEiD로 확인해 보시면 알겠지만
패킹도 안되어 있습니다. 사정없이 디버거로 벗겨(?) 봅시다.
이것 저것 breakpoint를 걸어보며 살펴보았지만 제가 적은 문자열은 어디에서도 찾아볼
수 없었습니다. 그래서 함수기능을 찾아보던중 위 화면에 "GetDlgItemInt"라는 함수가
텍스트를 정수형으로 변환하는 함수라는 것을 알게되었습니다. 그래서 저 함수에 break를
걸고 실행해 보았습니다.
입력후 Check 버튼을 누르면
함수 호출후...
반환값이 저장되는 EAX의 레지스터 값이 200
즉 10진수로 512가 저장되는 것을 확인했습니다.
그리고 밑에보니 올바른 키값일 경우의 메시지박스로 가는 분기점을 찾았고
저 분기점에서의 EAX레지스터 값을 확인해보니
그대로 였습니다. 결국 키값은 분기점에서 EAX와 비교하는 저 값인 것을 알게되었습니다.
저 값을 10진수로 변환하면 되겠죠?
그리고 문제대로 성공메시지박스의 내용을 수정합시다. (원래는 키값으로 수정)
끝!
'ctf + wargame > 코드엔진' 카테고리의 다른 글
코드엔진 Challenges : Basic 10 (0) | 2014.12.07 |
---|---|
코드엔진 Challenges : Basic 08 (0) | 2014.12.07 |
코드엔진 Challenges : Basic 07 (0) | 2014.12.04 |
코드엔진 Challenges : Basic 06 (0) | 2014.11.30 |
코드엔진 Challenges : Basic 05 (0) | 2014.11.30 |