일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- dreamhack
- 리버싱
- rev-basic-3
- 장고
- 파이썬
- 파이썬웹
- 장고vscode
- 코로나바이러스19
- 모세포
- webhacking.kr문제풀이
- 1546
- covid19
- 코로나바이러스
- 바이러스
- jango
- 해커
- 웹해킹
- djangovscode
- csaw 2018
- 코로나
- 해킹문제
- Django
- web
- csaw
- AndroidOS
- 취약점점검
- 백준
- 정보보호영재원
- vscode
- 해킹
- Today
- Total
Kilkat
프로그램 시리얼 해킹2(코드엔진 advance 03.exe) 본문
목표: 시리얼값 찾는 법을 알기2 JNB의 역활을 알기
사용 프로그램: ollydbg110
문제: 코드엔진 advance 03.exe
컴퓨터 환경: 윈도우10 64bit
우선 프로그램이 어떻게 동작하는지 알기 위해서 프로그램을 실행시켜 봤습니다.
실행시켜보니 뭔가 태양권 같은? 사진과 저번 03basic.exe 문제와는 다르게 이번엔 Name칸과 Serial칸이 추가가 되어서 난이도가 한층 올라간걸 느낄수 있었다. 우선 Name엔 CodeEngn을 넣고 Serial에는 아무런 값이나 넣어서 실행시켜 봤습니다.
매정한 녀석... 바로 틀렸다는 메세지 박스를 뿜어냅니다...
여기서 우리는 advance 03.exe 이라는 이 프로그램이 어떻게 작동하는지 알수 있게 되었습니다.
1. Name과 Serial 입력
2. 틀리면 틀렸다는 메세지 박스를 뿜어냄
3. 끝
이제 advance 03.exe 이 프로그램을 우리들의 영원한 친구 ollydbg로 열어서 F9을 한번만 눌러서 실행시켜 줍니다.
열어 보니 항상 늘 그랬듯이 여러 함수들이 쭉있다... 오늘은 새로운 기능을 사용할 것 인데 오른쪽 마우스 -> Search for -> All intermodular calls를 눌러줍니다. (여기서 All intermodular calls의 기능은 프로그램에서 사용된 API들을 보여주는 기능을 합니다.)
그러면 이상하게도 All intermodular calls 창에 GetDlgItemTextA가 2개가 있는게 눈에 보입니다. 그래서 두곳다 BP를 걸어놨습니다. 그리고 더블클릭을 해서 함수가 사용된 곳으로 넘어갔습니다.
혹시 눈치 채셨나요? 쿠쿸쿸 첫번째 GetDlgItemTextA가 사용된 부분 아까 BP를 걸어 놓은 부분 바로 아랫줄 코드에 CMP라는 함수가 사용이 되었네요 여기서 큰 힌트를 얻었는데 바로 전 편에서도 설명드렸듯이 CMP는 비교 하는 기능을 가진 함수입니다. 그래서~ CMP EAX,3 이라고 되어있는 부분을 해석해보면 EAX에 입력된 값과 3하고 비교를 해라 라고 할수 있겠네요 그리고 그 다음줄로 바로 넘어가게 되면 JNB SHORT 03.00401142 라는 줄이 보이네요 여기서! JNB라는 녀석은 처음 설명 드리는거 같은데... 잠시만요... 주섬주섬 JNB의 역활은 크거나 같을 때 점프를 하라는 명령을 내리는 녀석입니다. JMP와 형제같은 녀석이죠 물론 하는 역활은 다릅니다. 그래서 이 두줄을 합쳐서 해석을 해보게 되면 CMP EAX,3 -> JNB SHORT 03.00401142 EAX에들어간 값이 3보다 크거나 같으면 SHORT뒤에 있는 좌표로 점프해라! 라고 해석할수 있습니다.
하지만 제가 아까 시도한 Name은 CodeEngn 즉 8글자 짜리였음으로 CMP EAX,3 이부분을 수정해 줘야 합니다. 더블클릭해서 3을 8로 고쳐줍니다.
-> 수정후 코드 변화
그리고 처음에 사용했던 CodeEngn을 Name에 넣고 아무런 Serial값을 넣어주면
실행 상태에서 일시 정지 상태로 넘어가게 됩니다. (아까 BP를 걸어놓은 부분때문에...)
당황하지 말고 다시 실행버튼을 눌러주시면!
이렇게 제대로된 Serial 값을 뿜어냅니다.
ps.인증을 하는 장면까지 보여드리고 싶었지만 프로그램의 오류인지 다른분들은 성공을 하셨는데 저만 계속 틀린 답이라고 메세지 박스를 출력시키더군요... 다음번에는 꼭 성공해서 포스팅 해보겠습니다. 그리고 GetDlgItemTextA의 역활에 대해서 완벽이해해서 설명해드리고 싶었는데 왠지 잘못 이해한거 같기도 말로 글로 설명을 못하겠어서 ... 잘못된 정보를 쓰느니 차라리 쓰지를 말자라고 생각해서 아예 빼버렸습니다 ㅠㅠ 혹시 GetDlgItemTextA의 역활에 대해서 궁금하신 분은 http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=49 이 사이트를 방문해보시면 될것 같습니다. 정말 잘 설명된 사이트인것 같습니다. 막 공부를 시작한 뉴비이니 잘못된 부분이 있으면 댓글로 백태클 걸어주시면 감사히 공부하겠습니다.
'Security > reverse engineering' 카테고리의 다른 글
[dreamhack] rev-basic-3 (0) | 2024.12.10 |
---|---|
Csaw 2018 Quals bigboy (0) | 2024.12.04 |
(Linux) .so hooking (0) | 2024.11.14 |
공주대학교 리버싱문제(중) KingKEY (0) | 2018.08.04 |
프로그램 시리얼 해킹1(코드엔진 basic3) (2) | 2017.12.25 |