티스토리 뷰
디버깅을 시작하기전에 파일을 실행시켜 어떤 프로그램인지 살펴 봅니다.
현재 실행해보면
HD 를 CD-ROM 으로 인식하도록 만들라고 합니다.
확인을 누르면 CD-ROM 드라이브가 아니라고 나오네요...
실행해보니 abex crackme1은 CD-ROM 드라이브로 인식하게 만들어주면 되는것 같습니다.
CodeWindow 창을 살펴보겠습니다.
몇줄 안되네요....
comment 창을 보시면 아까 봤던 출력창의 내용들이 있네요
그 아래 보시면 조금 짤렷지만 YEAH!! "OK, I really think that your HD is a CD-ROM! :p" 라는 문구가 보입니다.
아마도 성공했을때의 메시지로 생각됩니다.
시작인 401000 번지부터 살펴보겠습니다.
401002 번지와 401007 번지에서 00402000 번지와 00402012 번지에 있는 abex 1st crackme , Make me think your HD is a CD-Rom 이라는 메시지 박스를 불러와 출력합니다.
401013 번지를 보면 GetDriveTypeA() API 를 이용하여 C드라이브의 타입을 얻어옵니다.
이 부분에서 HD 로 인식되는 부분을 CD-ROM으로 인식하게 하면 될것 같습니다.
40101D 번지부터 401024 번지 까지 살펴봅시다.
※ 이전에 GetDriveTypeA() 에서 리턴값으로 3을 받아옵니다.
이것은 직접 코드를 한 라인씩 진행하면 EAX(리턴값)값으로 3을 받아오는 것을 알 수 있습니다.
40101D 번지부터 401024 번지 까지 살펴보기 전에 알아야할 몇가지 명령어 입니다.
PUSH 스택에 값을 입력.
CALL 지정된 주소의 함수를 호출
INC 값을 1 증가
DEC 값을 1 감소
JMP 지정된 주소로 점프
CMP 주어진 두 개의 operand 비교
JE 조건 분기 (ZF=1 이면 점프)
ESI 증가 =1
EAX 감소=2
00401021 로 점프 ( 바로 아래 주소가 00401021 이므로 사실 의미 없는 점프문)
ESI 증가 =2
ESI 증가 =3
EAX감소 =1
EAX 와 ESI 비교 (값이 같지 않음)
401026 번지에서 두 값이 같으면 0040103D 로 점프 ( 성공 메시지가 출력되게 됩니다.)
만약 두 값이 다르면 조건분기 하지않고 진행. 에러 메시지가 출력되게 됩니다.
이제 크래킹을 해봅니다.
방법 1. JE(조건분기)를 JMP 로 변경
저는 JE(조건 분기)를 단순 점프문인 JMP 로 변경해 보겠습니다.
JMP는 무조건 원하는 주소로 이동하므로 성공 메시지가 출력되게 됩니다.
방법 2. ESI 와 EAX 값을 맞춰 줍니다.
ESI 의 값과 EAX의 값을 맞추어 주기위해
DEX EAX (EAX를 감소)와 INC ESI(ESI증가) 를 NOP( 값이 없음 )으로 바꿔 줍니다 .
그러면 EAX =2 , ESI= 2로 값이 같아지게 됩니다.
방법 1 이나 2번을 수행한 후 실행하면 성공 메시지를 얻을 수 있습니다.
- Total
- Today
- Yesterday
- 리버싱 공부
- 뱅커
- banker
- CryptoLocker
- Ransom
- 뱅킹
- 서비스
- 리버싱
- 파밍
- 팝업
- IT·컴퓨터
- 백신
- 실전 악성코드와 멀웨어 분석
- CTB-Locker
- 에이콘 출판사
- 실전 악성코드와 멀웨어 분석 연습문제
- 한빛리더스
- 악성코드
- 실전 악성코드와 멀웨어 분석 문제풀이
- 크립토락커
- 해커스쿨
- 해커스쿨 ftz
- 에이콘
- 광고
- 바이로봇
- CryptoWall
- 한빛아카데미
- 키로거
- 랜섬웨어
- malware
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |