





Register을 해야만 할 수 있다는 것들이 너무 많아서 Register한 것처럼 프로그램을 조작해보겠다

F9를 눌러 계속 실행하다보면 프로그램이 중간중간 정지하게 된다.
이럴때는 Shift + F9를 통해서 빠져나오면 되는데, 그럼에도 불구하고 이상한 루틴에 빠지게 되어 프로그램 종료지점으로 가게 된다.
이런 방법을 '안티 디버깅' 기법이라고 하고, 디버깅 탐지를 막기위해 프로그램 제작자가 심어놓은 기술이라고 보면 된다.

체크하게 되면 중간중간 멈추는 현상이 나타나지 않는다.

프로그램 중간중간 UNREGISTERED라고 표기되어 있는 부분을 싹 바꿔주겠다








이 상태에서 잠시 프로그램을 정지하고(F12 또는 일시정지버튼)
call stack (K)을 살펴보면 호출된 함수들의 목록을 확인할 수 있다.


메모리 상 다양한 dll 파일이 있지만 우리는 사용자가 사용하는 프로그램에서만 사용되는 DLL 을 살펴봐야 한다.
Alt+F9 이후에 프로그램에 뜨는 OK버튼 클릭 --> User Code까지 실행이 됨

이 MessageBox를 호출한 함수의 루틴을 확인해보기 위해
Call stack에서 함수 확인


ⓐ CMP EAX,3
이 명령어에서 그룹 제한 수 3을 큰 숫자로 늘리거나
ⓑ JL 00408B34
JL 명령어를 통과해야하는데 이를 통과하지 못하고 해당 경고창이 뜬 것임을 알게 되었다.
따라서 이 부분의 명령어를 JMP로 바꾸어 무조건 점프하게 해본다.

인원 수 제한을 푸는 방법도 위와 같다.

OllyDBG에서 일시정지, Alt+F9, 확인버튼

F8눌러서 RETN으로 넘어가고
또 F8을 누르면 바로 위에 CALL함수가 있는 다음줄로 넘어간다.

☞ 이 CALL함수가 메시지 박스!!

CMP EAX,4에서 숫자를 높이거나
JL을 JMP로 바꿔주면?
성공
'Study > Reversing' 카테고리의 다른 글
Malware 프로그램 분석 1 (0) | 2021.11.16 |
---|---|
Lena 5번 풀이/Rena's Reversing Tutorial 05 (0) | 2021.11.10 |
악성코드 주요 행위 분석 (0) | 2021.11.10 |
고급 정적 분석 by IDA (0) | 2021.11.10 |
Lena 3번 풀이/Rena's Reversing Tutorial 03 (0) | 2021.11.03 |