Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 써니나타스
- 3번문제
- 치트엔진 튜토리얼 게임
- 리버싱
- suninatas
- CodeEngn
- 워게임풀이
- Couldn't invoke the file
- Web
- 8번문제
- CheatEngine Tutorial
- BasicRCE
- reversing
- cheatengine
- xcz.kr
- 1번문제
- 치트엔진
- xcz.kr 문제풀이
- Basic RCE
- 시스템
- 치트엔진 튜토리얼
- 워게임
- wargame.kr
- WTF_CODE
- WarGame
- xcz.kr prob
- 6번문제
- 오토잇디컴파일
- 포렌식
- Couldn't in
Archives
- Today
- Total
HackChang
[CodeEngn] Advance RCE L07 문제 풀이 본문
이 문제도 네임이 CodeEngn일 때 시리얼 값을 구하는 문제이다.
PEID로 열어보도록 하겠다.
C#으로 만들어진 프로그램인 것을 알 수 있었고,
올리디버거로 열어보도록 하겠다.
올리디버거로 열리지 않는 것을 볼 수 있다.
C#으로 만든 프로그램이기 떄문에 Reflector로 열어봤다.
타고타고 들어가다 Form부분에 성공메세지나 실패메세지가 있을 것이라고 생각되어 찾아보았다.
button_click 함수를 찾았고, 해당 부분에서 인증하는 것을 알 수 있었다.
디스어셈블러를 자세히 보도록 하겠다.
조건문을 자세히보면 첫번째 텍스트박스(name)의 길이는 5<=text<=1b인 것을 알 수 있고, 두번째 텍스트박스(Serial)의 길이는 1a이며, 9번째자리와 18번째자리의 글자가 '-' 일때 아래의 반복문을 수행하는 것을 알 수 있다.
문제에서 마지막 8자리의 시리얼만 구하면 되기 때문에 str3이 우리가 구해야할 값 인 것을 알 수 있다.
해당 소스를 export하여 str3의 값을 00000000~FFFFFFFF까지 반복문을 통해 돌려봤다.
하지만 인증이 되지않아서 문제를 포기할 뻔 했지만, 검색을 통해 GetHashCode()라는 함수에 대해 알게되었다.
운영체제의 비트 수에 따라 각각 다른 HashCode를 리턴하기 때문에 인증되지 않았던 것이다.
32비트를 기준으로 하여 다시 인증했다.
다음 번에는 vxzzz함수를 완벽하게 분석하여 다시 문제를 풀어보고싶다.
Comments