Sleigh adalah bahasa yang digunakan untuk menggambarkan semantik set instruksi dari mikroprosesor tujuan umum, dengan detail yang cukup untuk memfasilitasi rekayasa balik perangkat lunak yang dikumpulkan untuk arsitektur ini. Ini adalah bagian dari platform teknik terbalik Ghidra dan mendukung dua komponen utamanya: mesin pembongkaran dan dekompilasi.
Repositori ini menyediakan proyek build berbasis CMake untuk Sleigh sehingga dapat dibangun dan dikemas sebagai perpustakaan mandiri dan digunakan kembali dalam proyek selain Ghidra.
| Nama | Mendukung |
|---|---|
| Linux | Ya |
| MacOS | Ya |
| Windows | Ya |
| Nama | Versi | Paket Linux untuk Diinstal | Paket Homebrew MacOS untuk Diinstal |
|---|---|---|---|
| (Kepala bangunan) zlib | Terkini | zlib1g-dev | Zlib |
| Git | Terbaru | git | N/a |
| Cmake | 3.18+ | cmake | cmake |
Catatan : Proyek CMake ini menarik kode sumber Ghidra dari Internet selama konfigurasi. Lihat Catatan di Bagian Kode Sumber Ghidra untuk lebih jelasnya.
Untuk Dokumentasi Bangunan:
| Nama | Versi | Paket Linux untuk Diinstal | Paket Homebrew MacOS untuk Diinstal |
|---|---|---|---|
| Doxygen | Terbaru | doxygen | doxygen |
| Graphviz | Terbaru | graphviz | graphviz |
# Clone this repository (CMake project for sleigh)
git clone https://github.com/lifting-bits/sleigh.git
cd sleigh
# Configure CMake
cmake -B build -S .
# Build Sleigh
cmake --build build --parallel 8
# Install Sleigh
cmake --install build --prefix ./installKode sumber Ghidra sebenarnya tidak termasuk dalam repo git ini, dan secara default, CMake akan secara otomatis menarik versi stabil dari internet untuk Anda.
Silakan lihat src/README.md untuk informasi lebih lanjut tentang cara menyesuaikan komit kode sumber GHIDRA mana yang akan digunakan/dikompilasi, termasuk menentukan salinan lokal Anda sendiri dari sumber Ghidra.
Konfigurasi CMake juga mendukung paket bangunan untuk giring.
Misalnya:
# Package Sleigh
cmake --build build --target package Contoh program yang disebut sleigh-lift telah dimasukkan untuk menunjukkan cara menggunakan API Sleigh. Dibutuhkan string byte heksadesimal dan dapat membongkar atau mengangkatnya ke kode-P. Program dapat dipanggil sebagai berikut, di mana argumen action harus disassemble atau pcode :
sleigh-lift [action] [sla_file] [bytes] [-a address] [-p root_sla_dir] [-s pspec_file]Misalnya, untuk membongkar string byte berikut:
$ sleigh-lift disassemble x86-64.sla 4881ecc00f0000
0x00000000: SUB RSP,0xfc0Dan untuk mengangkatnya ke p-code:
$ sleigh-lift pcode x86-64.sla 4881ecc00f0000
(register,0x200,1) = INT_LESS (register,0x20,8) (const,0xfc0,8)
(register,0x20b,1) = INT_SBORROW (register,0x20,8) (const,0xfc0,8)
(register,0x20,8) = INT_SUB (register,0x20,8) (const,0xfc0,8)
(register,0x207,1) = INT_SLESS (register,0x20,8) (const,0x0,8)
(register,0x206,1) = INT_EQUAL (register,0x20,8) (const,0x0,8)
(unique,0x12c00,8) = INT_AND (register,0x20,8) (const,0xff,8)
(unique,0x12c80,1) = POPCOUNT (unique,0x12c00,8)
(unique,0x12d00,1) = INT_AND (unique,0x12c80,1) (const,0x1,1)
(register,0x202,1) = INT_EQUAL (unique,0x12d00,1) (const,0x0,1) Jika Anda tidak ingin membangun sleigh-lift , Anda harus mengatur opsi variabel cmake sleigh_BUILD_EXTRATOOLS untuk OFF selama konfigurasi cmake.
Repositori ini berisi penolong bukan bagian dari Sleigh/Ghidra, yang dapat Anda temukan di direktori support . Ini memiliki tanda tangan berikut dan dapat membantu pengguna menemukan lokasi file spesifikasi yang diberikan pada sistem:
std::optional<std::filesystem::path>
FindSpecFile (std::string_view file_name,
const std::vector<std::filesystem::path> &search_paths =
gDefaultSearchPaths ); Fungsi sleigh::FindSpecFile akan mencari jalur yang disediakan oleh pengguna melalui argumen search_paths untuk file spesifikasi dengan nama file_name . Argumen default untuk search_paths adalah sleigh::gDefaultSearchPaths yang berisi direktori instalasi/build yang dihasilkan selama konfigurasi cmake dan satu set lokasi instalasi umum.
Jika Anda tidak ingin membangun pembantu, Anda harus mengatur opsi cmake variabel sleigh_BUILD_SUPPORT untuk OFF selama konfigurasi cmake.
Instalasi Sleigh menyediakan antarmuka CMake yang dapat Anda gunakan saat membangun proyek Anda.
Anda dapat menemukan contoh cara menggunakan file konfigurasi paket cmake dalam contoh find_package.
Kami juga menyediakan fungsi CMake Helper sleigh_compile untuk mengkompilasi file .slaspec Anda menggunakan kompiler giring.
Anda dapat menemukan contoh CMake yang lebih kompleks dengan spesifikasi giring kompilasi dalam direktori example , yang menggunakan kode sumber giring giring yang disediakan hulu.
Terakhir, Anda dapat menemukan file giring yang dikompilasi yang diinstal melalui variabel cmake sleigh_INSTALL_SPECDIR , yang merupakan jalur absolut ke direktori root untuk file giring yang dikompilasi --- Anda harus secara manual memeriksa ini untuk mengetahui apa yang diharapkan.
Referensi file konfigurasi CMake dan file specfiles CMake juga disarankan untuk belajar lebih banyak tentang variabel dan modul CMake yang terbuka.
Lihat file lisensi.