Jiyong's STUDY
[기초] Hello World 리버싱 문자열 패치 본문
module has entry point outside the code와 같은 문제가 발생한다면
코드를 빌드할 때 debug로 하지 말고 release로 빌드하면 된다.
아무튼 빌드한 exe 프로그램을 ollydbg에 올리면
이런 화면이 나오는데 여기서 Hello World!를 출력하는 부분을 찾아야 한다.
F7(함수 내로 들어감)이나 F8로 한 줄씩 실행하며 가다가 프로그램에서 Hello World!가 출력되는 부분을 찾으면
F2로 BP를 찍어두고 Ctrl+F2로 재실행하면 된다.
또는 Ctrl+G로 main 함수를 찾을 수도 있다.
아무튼 찾은 이후
아래 Dump Window에서 Ctrl+G로 주소를 검색하면
이제 메모리에 직접 접근하여 수정을 할 수 있다. 다만 여기서 직접 수정하는 경우엔 Hello World!의 글자 갯수, 12개에 더하여 Null 문자까지 14바이트까지만 수정을 할 수 있다.
더 길게 변조하고 싶다면 사용하지 않는 메모리를 찾아 적어 놓고 메모리를 변조하면 된다.
덤프 윈도우에서 쭉 내리다 보면 00으로 가득 찬 부분이 있다. 그곳에 출력하고 싶은 문자열을 대충 적어본다.
이후 시작되는 메모리의 주소를 기억하고 코드 윈도우에서 PUSH 00000000의 형태로 되어있는 것에서
주소값을 변경하면 된다.
이제 코드를 실행해보면 더 확실하게 알 수 있다.
'보안 > 리버싱, 어셈블리' 카테고리의 다른 글
[기초] 스택프레임 구조 (0) | 2020.07.17 |
---|---|
[기초] 리틀 엔디언 (0) | 2020.07.17 |
[기초] 스택 자료구조의 ADT (0) | 2020.07.16 |
[기초] 어셈블리어 기본 명령어 (0) | 2020.07.16 |
[기초] 레지스터 (0) | 2020.07.16 |