반응형




안녕들 하시죠 !


오늘은 저번 시간에 이어 문자열패치 두번째 방법 다른 메모리 영역에 새로운 문자열을 생성하여 전달 을 살펴보겠습니다.


저번 시간에 공부했던 문자열 버퍼를 직접 수정방법은 원본 문자열보다 긴 문자열로 수정하게되면 큰 문제가 생길수도 있다고 합니다.

 

우선 저번시간과 동일하게 Hello World.exe 파일을 실행시켜주시구요.

저번시간에 캠프로 사용했던 401000 위치까지 가서 F9로 그 위치까지 실행시켜줍시다.



401007 주소에서는 PUSH 411AF0 명령으로 MessageBox() 함수에게 411AF0 주소의  “ Hello World!” 문자열을 파라미터로 전달하고있습니다.

 

우리는 이제 411AF0 주소의 문자열 대신 다른주소에 있는 다른 문자열을 전달할 것입니다.


밑에 있는 dump창에서 Go to ( ctrl + G ) 명령으로 411AF0 주소로 가주시구요.

저번시간 Hello World ! 문자열을 패치했던 주소에서 조금만 밑으로 스크롤을 내려보세요.


그럼 아래 이미지와 같은 00 으로 가득찬 공간이 나올껍니다. 이부분은 프로그램에서 사용되지 않는 NULL padding 영역 입니다.



자 이제 이 널널한 부분에 문자열을 써줍시다.



정말 널널하군요...


이제 해줄작업은 버퍼를 새로 구성하였으니 MessageBoxW() 함수에게 새로운 버퍼 주소 412940을 알려줘야합니다.

위에있는 Code창에서 Assemble 명령어를 사용하여 코드를 수정해야합니다.


아까 “Hello World !” 가 있던 곳의 주소에 커서를 놓고 space을 누르면 Assemble이 나옵니다.

그곳에 우리의 새로운 문자열의 주소 412940을 입력해줍니다.



F9를 눌러 실행하게되면



, 이렇게 주소를 바꿔주어 더 긴 문자열 패치에 성공했습니다.


오늘은 여기까지입니다 감사합니다 !




참고서적 이승원 「리버싱 핵심원리」 인사이트(2018) p41~47

+ Recent posts