암호 동굴
Code cave코드 케이브는 프로세스 메모리에서 사용되지 않는 일련의 바이트입니다.프로세스 메모리 내의 코드 동굴은 커스텀명령어를 주입하기 위한 용량이 있는 섹션을 참조하는 경우가 많습니다.
일반적인 용도
코드 동굴의 개념은 종종 해커와 리버스 엔지니어가 컴파일된 프로그램에서 임의의 코드를 실행하기 위해 사용합니다.추가 대화 상자, 변수 수정 또는 소프트웨어 키 유효성 검사 삭제 등의 예에서 컴파일된 프로그램을 수정하는 데 도움이 될 수 있습니다.많은 CPU 아키텍처에서 흔히 볼 수 있는 콜명령을 사용하는 경우 코드는 새로운 서브루틴으로 점프하여 다음 주소를 스택에 푸시합니다.서브루틴 실행 후 리턴 명령을 사용하여 스택에서 이전 위치를 프로그램 카운터로 팝할 수 있습니다.이를 통해 기존 프로그램은 프로그램 흐름 자체를 크게 변경하지 않고 새로 추가된 코드로 점프할 수 있습니다.
이점
- 쉽고 빠르게 – 이는 수정 프로세스가 빠르고 쉽다는 것을 의미합니다.Olydbg 등의 툴을 사용하여 기존 코드를 수정하면 추가된 함수를 외부 의존 없이 조합하여 테스트할 수 있습니다.
- 소스 불필요– 프로그래머에게 제공되는 소스 코드가 없어도 코드 동굴을 사용하면 매우 효율적입니다.이를 통해 프로그래머는 프로그램 전체를 다시 쓰거나 외부 의존성을 기존 프로젝트에 링크하지 않고도 코드에 함수를 추가하거나 제거하는 등의 조정을 할 수 있습니다.
단점들
- 프로그램을 쉽게 파괴할 수 있습니다.대부분의 경우 실행 파일이 변경됩니다.즉, 스크립트로 제공되는 리소스가 부족하기 때문에 기존 스크립트에 코드 주입용 기존 코드케이브가 존재하지 않을 수 있습니다.기존 스크립트를 교체하면 프로그램 오류/크래시가 발생할 수 있습니다.
- 범용성 결여– 기존 스크립트에 코드를 삽입하는 것은 명령어 변경만 허용하고 사용되는 언어는 어셈블리에 불과하다는 것을 의미합니다.이 문제는 공유 라이브러리 인젝터(DLL 주입 [Windows]또는 LD_PRELOAD [Linux])를 사용하여 경감할 수 있습니다.이것에 의해, 삽입된 라이브러리에는 이미 컴파일 된 코드가 포함되어 있어 타겟 바이너리내의 기존의 명령이 간단하게 변경되어 사용할 수 있습니다.
도구들
- pycave: Portable Executive(PE; 휴대용 실행 파일)[1] 파일에서 코드 동굴을 찾는 간단한 도구입니다.
- Olydbg: 코드 분석용 디버거입니다.스크립트 호출을 추적하고 실행할 뿐만 아니라 라이브러리와 바이너리 내의 반복도 표시합니다.이 디버거를 사용하여 EXE 파일에서 직접 코드를 삽입하거나 제거할 수 있습니다.
- PE: Explorer: 사용자가 PE 파일(휴대용 실행 파일)이라고 하는 실행 파일을 열어 편집할 수 있습니다.여기에는 이 포함됩니다.EXE, .DLL 및 기타 덜 일반적인 파일 형식.
- Cheet Engine: 프로세스 메모리를 읽고 프로세스 메모리를 쓰는 강력한 도구입니다.즉, 클라이언트 측 데이터 값은 모두 변경 및 편집할 수 있습니다.값의 변경도 표시할 수 있습니다.
- TSearch: 프로세스 메모리를 읽고 프로세스 메모리를 쓰는 강력한 도구입니다.Cheet Engine과 마찬가지로 클라이언트 측 값 [2][3][4][5]데이터를 변경할 수 있습니다.