설치 화면
설치 후 실행. User와 Location 정보를 입력하라고 한다.
하나를 새로 생성한 후 실행해본다.
일단 실행하면 UNREGISTERED VERSION이라고 뜨며
group 생성 수도 제한이 걸려있고
한 그룹당 생성 인원 수도 제한되어 있다.

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

 

OllyDBG 실행

F9를 눌러 계속 실행하다보면 프로그램이 중간중간 정지하게 된다.

이럴때는 Shift + F9를 통해서 빠져나오면 되는데, 그럼에도 불구하고 이상한 루틴에 빠지게 되어 프로그램 종료지점으로 가게 된다.

이런 방법을 '안티 디버깅' 기법이라고 하고, 디버깅 탐지를 막기위해 프로그램 제작자가 심어놓은 기술이라고 보면 된다.

디버깅 옵션에서 예외 사항 무시하는 것에 모두 체크

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

 

Memory Dump - Ctrl+B - UNICODE나 ASCII에 찾고자 하는 문자열 검색

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

 

일단 제목부분의 주소 확인
Hex Dump창을 가서 확인
버전 정보를 담은 제목을 NOP으로 채워준뒤 따로 저장

 

제목 변경


또 다른 unregistered 내용
바꾸기
문자열 바꾸기 성공. 일단 문자열 바꾸는 것은 여기까지 해보겠다


 

OllyDBG에서 실행한 프로그램의 경고창이 뜬 상태에서 

이 상태에서 잠시 프로그램을 정지하고(F12 또는 일시정지버튼)

call stack (K)을 살펴보면 호출된 함수들의 목록을 확인할 수 있다.

경고창의 내용이 나오는 것을 확인할 수 있다.
이 상태에서 Alt+F9 실행

메모리 상 다양한 dll 파일이 있지만 우리는 사용자가 사용하는 프로그램에서만 사용되는 DLL 을 살펴봐야 한다.

Alt+F9 이후에 프로그램에 뜨는 OK버튼 클릭 --> User Code까지 실행이 됨

 

MessageBox가 뜬 후의 위치로 왔다.

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

Call stack에서 함수 확인

004562ED를 호출한 함수는 00308B1D이다

 

해당 함수를 호출하는 곳을 가서 확인해본다

ⓐ CMP EAX,3 

이 명령어에서 그룹 제한 수 3을 큰 숫자로 늘리거나 

 

ⓑ JL 00408B34

JL 명령어를 통과해야하는데 이를 통과하지 못하고 해당 경고창이 뜬 것임을 알게 되었다.

따라서 이 부분의 명령어를 JMP로 바꾸어 무조건 점프하게 해본다.

 

그룹 생성 수에 제한 없이 계속해서 add 되는 것을 확인할 수 있다!!


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

똑같이 여기까지 실행한 후 

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

 

그러면 그 함수를 부르기 전의 위치로 오게된다.

F8눌러서 RETN으로 넘어가고

 F8 누르면 바로 위에 CALL함수가 있는 다음줄로 넘어간다.

 

MessageBox를 호출한 함수는 00412DEA이다.

  CALL함수가 메시지 박스!!

 

CALL 함수 위쪽을 보면 아까와 비슷한 비교문, JL 문이 있다.

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

+ Recent posts