리버싱 엔지니어링/리버싱 핵심 원리

2 Hello World! 리버싱(2) - 문자열 패치

흰싸라기 2022. 2. 6. 22:49

2.5 “Hello World!” 문자열 패치

: “Hello World!” 문자열을 다른 문자열로 패치

문자열을 패치하는 두가지 방법

1) 문자열 버퍼를 직접 수정

  1. main 함수 시작 주소를 BP 설정 후 실행
  2. 덤프 창에서 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. 실행