*ollydbg 2.0, 윈도우 10에서 진행하고 있습니다.
앞에서 작성한 helloworld 코드를 다시 보겠습니다.
#include "windows.h"
#include "tchar.h"
int _tmain(int argc, TCHAR* argv[])
{
MessageBox(NULL,
L"Hello World!",
L"www.reversecore.com",
MB_OK);
return 0;
}
저희가 작성한 메인은 아주 짧은데요. 이 메인함수를 찾아보겠습니다.
첫번째 방법은 F8(step over)를 이용하는 것입니다.
계속 누르다보면 창이 하나 뜨게됩니다.
visual studio에서 창이 뜨도록 코딩을 해놓았기 때문이죠!
여기서 주목해야할 점은 CALL 00401000 이 호출되고, main함수로 넘어가서 메시지 창이 떴으니까,
저 주소로 가면 main함수부분을 찾을 수 있다는 것입니다.
두번째 방법, F8로 다 보지 않고도 한번에 이동할 수 있는 방법
- code window 부분에서 마우스 우 클릭 후, Search for> All reference string 클릭
이런 화면이 뜨는데 여기서 우리가 가야할 부분인 hello world가 있는 곳을 클릭해서 이동합니다.
여기 제일 오른쪽에 우리가 작성한 문자열이 나와있습니다.
메인함수 찾기 완료!
앞으로 사용하기 쉽게 Breakpoint를 걸어둡니다.
스택은 아래부터 쌓이니까, 실질적으로 메시지 창이 뜨는 걸 시작해주는 아래부분에 BP를 걸어둡니다. (빨간색으로 변함)
올리디버거를 조금 더 효과적으로 사용하기 위한 것들
Break point 설정
- EP, main, 중간에 분기해야하는 여러곳들(base camp)들을 표시해주기 위해
- 원하는 곳에 가셔서 F2를 누르시면 됩니다.
- 실행은 F9
- [view]메뉴> Breakpoints 에 가시면 내역들을 볼 수 있습니다.
특정 주소로 이동
- Goto[Ctrl+G]
주석
- 원하는 어셈블리 라인에서 세미콜론[;]을 누르고 입력
레이블
- [pop up]> Search for> User defined labels
- [:] 입력
다음은 문자열을 수정해보겠습니다.
리버싱을 통해 프로그램의 일부를 수정하는 것입니다.
우리는 hello world!라고 뜨는 부분을 수정할 것이기 때문에, 해당 부분으로 가야합니다.
위에서 찾은 main부분에서 시작합니다.
이 문자열은 어디에 저장이 되어있는지 알아봅시다.
main에 hello world! 출력되는 부분을 보면 00402128으로 가면 될거같습니다.
이 주소에 이 문자열이 들어가 있겠네요.
아래쪽 dump window를 클릭하고 [Ctrl+G]> 가고자 하는 주소(00402128)을 입력합니다.
그럼 이렇게 hello world라고 쓰여있는 부분이 보일 것입니다.
이제 이 부분을 수정해볼게요.
수정하고자하는 부분을 드래그하고 창을 띄우시면 [Ctrl+ E]
이렇게 수정을 합니다. 제가 드래그를 길게 한 이유는
바꿀 문자열이 hello reversing 이기 때문입니다.
기존의 hello world보다 더 길기 때문에 넉넉하게 잡고 수정합니다.
수정 이후 BP를 이용해 실행하면 바뀐 문자열을 확인할 수 있습니다.
또 다른 문자열 패치 방법을 알아보겠습니다.
이번엔 다른 메모리 영역(NULL Padding 영역)에 문자열을 입력하고,
어셈블리 코드를 수정해서 따라가게 해보겠습니다.
우선 빈 공간을 찾아서 앞에서 한 것과 똑같이 문자열 수정을 해줍니다.
여기서 중요한 것은 시작 주소를 알아두는 것!
이렇게 수정을 했고, 시작주소는 402B98 입니다.
기존의 코드 부분 더블클릭> PUSH 00402B98으로 변경하니 바뀐 것을 확인할 수 있습니다.
바뀐 exe파일을 저장하기
1. 문자열을 수정한 부분, dump window부분에서 드래그를 하고 마우스 우클릭
2. edit> copy to executable
3. 바뀐 것 확인하기
4. 마우스 우클릭> save file> 이름 설정하고 저장
그리고 저장한 파일을 열어보면 수정한 것으로 뜹니다.
'study > 악성코드분석&리버싱' 카테고리의 다른 글
악성코드 분석- 기초 정적 분석, PE 파일 (0) | 2020.04.09 |
---|---|
Reversing Theory- abex' crackme #1 (2) | 2020.04.02 |
Reversing Theory- little endian (4) | 2020.04.02 |
Reversing Basic- ollydbg 기본 명령어 (2) | 2020.03.26 |
Reversing Basic- ollydbg install+ setting (1) | 2020.03.26 |