
Linux 시스템에서 실행 중인 프로세스의 메모리와 코드를 검사하고 조작할 수 있게 해주는 라이브러리입니다.
raminspect는 Linux 시스템에서 실행 중인 프로세스의 메모리와 코드를 검사하고 조작할 수 있게 해주는 crate입니다. 프로세스 메모리에서 검색어를 찾아 교체하는 함수, 프로세스에 속한 새 메모리를 할당하는 함수, 그리고 프로세스의 컨텍스트에서 실행되는 임의의 셸코드를 주입할 수 있는 인터페이스를 제공합니다. 명백한 이유로 이 모든 기능에는 root 권한이 필요합니다.
demo
Firefox가 설치되어 있다면 firefox_search 예제를 실행할 수 있을 것입니다. 그러려면 먼저 Firefox 인스턴스를 열고 검색 바에 "Old search text"를 입력하세요. 모든 것이 잘 진행된다면, sudo cargo run --example firefox_search --release 명령으로 예제를 root 권한으로 실행했을 때 해당 텍스트가 "New search text"로 교체되어야 합니다. 다만 새 텍스트가 렌더링되려면 검색 바를 다시 클릭해야 할 수도 있습니다.
찾기 및 교체 기능은 커널 모듈이 있든 없든 사용할 수 있지만, 셸코드를 주입하거나 새 버퍼를 할당하려면 먼저 필수 커널 모듈을 빌드하고 로드해야 합니다. 이를 위해서는 사용 중인 배포판의 커널 헤더 패키지를 설치하고, git clone을 수행한 뒤 저장소의 kern_module 하위 폴더에서 다음 명령을 실행하면 됩니다(어떤 이유로든 빌드가 실패하면 이슈를 등록해 주세요):
make all
sudo insmod raminspect.ko
또한 셸코드 주입 부분은 현재 모든 아키텍처에서 동작하도록 설계되어 있지만(실제 셸코드 자체는 플랫폼별이어야 함), 임의 메모리 할당 부분은 현재 x86-64로 제한되어 있습니다. 더 많은 CPU 아키텍처에서 임의 할당을 지원하기 위한 PR을 환영합니다.
이 프로젝트는 아직 안정적인 상태가 아니므로, 호환성을 깨뜨리는 변경과 버그가 있을 수 있습니다. crate에서 버그를 발견하거나 예제 중 하나라도 여러분의 머신에서 동작하지 않는다면, 신속히 수정될 수 있도록 저장소에 이슈를 생성해 주세요.