Security&Hacking/리버싱

Lena Reversing - tutorial 19_1

Dior2ky 2020. 3. 10. 20:12
반응형

Lena Reversing tutorial 19_1

이번 단계에서는 디버거를 탐지하고 안티 디버깅 기법이 들어있는 프로그램을 분석한다.

세개의 프로그램이 존재하지만 antisniff 프로그램은 디버거에서 오류가 나야 하는것이 안나서 두개만 나누어 진행한다. 

첫번째 프로그램은 ReverseMe.A 프로그램이다. 

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

어디서 많이 본 것 같은 창이다. keyfile 을 확인하여 창을 띄우는 방식으로 1, 2 단계를 참고하면 좋다. 

Ollydbg로 열어서 실행을 해준다.

?? 그냥 실행한 것과 다른 결과가 나온다. 

Ollydbg에서 한줄씩 분석하도록 한다. 

CreateFileA 함수를 통해 파일이 있는지 확인하고 파일이 있다면 분기하고 있다.

아래쪽에는 기간이 지났으며 라이센스를 구매하라는 messagebox를 호출하고 프로세스를 종료하고 있다.

keyfile이 있기 때문에 분기하여 Readfile 함수로 넘어간다. 

계속 진행해준다.

다음은 keyfile의 값을 검증하는 과정이다. 

계속 진행한다. 

keyfile이 올바르지 않을 때 나타나는 messagebox 부분이다. 호출되는 부분을 보면 

readfile 후에, keyfile 내용이 짧을 때, G의 갯수가 적을 때, 그리고 또 하나 IsDebuggerPresent 함수에서 들어오고 있다. 

이 IsDebuggerPresent 함수는 004010D3에서 004010FB를 호출하면서 호출된다.

여기서 디버깅 프로그램이 실행되고 있는지 판단하여 keyfile이 맞더라도 올바르지 않다고 출력하고 있다. 

 

IsDebuggerPresent 함수를 검색하여 찾아보면 디버깅 중이라면 0을 리턴하고 아니라면 1을 반환한다고 한다. 

이와 같은 방법이 안티 디버깅 기법 중 하나이다. 

 

디버깅을 하고 있는 것과 상관없이 동작하도록 패치를 해준다. 

디버깅 중이면 분기하는 부분을 NOP 처리해준다. 

copy to executable 을 해서 프로그램을 저장한다.

다시 Ollydbg에서 실행을 해도 올바르게 창이 나오는 것을 확인할 수 있다.

끝.

 

반응형

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

Lena Reversing - tutorial 20_1  (0) 2020.03.10
Lena Reversing - tutorial 19_2  (0) 2020.03.10
Lena Reversing - tutorial 18  (0) 2020.03.10
Lena Revesing - tutorial 17  (0) 2020.03.09
Lena Reversing - tutorial 16_2  (0) 2020.03.09