728x90
반응형
1. Code Window에서 동작하는 단축어
명령어 | 단축키 | 설명 |
---|---|---|
Restart | [Ctrl+F2] | 현재 프로세스의 디버깅을 다시 시작 |
Step Into | [F7] | 코드 한 줄을 실행 |
Step Over | [F8] | Step Into와 달리, 함수에 들어가지 않고 리턴값만 받음 |
Execute Until Return | [Ctrl+F9] | 함수 코드 내에서 RETN명령어까지 실행(함수 탈출 목적) |
Go to | [Ctrl+G] | 원하는 주소로 이동 |
Excute till curser | [F4] | 커서가 위치한 곳으로 이동 |
Set/Reset Break Point | [F2] | BP 설정/해제 |
Run | [F9] | BP 설정 되어 있는 곳까지 실행 |
Preview CALL/JMP address | [Enter] | 커서가 CALL/JMP 명령어에 있으면 보여줌 |
2. 베이스캠프 설치
- 중간 중간 베이스캠프를 설치하여, 그곳에서 다시 시작할 수 있도록 함
2.1. Goto 명령 + Excute till curser
2.2. BP 설치
- [View] - [BreakPoint]를 이용해, BP목록을 볼 수 있음
- 하드웨어 BP가 필요할 땐, [우클릭] - [BreakPoint] - [Hardware, on excution]으로 들어가 설정가능함.
2.3. 주석
- 단축키: [;]
- [Search for] - [User defined comment]에서 주석 목록 확인 가능
2.4. 레이블
- 단축키: [:]
- JMP 등을 할때, Comment 창에 레이블을 표시할 수 있음
- [Search for] - [User defined lables]에서 주석 목록 확인 가능
3. 원하는 코드를 찾아내는 방법
3.1. 코드 실행 방법
- 직접 코드를 실행해보며, 코드를 찾아간다.
3.2. 문자열 검색 방법
- [우클릭] - [Search for] - [All referenced text strings]
3.3. API 호출 코드에 BP
- [우클릭] - [Search for] - [All intermodular calls]로 이동하여,
- 원하는 API를 찾은 다음 BP를 건다.
- 그 다음, 그곳으로 이동[F7]한다.
3.4. API 코드에 직접 BP
- [우클릭] - [Search for] - [Name in all modules]로 이동하여,
- 원하는 API를 찾은 다음 BP를 건다.
- 그 다음, 실행[F9]하여 원하는 코드로 이동한다.
4. 문자열을 패치하는 방법
4.1. 문자열 버퍼를 직접 수정
- 문자열이 존재하는 Dump Window에서 유니코드로 직접 수정[Ctrl+E]하는 방법
- 문자열은 유니코드 2바이트 크기의 NULL(U+0000)로 종료되어야 함.
- 다만 문자열 이후에, 다른 데이터가 있을 수 있으므로 권장되지 않음
- Copy to execute를 이용해 사본 저장 가능
4.2. 빈 메모리 영역에 저장 후, 전달하기
- 빈 공간(like Null Pedding)에 원하는 문자열을 기록하고, 문자열을 참조하는 주소를 변경하는 방식
- 1.번 방법에 비해 안정적임
* 출처: 리버싱 핵심원리 (이승원 저.)
* 개인적으로 공부한 내용을 정리한 글입니다.
반응형
'정보보호 > 리버스엔지니어링' 카테고리의 다른 글
[리버싱] Windows 환경에서 파일과 메모리에서의 주소체계 (1) | 2024.01.06 |
---|---|
[PWN] pwnable.kr collision 문제풀이 (0) | 2024.01.06 |
[PWN] pwnable.kr fd 문제풀이 (0) | 2024.01.06 |
[F-Security] Level1. 문제 풀이 (0) | 2021.05.09 |
STOS / STOSB / STOSW / STOSD 이야기 (0) | 2019.02.10 |