일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- html
- 리버싱 워게임
- 자바스크립트
- MySQL
- 웹
- 인공지능
- 회귀 수식
- 해킹
- abex crackme
- 워게임
- CodeEngn
- 어셈블리어
- 리버싱
- C언어
- 컴퓨터 구조
- 넘파이
- 리눅스
- 머신러닝
- 백준 알고리즘
- writeup
- 리액트
- 리버싱 문제
- sql injection
- webhacking.kr
- 보안
- php
- 백준
- 알고리즘
- 웹해킹
- webhacking
- Today
- Total
목록abex crackme 풀이 (2)
인공지능 개발일지
4번 프로그램을 실행시키면 아래와 같이 뜬다. 위 입력 프롬프트에 아무거나 입력하고 Registered를 누를려니까 버튼이 활성화되지 않는다. 그래서 ollydbg로 열어봤다. 눈에 띄는 문자열들은 아래와 같이 시리얼 값이 맞을 때 출력할 문자들이 있다. 다음으로 눈에 띄는 것은 vbaStrCmp함수이다. Cmp니까 미리 정해진 시리얼 값이랑 비교하나 보다. 그리고 해당 라인에 중단점을 잡고 실행시키면 창이 다시 뜬다. 여기서 흥미로운 건 아래 창이 떴을 때 아무것도 입력하지 않았을 땐 활성화되지 않던 창이 한 글자만 입력해도 레지스터에서 아래와 같이 유니코드 값이 나타난다. 힌트로 보이는 위 숫자를 Serial칸에 입력하자 아래와 같이 Registered가 활성화되며 풀린다.
2번을 실행하면 아래와 같이 뜬다. 그리고 아무거나 입력해봤다. 그러자 아래와 같이 Wrong Serial이라고 뜬다. 정해진 Seriala 값이 있나 보다 생각하고 ollybdg에 들어가서 열어준다. 그러면 아까 봤던 창을 띄우는 코드가 눈에 띈다. 그리고 아래 코드를 실행시켜 보면 1,2,3번 차례로 실행되는 게 아니라 1번에서 3번으로 2번을 건너 띈다. 자세히 보면 1번에서 TEST AX AX로 위에서 push한 것을 받는 걸 보니 CALL ~라인이 함수를 호출하는 건가 하고 추측할 수 있다. 그래서EDX와 EAX가(Name과 Serial) 스택으로 가고 파란색 박스에서 보이듯이 JE 명령어로 이 두 개를 비교해서 3번으로 점프하고 있다. 그러면 crackme 1번처럼 JE를 JMP로 바꿔줘도 풀..