Security&Hacking/리버싱

Lena Reversing - tutorial 24_2

Dior2ky 2020. 3. 26. 20:16
반응형

Lena Reversing tutorial 24_2

이번에는 같은 프로그램을 loader를 통해 패치하는 과정을 진행하도록 한다. 

24_1 에서 봤듯이 이번 프로그램은 Armadillo 프로텍터를 사용하고 있다. 

OutputDebugStringA 함수를 통해 디버거를 탐지하고 종료시킨다. 

 

그럼 프로그램을 살펴본다. 

Ollydbg로 열어 실행해준다. 

OutputDebugStringA 는 이전 24_1을 참고해 우회해준다. 

프로그램 실행 화면이다. 좌측 버튼중에 가장 아래 Regist 하는 버튼이 있다. 

아무값이나 넣고 regist 해본다. 

다음과 같이 올바르지 않다고 나온다. 

 

이제 이 부분을 crack 해보도록 한다. 

그대로 두고 Ollydbg로 넘어간다. 

 

Call stack을 이용해주도록 한다. 

상단의 K버튼을 눌러준다. 

아무내용도 없다면 조금 기다렸다가 누르면 나온다.

가장 아래 rtcMsgBox 가 눈에 띈다. 아마도 오류창을 띄우는 함수로 보인다. 

Call 하는 주소가 0088BD55라고 나온다. 따라가준다. 

Call 하기 전 위쪽을 살펴보면 여러 내용 전에 분기문이 보인다. 

hw bp를 걸고 다시 실행하여 아무값이나 넣고 register를 해준다. 

break가 걸린다. Z 플래그를 변경시켜 주고 결과를 확인해준다. 

성공적으로 등록 되었다는 메세지창이 뜬다. 

해당 부분을 패치해주면 된다는 것을 확인했다.

TEST EDX, EDX 이전에 EDX값을 변경시켜 주거나 JE를 JMP로 변경시켜주면 될 것이다.  

 

이제는 로더를 사용해보도록 한다. 

우선 로더는 프로그램이 실행되고 언패킹 과정이 끝날 때까지 기다렸다가 동작하게 된다. 

언패킹 과정이 끝나면 사용자가 원하는 부분의 메모리를 수정해준다.

 

로더를 만들기 위해 같이 들어있는 R!SC.P.P.exe 프로그램을 이용한다. 

먼저 .rpp 파일을 만들어야 한다.

다음과 같이 적어준다. 

T는 패치가 이루어지는 타이밍이다. (ms)

F는 패치할 대상 프로그램이다. 

O는 해당 .rpp를 통해 만들어질 로더 프로그램 이름이다. 

R는 쓰레드 재시작에 관련된 값이다.

P는 패치 내용을 말하는데 주소값/원래 명령어/바꿀 명령어 순으로 써주면 된다. 

적혀있는 내용을 보면 88BCF5 주소의 내용인 0F84~ (JE 0088D7C)를 E982~ (JMP 0088D7C)로 바꾸어 주는 것이다. 

 

이제 R!SC.P.P.exe를 실행해서 만들어준 .rpp 파일을 불러온다. 

그러면 loader.exe 파일이 생성된 것을 확인할 수 있다.

loader.exe파일을 실행하면 RegMech 프로그램이 실행된다. 

register 버튼을 눌러 아무값이나 넣고 등록해도 성공적으로 등록이 되는 것을 볼 수 있다. 

 

이번 단계에서는 loader에 대해 배울 수 있었다. 

loader는 언패킹 후에 메모리 값을 사용자가 원하는대로 변경시킬 수 있다.

패킹된 파일에서도 동작하기 때문에 별도로 언패킹을 수행하지 않고도 동작시킬 수 있다.

 

끝.

 

반응형

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

Lena Reversing - tutorial 25_1  (4) 2020.04.09
Lena Reversing - tutorial 24_1  (0) 2020.03.19
Lena Reversing - tutorial 23  (0) 2020.03.16
Lena Reversing - tutorial 22  (0) 2020.03.16
Lena Reversing - tutorial 21_4  (0) 2020.03.15