일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드 리버싱
- 드림핵 리버싱 풀이
- 오블완
- 강의 체험단 1기
- adb
- 자바스크립트
- 리버싱 스터디
- 리버싱 초보
- 안드로이드 adb
- adb 옵션
- rev-basic 풀이
- 드림핵 리버싱
- 자바스크립트강의 후기
- 인프런 강의 추천
- 제주코딩베이스캠프
- 리버싱 플래그
- 제주ICT
- dreamhack reversing
- 리버싱 입문
- 안드로이드 모바일 앱 모의해킹
- 리버싱핵심원리
- 안드로이드 adb start-server
- 티스토리챌린지
- 더오름
- 리버싱
- 리버싱 핵심 원리
- 위니브
- 드림핵 플래그
- 자바스크립트 강의 추천
- 자바스크립트 강의
- Today
- Total
해보자고
[리버싱 핵심 원리] 2장 일부 & 3장 정리 본문
# 학습 목표
- 2장: Hello Wordl! 리버싱
- 3장: 리틀 엔디언 표기법
2.5 문자열 패치
2.5.1 문자열 패치의 두 가지 방법
1. 문자열 버퍼를 직접 수정
목표: 메시지 박스의 Hello World! 문자열을 다른 문자열로 변경하기.
- 저번에 bp를 건 후 메시지박스의 위치를 찾는다. 책에서는 PUSH (주소값)의 형태였지만 ollydbg에서는 Hello World의 주소값을 알 수 없어 그냥 올리디버거의 기능을 활용하였다.
- Follow dump -> selection
- 덮어씌우고자 하는 영역에 ctrl + E
- 유니코드는 알파벳 한 글자당 2바이트가 필요함.
- 원본 문자열보다 큰 문자열을 덮어쓸 때는 뒤의 데이터 훼손에 주의해야 한다. 중요한 데이터가 있다면 프로그램에서 메모리 참조 에러가 발생할 수 있다.
장점: 간단하다
단점: 기존 문자열 버퍼 크기 이상의 문자를 입력하기 어렵다.
2. 다른 메모리 영역에 새로운 문자열 생성하여 전달
- 적당한 메모리영역에 패치하고하 하는 새로운 문자열을 적고, 해당 주소를 MessageBoxA() 함수에게 파라미터로 넘겨주는 것.
- 프로그램에서 사용되지 않는 NULL padding 영역(사진과 같음)에 문자열을 패치해줌.
- 커서를 사진과 같이 두고 Assemble 명령(단축키:space)을 내려 assemble 창을 켜고 새로운 버퍼 주소를 입력.
+) Assemble 창에서는 사용자가 원하는 어셈블리 명령어 입력이 가능하며, 입력 즉시 코드에 반영 및 실행도 가능함.
3. 리틀 엔디언 표기법
3.1 바이트 오더링
바이트 오더링 : 컴퓨터에서 메모리에 데이터를 저장하는 방식
ex1. WORD w = 0x1234;
ex2. chat[] str = "abced"; // 61의 아스키 코드는 61, e는 65
1. 빅 엔디언(Big Endian)
- ex1. [12][34]
- ex2. [61][62][63][64][65][00]
- 사용: 네트워크 프로토콜, UNIX 서버에 사용되는 RISC 계열 CPU
- 장점: 사람이 보기에 직관적이다.
2. 리틀 엔디언(Little Endian)
- ex1. [34][12]
- ex2. [61][62][63][64][65][00]
- 사용: Intel x86 CPU
- 장점: 산술 연산에 효율적, 데이터 타입 확장/축소될 때 효율적
# LittleEndian 리버싱
- 코드를 쭉 실행하다 실행이 멈추는 곳 이전에 BP를 건다. (main일 확률이 높다.)
- [12] , [34][12], [56][34][12] ~ 리틀엔디언 형식으로 저장되어 있음을 확인할 수 있다.
'리버싱 > 리버싱 핵심 원리' 카테고리의 다른 글
[리버싱 핵심 원리] Visual Basic 파일 특징 (1) | 2024.11.22 |
---|---|
[리버싱 핵심 원리] 7장 정리 (0) | 2024.01.06 |
[리버싱 핵심 원리] 6장 정리 (0) | 2023.12.27 |
[리버싱 핵심 원리] 4장 & 5장 정리 (0) | 2023.11.03 |
[리버싱 핵심 원리] 1장 & 2장 일부 정리 (0) | 2023.03.16 |