Repositori ini berisi kerangka kerja yang digunakan selama pekerjaan kami tentang rekayasa balik mikrokode CPU AMD K8 dan K10. Ini termasuk assembler dan disassembler serta contoh program yang diimplementasikan menggunakan alat -alat ini. Kami juga menyediakan sistem operasi minimal tertulis khusus kami yang dapat dengan cepat menerapkan dan menguji pembaruan mikrokode pada AMD CPU.
File -file yang disediakan di sini berasal dari penelitian dan dimaksudkan untuk digunakan hanya untuk tujuan penelitian. Mereka dikompilasi dengan hanya pengetahuan parsial tentang internal mikroarsitektur dan mungkin mengandung bug serta perilaku yang tidak diinginkan. Semua file disediakan sebagaimana adanya tanpa jaminan dan dukungan apa pun. Kami tidak bertanggung jawab atau bertanggung jawab atas penggunaannya.
Set instruksi x86 kompleks dan berisi banyak instruksi warisan yang hanya disimpan untuk kompatibilitas ke belakang. Dengan demikian, instruksi yang jarang digunakan atau kompleks diterjemahkan dalam perangkat lunak, sementara instruksi kritis kinerja ditangani oleh dekoder perangkat keras. Terlepas dari didekodekan oleh perangkat keras atau perangkat lunak, instruksi pada akhirnya diterjemahkan ke set instruksi lain bernama RISC86, yang memiliki panjang instruksi tetap dan cocok untuk pemrosesan cepat, superscalar. Selain itu, perangkat lunak decoding mikrokode dapat digunakan untuk menonaktifkan fitur prosesor yang rusak dan menangani pengecualian pada level terendah.
Isi repositori ini mencerminkan hasil praktis dari upaya penelitian kami. Detail diberikan dalam makalah kami:
Reverse Engineering X86 Prosesor Mikrokode yang diterbitkan dalam Prosiding Simposium Keamanan Usenix ke -26
Analisis eksplorasi mikrokode sebagai blok bangunan untuk pertahanan sistem yang diterbitkan dalam proses Konferensi ACM ke -25 tentang Komputer dan Keamanan Komunikasi
Folder USENIX17 berisi hasil kertas USENIX 2017 kami, yang paling penting pembaruan dan pemicu untuk konsep bukti kami serta driver pembaruan yang memungkinkan pembaruan sewenang-wenang untuk dimuat pada sistem Linux. Rincian lebih lanjut diberikan dalam file readme yang sesuai.
Sistem operasi minimal kami terkandung dalam folder Angry_os. Untuk detail tentang cara membangun dan menggunakan sistem ini, lihat file ReadMe di folder itu.
Kerangka kerja yang kami gunakan selama pekerjaan kami ditemukan di folder UCODEAPI. Untuk contoh tentang bagaimana API ini digunakan, lihat contoh skrip yang disediakan di folder ini. API hanya diuji di bawah Python 2.
Folder "studi kasus" berisi studi kasus yang disajikan dalam makalah CSS 18 kami dalam bentuk RTL.