일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vlan
- 리버싱
- dreamhack
- abex'crackme
- bastion host
- 크롤러
- AI
- Python
- AWS
- Java
- Firewall
- 인공지능
- 자바
- vector
- STP
- RIP
- Mac
- 머신러닝
- 네트워크
- Reversing
- 암호학
- 스위치
- docker
- CISCO
- Screening Router
- cmd
- 라우터
- Repository
- 머신러닝 프로세스
- 온프레미스
- Today
- Total
Haekt‘s log
[리버싱] abex' crackme #1 문제풀이 (x32 dbg) 본문
- 명령어 설명
Cmp eax, esi 이 명령어는 eax와 esi 의 값을 구분하여 같으면 ZF 플래그를 1로 만드는 명령이다.
점프 명령어인 je 또한 JUMP EQUAL, 같을경우 점프.
- 단축키 설명
F2 : 브레이크 포인트 설정/ 해제
F7 : 한줄실행 (함수 안까지 따라들어가 실행)
F8 : 한줄실행 (함수 건너뛰어 실행)
F9 : 전체 실행
- 사용 툴
- x32dbg
- Writeup!
먼저 Crack 1 을 실행시키면 아래와 같은 창이 뜨게 된다.
CD-Rom 을 확인해 뭔가를 하는 프로그램으로 보인다
확인을 누르게 되면, 위와 같이 Error 창이 뜨며 이건 CD-Rom 이 아니라고 한다.
X32 디버거를 이용하여 이 프로그램의 구조를 확인해 보자.
실행을 시켜서 확인을 하면 위와 같은 화면이 뜨게 된다.
먼저 비교방법을 알기 위해 CD-Rom을 구분하여 창을 띄우는 코드
부분으로 이동하자.
F9를 눌러 엔트리 포인트가 존재하는 메인 함수까지 실행시킨다.
그런 다음 자신의 드라이브가 CD-Rom 인지 확인해야 하므로,
자신의 드라이브를 받아온 후 비교하는 부분이 존재할 것이다.
비교문을 찾아보자
비교하는 어셈블리어 명령어인 Cmp를 이용하여 같을 경우 띄울 메세지 부분으로,
점프를 하는 부분을 찾아볼 수 있었다.
Cmp eax, esi 이 명령어는 eax와 esi 의 값을 구분하여 같으면 ZF 플래그를 1로 만드는 명령이다.
점프 명령어인 je 또한 equal, 같을경우 점프이므로,
Eax 와 esi 값이 같아야 점프한다는 것을 알 수 있었다.
Eax, esi 값을 확인하기 위해 F8 키를 눌러 위의 점프 명령어까지 실행시켜 보았다.
그 결과 점프를 하지않았다.
위의 사진은 점프까지 실행시켰을 때의 레지스터 값이다.
Eax 와 Esi 값이 다른 값이 들어있어, 점프를 하지 못한것으로 생각된다.
Cmp 비교문을 같은 값으로 바꾸어 해결이 가능할 것으로 생각된다.
같은 값을 비교하도록 하여 값을 수정해 보자.
X32 디버거 에서의 코드 수정은 선택 후 스페이스 바로 수정이 가능하다.
비교문을 클릭한 후 스페이스 바를 눌러 cmp eax, eax 로 수정해 준다.
그 후 x32 디버거 상단바에서 밴드모양을 눌러 아래와 같은 패치창을 열어준다.
파일 패치를 눌러준다.
Cracked만 붙여서 파일을 저장해 주었다.
이제 저장 후 실행하여 정상적인 창이 뜨는지 확인해보자.
이제 정상적인 창이 뜨는 것을 확인해 볼 수 있다.
'Reversing' 카테고리의 다른 글
[리버싱] reversing with lena-tutorial 3 (1) | 2022.09.25 |
---|---|
X32,64 dbg 파일 패치방법 (0) | 2022.09.25 |
[ASM] TEST EAX, EAX 왜 쓰는걸까? (0) | 2022.09.20 |
[리버싱] abex' crackme #3 문제풀이 (x32 dbg) (0) | 2022.09.20 |
[리버싱] reversing with lena-tutorial 1 (1) | 2022.09.20 |