이 저장소에는 역 엔지니어링 작업 중에 AMD K8 및 K10 CPU의 마이크로 코드를 사용하는 동안 사용 된 프레임 워크가 포함되어 있습니다. 이 도구를 사용하여 구현 된 예제 프로그램뿐만 아니라 어셈블러 및 분리기가 포함되어 있습니다. 또한 AMD CPU에 마이크로 코드 업데이트를 신속하게 적용하고 테스트 할 수있는 맞춤형 최소 운영 체제를 제공합니다.
여기에 제공된 파일은 연구에서 시작되었으며 연구 목적으로 만 사용되어야합니다. 그들은 소기업의 내부에 대한 부분적 지식만으로 편집되며 의도하지 않은 행동뿐만 아니라 버그를 포함 할 수 있습니다. 모든 파일은 보증 및 지원없이 제공됩니다. 우리는 그것들의 사용에 대한 책임이나 책임이 없다고 가정합니다.
X86 명령 세트는 복잡하며 많은 레거시 명령어가 포함되어 있습니다. 따라서 소프트웨어에서는 드물게 사용되거나 복잡한 지침이 디코딩되지 않으며 성능 중요한 지침은 하드웨어 디코더에 의해 처리됩니다. 하드웨어 또는 소프트웨어로 디코딩 되더라도 지침은 궁극적으로 RISC86이라는 다른 명령어 세트로 변환되며, 이는 고정 된 명령 길이가 고정되어 있으며 빠른 슈퍼 스칼라 처리에 적합합니다. 소프트웨어 디코딩 외에도 마이크로 코드는 결함있는 프로세서 기능을 비활성화하고 가장 낮은 수준에서 예외를 처리 할 수 있습니다.
이 저장소의 내용은 우리의 연구 노력의 실제 결과를 반영합니다. 자세한 내용은 논문에 나와 있습니다.
리버스 엔지니어링 X86 프로세서 마이크로 코드 26 번째 USENIX Security Symposium의 절차에 게시되었습니다.
컴퓨터 및 통신 보안에 관한 25 번째 ACM 컨퍼런스의 절차에 발표 된 시스템 방어를위한 빌딩 블록으로서 마이크로 코드의 탐색 적 분석
USENIX17 폴더에는 USENIX 2017 논문의 결과, 가장 중요한 것은 우리의 개념 증명 증명서의 업데이트 및 트리거와 업데이트 드라이버를 포함하여 임의의 업데이트가 Linux 시스템에로드 될 수 있도록합니다. 자세한 내용은 해당 readme 파일에 나와 있습니다.
우리의 최소 운영 체제는 폴더 songer_os에 포함되어 있습니다. 이 시스템을 빌드하고 사용하는 방법에 대한 자세한 내용은 해당 폴더의 readme 파일을 참조하십시오.
작업 중에 사용한 프레임 워크는 Ucodeapi 폴더에서 찾을 수 있습니다. 이 API가 어떻게 사용되는지에 대한 예는이 폴더에 제공된 예제 스크립트를 참조하십시오. API는 Python 2에서만 테스트됩니다.
"사례 연구"폴더에는 CSS 18 논문에 제시된 사례 연구가 RTL 형식으로 포함되어 있습니다.