2023. 1. 9. 18:31ㆍReverse_engineering/리버싱 핵심원리__
최근 리버스엔지니어링 공부를 시작하기 시작했다.
어셈블리어를 하나도 읽지 못하는 나에게 CPU 전기신호 어쩌고 저쩌고 샬라 되면서 익히는 거는 생각보다 고된 일인거 같다...
그래도 나름 책 보고 따라해봤는데 조금 정리할 필요성이 있을 거 같아 글을 남긴다.
책에서 쓰고 있는 디버깅 프로그램으로 OllyDbg를 택했다.. 생각보다 오래된 프로그램이라 살짝 그렇지만.. 다른 디버거로 넘어가기 전까지 책에 있는 걸 바탕으로 기초적인 역량을 끌어올려야 하기에 일단은 이걸 써야할거 같다..
위에 004011A0 에서 0040270C 함수를 호출하는 것을 볼 수 있으며 두번째 줄 (004011A5)에서는 JMP(점프) 방식으로 004010F주소로 넘어가라 라는 의미로 해석할 수 있겠다.
일단 Ollydbg에서의 대표적인 단축키는 다음과 같다.
40270C 함수가 선언되었고 이후 F7을 통해 실행시키면 다음과 같은 화면이 등장한다.
맨 아래는 RETN명령어가 있는 것을 알 수가 있으며 RETN은 본래 있던 함수의 주소로 돌아가는 역할을 한다.
Chapter 2. 40104F 점프문을 따라가라 !
처음으로 돌아온후 4011A5 주소의 JMP 명령을 실행시켜서 40104F 주소로 가보도록 하자.
이후 쭈욱 디버깅을 해 나가며 다른 함수를 호출하는게 있는지 확인을 할 필요가 있다.
쭈욱 들어가보면 Call HelloWor. 00402524로 또 다른 함수를 불러들이는 부분이 있음을 확인할 수 있다.
더 더욱 파고 들어가보자..
이쪽 부분이 main 함수 부분인줄 알고 헤헤 혼자 좋아했지만 아니였다.. 이유로는 실행파일을 실행 하면
다음과 같은 창이 뜨기에 MessageBox()를 호출할 코드가 보여야 한다. 하지만 보이지가 않았다. (API Code)
이후 함수호출 부분들을 따라가다보니.. 다음과 같은 함수 호출을 하는 부분을 만날 수 있다.
CALL kernel 32.GetCommandLineW 명령어는 Win32 APi 호출 코드를 뜻한다 한다.
다음과 같은 함수 호출 라인을 볼 수 있었고 004013EF 함수를 호출하는 것으로 볼 수 있다.
다음 함수를 호출하여 F7 버튼으로 따라 들어가 보자.
들어가다보면 다음과 같은 함수 호출을 발견할 수 있고 계속 따라가 본다면
다음과 같이 main 함수를 찾아볼 수 있다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
기나긴 개 고생으로 다음과 같은 함수를 찾아볼 수 있다. Main함수라고 추측할 수 있는 이유로는 Call 함수로 MessageBox가 나옴으로 확인할 수가 있다.
'Reverse_engineering > 리버싱 핵심원리__' 카테고리의 다른 글
문자열 주소를 변경하여 실행하기 (0) | 2023.01.18 |
---|