-
crackme 1reversing/crackme 2019. 1. 21. 11:37
최근 관심이 생겨 입문하게된 리버싱 입니다. 리버싱 핵심원리 책을 공부하면서 기초를
쌓기로 결심하였고, 우선 크랙미를 통해 공부해 볼 생각입니다.
제 풀이가 틀렸거나, 조언해주시고 싶으신 분들은 자신의 생각을 공유해주시면 감사하겠습니다.^^
크랙미 1 파일 입니다.
처음 실행 해 보시면....
Make me think your HD is a CD-Rom 이라고 나옵니다. 번역을 하면 하드디스크가 CD-ROM이라 생각하게
만들어라 입니다. 확인을 누르면
Nah... This is not a CD-ROM Drive!라고 나옵니다. 번역하면 이것은 CD-ROM 드라이브가 아니다 하면서
error를 띄웁니다. 확인을 누르면 프로그램 종료됩니다.
그럼 올리디버거를 이용하여 확인해 보겠습니다.
401000주소 부터 시작하네요. ^^
F8키를 이용하여 내려오면 40100E에서 첫 메세지 박스가 실행되고, 계속 내려오면 c드라이브를 바꾸려
하는 게 아닌 가라는 추측을 해봅니다.
그리고 ESI증가, EAX감소, jmp가 있는데 왜있는지 모르겠....., ESI증가, ESI증가, EAX감소, EAX ESI 비교를해서
성공 실패를 출력하는 거 같습니다.
PUSH
스택에 값 입력
CALL
지정된 주소 함수 호출
INC
값을 1증가
DEC
값을 1감소
JMP
지정된 주소로 점프
CMP
주어진 두개의 오퍼랜드 비교
JE
조건분기
해결책은 많겠지만, 저는 401024에서 비교를 했을때 ZP를 1로 만들면 조건분기를 해서 40103D로
보내면 해결이 된다. 그런대 JE로 비교 하지 않고도 JMP로 강제로 보낼 수 있기에 JE를 JMP로 바꾸어
해결했습니다.
반응형