반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- C
- 오늘의 보안
- 악성코드
- 코드업
- C language
- Code Up
- cmd
- 코딩
- 오늘의 영어
- c언어
- 설치
- 랜섬웨어
- defcon.mem
- codeup
- DEFCON
- Memory Forensics
- 정보보안기사
- 보안
- Defcon DFIR CTF 2019
- 멀웨어
- 리버싱
- 다운로드
- C 프로그래밍
- ctf
- Volatility
- 리버싱 핵심원리
- SQLD
- 보안동향
- 오늘의 보안동향
- sql
Archives
- Today
- Total
오브의 빛나는 별
1부 2장 Hello World! 리버싱(3) 본문
반응형
안녕하세요, 오브입니다.
오늘은 디버거를 이용해서 프록램의 내용을 간단히 패치하는 방법에 대해 알아보겠습니다.
https://staraube.tistory.com/46
https://staraube.tistory.com/47
Hello World! 리버싱
2.5.1. 패치
- 기존 응용 프로그램의 버그 수정 및 새로운 기능 추가 가능
- 실습 목표: 메시지 박스의 “HelloWorld!” 문자열을 다른 문자열로 변경
- 앞에서 MessageBoxW 호출 부분과 문자열 주소를 찾음
- 방법
- 디버깅 재실행[Ctrl+F2]
- main 함수 시작 주소인 401000까지 실행
- main() 함수에 BP 설정[F2], 실행[F9]
2.5.2 문자열을 패치하는 두 가지 방법
1. 문자열 버퍼를 직접 수정
- 덤프 창에서 [Ctrl+G]으로 4092A0 주소로 가기
- 4092A0 주소를 마우스로 드래그한 후 [Ctrl+E]하여 Edit 다이얼로그 띄우기
- “HelloWorld!” 문자열이 차지하는 영역은 4092A0~4092B9.
- Edit 다이얼로그 ‘유니코드’ 항목에 “Hello Reversing” 문자열 입력
- 유니코드 문자열은 2바이트 크기의 NULL로 끝나야 함
- 일반적으로 문자열 뒤쪽에 어떤 의미 있는 데이터가 존재할 수 있기 때문에 원본 문자열 길이를 넘는 문자열로 덮어쓰는건 위험
- main() 함수 401000를 다시 보면 명령어는 그대로지만 MessageBoxW() 함수에 전달되는 파라미터의 내용은 변경되어 있음
- [F9]를 눌러 실행시키면 메시지 박스에 패치된 문자열이 나타남
- 문자열 버퍼 내용을 직접 수정하는 방법은 간단하지만 기존 문자열 버퍼 크기 이상의 문자를 입력하기 어렵다는 제약이 있음
- 디버거 종료하면 패치했던 내용은 사라짐
=⇒ 파일로 생성
- dump 창에서 변경된 문자열을 선택하여 마우스 우측 클릭
- Copy to executable file 클릭
- Save file 클릭하여 “HelloReversing.exe”로 저장
2. 다른 메모리 영역에 새로운 문자열을 생성하여 전달
- 디버거 재실행[Ctrl+F2]한 후 전진 캠프(main() 함수- 401000)로 감
- 401007 주소의 PUSH 004092A0 명령은 4092A0 주소의 문자열을 파라미터로 전달함
- 적당한 메모리 영역에 패치하고자 하는 긴 문자열 적고 MessageBoxW() 함수에게 버퍼 주소를 파라미터로 넘겨줌
- 방법1에서 수정한 문자열인 4092A0에서 밑으로 내려 NULL padding 영역으로 감(Hex dump 창)
- 적당한 위치 409F50에 [Ctrl+E] 눌러 패치 문자열 “Hello Reversing World!” 쓰기
- 코드 창에서 401007 주소에 커서를 놓고 Assemble 명령 [Space] 누름
- Assemble 창 그림에 ‘PUSH 409F50’ 입력
- 실행 [F9]하면 메시지 창 확인 가능
반응형
'리버싱' 카테고리의 다른 글
2부 13장 PE File Format(1) (0) | 2022.04.23 |
---|---|
1부 3장 리틀 엔디언 표기법 (0) | 2022.04.23 |
1부 2장 Hello World! 리버싱(3) (0) | 2022.04.23 |
1부 2장 Hello World! 리버싱(2) (0) | 2022.04.22 |
1부 2장 Hello World! 리버싱(1) (0) | 2022.04.21 |