본문 바로가기
정보보안/리버싱

리버싱) abexcm1.exe#2 - abex crackme 두번째

by _miiiiiin_zzang_ 2021. 5. 30.
더보기

어휴 두번째 편이 뭐이리 오래 걸릴까 반성하고 일주일에 세번 올리기 다시 시작한다. 진짜로 진짜 진짜

스택 분석하기

스택 : 변수를 스택에 저장해서 함수로 전달할 수 있고 서브루틴에서 사용되는 변수를 저장하는 공간으로 활용할 수 있음. 서브루틴을 수행하기 전에 메인 루틴의 레지스터를 스택에 저장할 수도 있음

 

디버링 시 문자열 중심으로 스택을 분석하기

주석 영역을 보면

주소 0040237C에는 "Please enter at least 4 chars as name!"이 존재

주소 004023D0에는 "Error!"이 존재

스택 분석을 하기 위하여 주소 00403054에 브레이크포인트 설정 완료

프로그램 실행을 해서 이름(ab)과 일련번호(1234)를 입력하여 프로그램 실행흐름이 브레이크 포인트가 설정된 부분으로 이동하게 하기

스텝 오버 기능을 사용하여 프로그램 주소까지 실행, 디버거 커서는 다음 주소인 00403070에 위치

레지스터 값 확인

레지스터 값을 확인 가능

ESP(0012F338) : 현재 사용하는 스택의 맨 위의 주소가 저장되는 레지스터, pop과 push가 실행되면 ESP 레지스터에 저장된 값은 스택을 증가하거나 감소함

스택

디버거에서는 스택을 표현할 때 여러가지 주소 체계를 사용함

코드 영역에서 코드를 사용할 때는 EBP에 대한 상대 주소가 사용(Address -> Relative to EBP)

스택의 [EBP-E4]에는 "Error!" 문자열이 저장된 주소인 004023D0이 들어가 있음

스택 영역에서 오른쪽 버튼 > Edit

에라ㅣㅇ 시불탱 하려니까 컴 나감ㅡㅡ 신발이나 빨고 와야지

error! 문자열이 저장된 메모리 주소가 들어가있는 것을 확인 가능

이 데이터를 0040237C로 변경하기 - 리틀엔디언 방식

변경되는 것을 확인 가능

 

댓글