일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C++
- OS
- vim-go
- JUCE library
- 자료구조
- go channel
- JUCE
- JUCE라이브러리
- gui
- 알고리즘
- 연결리스트
- C++ gui
- LOB
- 백준
- 운영체제
- C언어
- go
- JUCE 튜토리얼
- BOJ
- Docker
- tour of go
- 코딩
- a tour of go
- C++ library
- Nebula
- 리듬게임
- C++ gui 라이브러리
- c++ heap
- 공룡책
- 프로그래밍
- Today
- Total
CafeM0ca
[리버싱]abex crackme3 본문
사용툴:immunity debugger
포스팅 3분의 1쯤 썼는데 다 날라가버렸다.
키파일을 확인하기위해 확인버튼을 눌러달라고 한다.
눌렀는데 없다고하고 끝나버린다.
이 부분에서 파일을 만드는데 인자들을 보자
hTemplateFile |
파일의 속성을 제공할 템플릿 / 반드시 NULL이어야함 |
Attributes |
파일 속성 / 현재 노말이다. 인자에따라 숨김파일,암호화파일,시스템파일,읽기전용파일,임시파일 등으로 만들 수 있다. |
Mode |
파일 생성 or 열기 / OPEN_EXISTING은 이미 존재하는 파일을 엶. |
pSecurity |
파일 보안 속성 / 파일 보안 속성 지정하는 구조체. NULL이면 자식프로세스에게 핸들이 상속되지 않으며 디폴트 보안 설정자 |
ShareMode |
공유 모드 / 0은 다른 프로세스 파일,장치로부터 열기,읽기,쓰기 권한 요청을 막는다. 1은 읽기, 2는 쓰기, 4는 삭제 가능하게함 |
Access |
파일 권한 / 현재 읽기 권한이다. 쓰기는 GENERIC_WRITE |
FileName |
파일 이름 / abex.l2c 가 생길 듯 |
여기까지 본다면 이미 있는 파일을 읽기 권한으로 여는데 열기,읽기,쓰기 권한 요청이 막혀있고 열려는 파일의 이름은 abex.l2c이다.
CreateFileA함수가 끝난뒤 eax를 -1과 비교해서 같으면 파일을 찾을 수 없다고 한다. (함수의 반환값은 eax로 전달한다.)
파일이 없는데 열려고 하니 -1을 반환한다. 파일을 임의로 만들어주자. 만들어줄때 확장자가 .l2c인데 메모장으로 만들어서 저장할때 파일형식을 모든 파일로 바꿔주고 저장하면 된다.
만들어주고 다시 디버깅해보면 무사히 넘어간다.
하지만 GetFileSize함수를 보면 리턴값이 eax로 반환될테고 eax를 12랑 비교하는걸 보면 파일 사이즈를 12로 맞춰줘야한다. 16진수임을 생각하면 18byte다. 메모장으로 18byte를 써주고(영어,숫자는 1byte, 한글은 2byte) abex.l2c로 저장하면 된다. (경로는 같아야함)
abex.l2c파일은 열기가 안될꺼다. CreateFile함수의 인자로 공유모드가 0으로 전달 되었기때문이다.
'Hacking > abex crackme' 카테고리의 다른 글
[리버싱]abex crackme2 (0) | 2018.01.15 |
---|---|
[리버싱]abex crackme1 (0) | 2018.01.13 |