Security&Hacking/리버싱

Lena Reversing - tutorial 04

Dior2ky 2020. 2. 27. 17:09
반응형

Lena Reversing tutorial 04

lena reversing 네번째 튜토리얼이다. 

이번 튜토리얼의 목적은 unregistered 상태인 프로그램을 Registed 된 것 처럼 바꾸어 주는 것이다. 

우선 설치 exe 파일이 존재한다.

이 파일을 실행시켜 PixtopainBook 이란 프로그램을 설치 해 주자.

프로그램을 실행 시키면 다음과 같이 나온다. 

다음과 같이 아무 값이나 넣어서 User를 생성해 주었다.

생성 후에는 다음과 같은 창이 뜬다. 바로 로그인 버튼을 눌러주었다.

로그인 후 프로그램의 메인 화면이다. 

unregistered version 이라는 글씨가 상단과 중간에 보인다.

상단의 Help -> About PixtopianBook... 을 누르면 다음과 같이 나온다. 

여기에도 Unregistered 라는 문자열이 보인다. 

이번 튜토리얼은 이런 Unregistered 라는 문자열들을 고쳐 registered 된 프로그램으로 바꾸어 주고 

Unregistered 되어있기 때문에 기능적으로 제한된 부분을 고치는 것이 목적이다. 

그럼 이번엔 기능적으로 제한되어 있는 곳을 살펴보자.

 

add 버튼을 눌러 주소록에 사용자를 추가했다.

4명 까지는 등록이 되지만 더 추가하려고 하면 오류창이 뜬다.

다음은 그룹을 계속해서 추가해주자.

기존의 그룹에 2개의 그룹을 더 추가한 뒤에는 그룹을 생성하면 오류창이 뜬다.

그렇다면 이제 이것들을 수정하여 registered 된 프로그램으로 바꾸어 주자

 

Ollydbg로 해당 프로그램을 실행시켰다.

F9를 눌러 실행 시키면 하단에 다음과 같이나오며 실행이 되지 않는다.

안티 디버깅 기법이 걸려있다. 

인터럽트가 되지 않도록 예외 처리를 해주도록 한다.

상단의 Options 탭에서 Debugging options 를 누른다. 

Debugging options 창이 뜨고 그중 Exceptions 탭을 누른다.

나오는 내용중 Ignore also following custom exceptions or ranges: 에 체크 표시를 해준다. 

Add range를 눌러 범위를 추가해주자.

범위는 00000000 에서 ffffffff까지로 설정해 모든 예외를 무시하도록 해 준다. 

그 후 실행해 보면 오류 없이 잘 실행 되는 것을 볼 수 있다. 

그럼 이제 문자열 수정부터 시작한다. 

상단의 M 버튼을 누르면 Memory map 창이 나온다.

여기서  Control + B 버튼을 누르면 문자열 검색을 할 수 있다. 

다음과 같은 창이 나온다. 

여기에 우리가 찾을 값을 입력해 준다. UNICODE에 프로그램 상단에 있던 문자열을 넣어 검색한다. 

그러면 다음과 같은 결과가 나오게 된다. 왼쪽에 주소가 있는데 이 해당 주소로 가서 값을 수정해 준다.

수정 후에는 Copy to executable 을 눌러 따로 저장해준다. 

다음은 프로그램 가운데 있는 문자열을 수정해 보자 

UNICODE로 검색하여 나온 값을 수정하려 하지만 수정이 되지 않는다...

ASCII 값에 문자열을 검색하자.

이와 같이 수정 까지 했다. 

다음은 Help에 About PixtopianBook을 눌렀을 때 나오는 문자열을 수정한다. 

UNICODE에 검색하여 나온 값을 수정 해준다.

 

copy to executable을 통해 저장을 하고 나면 

프로그램을 실행 시켰을 때 문자열들이 모두 바뀐 것을 볼 수 있다. 

다음은 제한적인 기능을 해제해 보도록 하자

여기서 사용할 방법은 Back to user mode 기능이다. 

프로그램을 실행하고 오류창이 나오도록 한다. 

프로그램 실행은 F8을 눌러 실행해준다. F9로 했더니 정지 시키는 순간 멈춘다.

오류창이 나온 상황에서 Ollydbg를 F12를 눌러 정지시키고 

Debug 탭의 Execute till user code 를 눌러준다. 

그 다음 오류창의 확인을 누르면 오류창을 호출한 바로 다음 코드로 넘어가게 된다. 

여기서 만약 운영체제가 64bit 운영체제라면 제대로 동작하지 않으므로 주의한다. 

제대로 동작했으면 다음과 같이 나온다. 그럼 여기서 F8을 눌러 RETN을 나간다. 

RETN을 나온뒤 위로 조금 올리면 다음과 같은 명령문이 나온다. 3을 비교하고 있고 이는 그룹추가 횟수로 생각된다.

다음에 나오는 분기문을 무조건으로 바꾸기 위해 JMP로 바꾸어 준다. 

변경사항은 Copy to executable을 눌러 저장해준다.

다음과 같이 그룹이 더 추가할 수 있게 변경되었다. 

다음은 Add 의 횟수를 늘려보려 한다. 

같은 방법으로 오류창을 띄우고 Back to user mode를 사용해준다. 

다음과 같이 돌아오게 된다. 

F8을 눌러 RETN을 빠져나온다. 

나온뒤 위로 조금 올리면 이번에는 4와 비교하는게 보인다. 

이번에도 분기문을 JMP로 바꾸어준 뒤 copy to executable을 눌러 저장해주었다.

이제 Add가 4개 까지가 아닌 그 이상도 가능하게 바뀌었다. 

이렇게 해서 프로그램의 기능상의 제약도 없애주었다. 

Unregistered 된 프로그램을 Registered 된 것처럼 완전하게 바꾸었다. 

끝.

반응형

'Security&Hacking > 리버싱' 카테고리의 다른 글

Lena Reversing - tutorial 06  (0) 2020.03.02
Lena Reversing - tutorial 05  (0) 2020.03.02
Lena Reversing - tutorial 03_2  (0) 2020.02.24
Lena Reversing - tutorial 03_1  (0) 2020.02.24
Lena Reversing - tutorial02  (0) 2020.02.23