1. 실행: Tut. ReverseMe1.exe
2. 분석
2.1 목표 (1) - 메시지 박스(Nag screen) 제거
>> 방법 1: 메시지 박스 함수를 호출하는 부분을 제거
>> 방법 2: 메시지 박스 함수를 호출하는 "상위 함수"가 호출되지 못하게 하거나, 또는 상위 함수가 바로 리턴하게 한다.
메시지 박스가 나타나는 경우
1) 프로그램이 시작될 때
2) "Part10Tut.ReverseMe" 박스에서 [Nag?] 버튼을 눌렀을 때
실행
>> 방법 1: "Nag Screen" 문자열 검색
>> 방법 2: 메시지 박스 검색: MSVBVM50.rtcMsgBox() 함수
1) 우클릭 > [Search for] > [All intermodular calls] : 프로그램에서 사용하는 API 리스트
2) "Destination" 컬럼 선택
3) rtcMsgBox() 함수 확인: 4개
4) 우클릭 > [Set breakpoint on every call to rtcMsgBox] : BP 설정
5) 실행: [F9]
2.2 패치: 메시지 함수 제거
>> 방법 1: 메시지 박스 CALL 부분 수정
그런데...
오류가 발생한다. . .
그렇다고
ADD ESP, 14
MOV EAX, 1 로 수정할 수도 없다. << 8바이트가 필요하기 때문
그러니 다른 방법을 사용해야 한다.
>> 방법 2: 메시지 박스 함수의 상위 함수(Caller) 호출 부분 수정
1) 메시지 박스 호출 함수 호출의 앞 부분 검토
>> 스택 프레임 생성 부분을 찾는다
2) 상위 함수가 바로 Return 하게 수정 (방법 1과 동일한 문제 발생할 수도 있다.)
3) 수정 후 실행 > 메시지 박스가 나타나지 않음을 확인
3. 목표 2: 등록 코드 찾기
RegCode 값 찾기
단서를 찾기 위해 아무 값이나 입력해 본다.
단서: 경고 문구 = "Sorry ! I Wrong registration code !"
코드 분석
I'mlena151를 입력하자 정상 처리가 된다.
'공부 > 리버싱 핵심원리' 카테고리의 다른 글
IAT 따라가기 (0) | 2024.05.12 |
---|---|
PE File Format (0) | 2024.05.11 |
abex' crackme #2 분석 (0) | 2024.04.17 |
abex' crackme #1 분석 (0) | 2024.04.15 |
Hello World! 리버싱 (1) | 2024.04.15 |