선릉역 1번 출구
abex' crackme #1 분석 본문
먼저 이 파일이 어떤 파일인지 보겠습니다.
확인을 누르니까 Error 창이 뜹니다. 아직까지는 뭐하는 프로그램인지 잘 모르겠습니다.
이 시스템의 구조를 파악해봅시다.
VMware에서 abex' crackme 파일을 ollydbg로 열어줍니다.
그럼 여태껏 다른 파일들과는 다르게 EP가 00401000입니다.
보통의 경우는 컴파일러가 stub code를 임의로 추가시키기 때문에 disassemble시 코드가 매우 복잡하게 보이는데 이 파일은 코드의 길이가 매우 짧습니다. 이 말은 즉 어셈블리 언어로 개발됐다는 의미입니다.
첫번째 PUSH부터 네번째 PUSH는 MessageBoxA함수의 매개변수를 stack에 넣는 과정입니다.
여기서 알아둬야 할 점은 stack이 FIFO구조이기 때문에 매개변수도 순서를 거꾸로 넣어줍니다.
GetDriveTypeA()호출
분기문입니다. 그런데 EAX와 ESI값을 비교하는데 이 값이 다르면 그냥 바로 다음 주소인 00401028이 수행됩니다. 근데 이 값이 항상 다르기 때문에 이 프로그램은 Error로만 향하게, 분기문에서 항상 False 값이 나오게 짜여진 프로그램입니다.
우리의 목표는 Error창이 아닌 YEAH!가 나오게 하는 것이기 때문에 이 코드를 패치해서 정상적으로 실행되게 고쳐주면 됩니다.
단순 패치가 목적이기 때문에 무조건 점프 JMP를 사용해서 우리가 원하는 주소로 향하게 코드를 수정하였습니다.
그리고 실행(F9)을 누르면
정상적으로 패치가 된 것을 볼 수 있습니다.
'Hacking & Security > Malicious code and Reversing' 카테고리의 다른 글
Nag Screen (0) | 2022.03.20 |
---|---|
abex' crackme #2 분석(1) (0) | 2022.03.20 |
Ollydbg 폰트 설정 (0) | 2022.03.17 |
Stack (0) | 2021.12.24 |
Endian (0) | 2021.12.24 |