문자열 패치: 리버싱을 통해 프로그램의 일부를 수정하는 것
패치를 하는 이유: 기존 응용 프로그램 버그 수정, 새로운 기능 추가
방법 1: 문자열 버퍼 직접 수정
Ctrl E
원본문자열보다 큰 문자열을 덮어쓸 때에는 그 뒤의 데이터를 훼손하지 않도록 조심
방법 2: 다른 메모리 영역에 새로운 문자열을 생성하여 전달: NULL Padding 영역에 문자열 입력
Ctrl E + Assemble at ~
파일로 만들면 제대로 동작x (대응되는 파일 offset이 존재하지 않음)
유니코드: 2바이트
아스키코드: 1바이트
Ctrl G: ~로 가기
Ctrl E: 문자역 버퍼를 직접 수정
exe 파일로 저장하기
Copy to Excutable File → Save file (원본 파일과 같은 이름으로 저장하지 않도록 주의)
리틀 엔디안 표기법
바이트 오더링: 컴퓨터에서 메모리에 데이터를 저장하는 방식
빅 엔디언: 순서대로 표기
리틀 엔디언: 역순으로 저장 → Intel x86 CPU
main 찾기를 위한 단축기 복습
F2: BP
F7: step into
F8: step over
레지스터: CPU 내부에 존재하는 다목적 저장 공간
범용 세그먼트 - EAX, EBX, ECX, EDX: 주로 산술연산 명령어에서 상수/변수 값의 저장 용도로 많이 사용
포인터 레지스터 - EBP, ESP, EIP
EBP, ESI, EDI, ESP - 메모리 주소 저장하는 포인터로 주로 사용
범용 레지스터
4byte 전체 사용 시: EAX
2byte 사용시: EAX의 하위 16bit 부분인 AX
플래그 레지스터 - ZF, OF, CF, SF
32비트(4바이트)
데이터 이동 명령어
mov: 목적지로 값을 저장
lea: 메모리 주소를 목적지에 저장
push/pop: 스택에 데이터를 넣음/꺼냄, EBP 감소/증가
실습 결과 사진

BYTE b = 0x12;

WORD w = 0x1234;

DWORD dw = 0x12345678;

char str[] = “abcde”;
'보안 > 악성코드' 카테고리의 다른 글
악성코드 동적 분석 (0) | 2023.04.17 |
---|---|
6주) 기초 정적 분석 (0) | 2023.04.14 |
안티바이러스 스캐닝, MD5, 패킹/난독화 해제 (0) | 2023.04.08 |
PE파일 분석, crackme (0) | 2023.03.30 |
리버싱 기초 (0) | 2023.03.24 |