일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹
- webhacking
- 리눅스
- 넘파이
- 백준 알고리즘
- abex crackme
- 리버싱 워게임
- webhacking.kr
- 백준
- 리버싱
- 워게임
- 리버싱 문제
- 웹해킹
- 인공지능
- 알고리즘
- 해킹
- CodeEngn
- php
- 머신러닝
- writeup
- 리액트
- 컴퓨터 구조
- 어셈블리어
- html
- 자바스크립트
- 보안
- MySQL
- C언어
- sql injection
- 회귀 수식
- Today
- Total
목록abex crackme (3)
인공지능 개발일지
4번 프로그램을 실행시키면 아래와 같이 뜬다. 위 입력 프롬프트에 아무거나 입력하고 Registered를 누를려니까 버튼이 활성화되지 않는다. 그래서 ollydbg로 열어봤다. 눈에 띄는 문자열들은 아래와 같이 시리얼 값이 맞을 때 출력할 문자들이 있다. 다음으로 눈에 띄는 것은 vbaStrCmp함수이다. Cmp니까 미리 정해진 시리얼 값이랑 비교하나 보다. 그리고 해당 라인에 중단점을 잡고 실행시키면 창이 다시 뜬다. 여기서 흥미로운 건 아래 창이 떴을 때 아무것도 입력하지 않았을 땐 활성화되지 않던 창이 한 글자만 입력해도 레지스터에서 아래와 같이 유니코드 값이 나타난다. 힌트로 보이는 위 숫자를 Serial칸에 입력하자 아래와 같이 Registered가 활성화되며 풀린다.
파일을 실행시키니 아래와 같이 파일을 찾을 수 없다는 창이 뜬다. 그럼 파일을 찾으면 풀리는 문제인가 보다. Ollybdg에 들어가서 확인해봤다. 그러자 아래 4 부분이 눈에 띈다. 1. 차례로 실행시키다 보면 제일 위의 빨간 박스에서 2,3,4 부분은 건너 띄고 바로 아래 Hmmm~으로 이동한다. 2. 그리고 Filename이 abex.l2c라는 게 눈에 띈다. 3. 이 부분이 우리가 띄어야 하는 부분이다. 4. 여기가 오류 메시지를 출력하는 부분이다. 전체적으로 봤을 때 아래 파란 박스를 눈여겨봐야 한다. 파란 박스에 GetFileSize로 eax에 파일의 길이를 리턴하고 GetFileSize 왼쪽 아래 라인에서 CMP EAX, 12를 볼 수 있다. 이때 12는 16진수여서 10진수로 길이가 18자리..
들어가기 앞서서 4문제를 풀면서 어셈블리어가 이런거구나 느꼈고 문제 구조가 아래와 같이 일반화할 수 있었다. ※ abex crackme 한정 Step 1. ollybdg에 들어가서 한 줄씩 혹은 문자열을 검색해서 실행시킨다. Step2. 위 과정을 통해 특이점이 있는 라인을 찾는다. Step 3. 그 라인들끼리의 관계성을 찾는다. Step 4. 거기서 Fix 할 부분 찾고 고치기 (보통 Step1에서 프로그램을 실행시킬 때 나왔던 문자열과 뜨게 해야 할 문자열을 찾는다) 그리고 이건 개인적인 생각인데 1~4번까지 갈 때 1,2,3,4번 순으로 어려운 게 아니라 4,3,2,1 순으로 1번이 가장 어려웠다. 뇌피셜으로는 정말 문제 난이도가 그러하거나 툴에 익숙해져서 그렇게 느껴지는 건지는 모르겠지만 그냥 그..