리버싱 엔지니어링/리버싱 핵심 원리
2 Hello World! 리버싱(2) - 문자열 패치
흰싸라기
2022. 2. 6. 22:49
2.5 “Hello World!” 문자열 패치
: “Hello World!” 문자열을 다른 문자열로 패치
문자열을 패치하는 두가지 방법
1) 문자열 버퍼를 직접 수정
- main 함수 시작 주소를 BP 설정 후 실행
- 덤프 창에서 Goto 명령을 통해 "Hello World!" 문자열 주소로 이동
3. “Hello World”를 선택하여 Edit 다이얼로그 띄우기 [Ctrl+E]
4. ‘유니코드’ 항목에 원하는 문자열 입력
5. [F9]를 통해 실행
- 단점 : 기존 문자열 버퍼 크기 이상의 문자를 입력하기에는 어려움이 있음.
- 디버거 종료 시 사라지기 때문에 변경된 내용은 저장 필요.
2) 다른 메모리 영역에 새로운 문자열 생성하여 전달
- 더 긴 문자열로 패치해야할경우
1. 1번 방법과 동일하게 문자열이 있는 주소로 이동.
2. 해당 영역 밑으로 이동하며 NULL padding 영역 찾기 :
- NULL padding 영역은 프로그램에서 사용하지않음
3. 적당한 위치를 정해 패치 문자열 작성
4. MessageBoxW() 함수 파라미터 수정[space] : 수정한 문자열 주소 전달
5. 실행