Dukungan Ruby, Kotlin, Groovy, Clojure, dan Jshell untuk Ghidra.
Lihat halaman rilis untuk pembuatan rilis terbaru plugin. Setelah mengunduh, Anda dapat menginstal ini di Ghidra dengan pergi ke File->Install Extensions... , Memilih opsi Add Extension , dan kemudian menavigasi ke file zip yang diunduh. Anda akan diminta untuk memulai kembali Ghidra agar ekstensi baru menjadi aktif.
Anda kemudian perlu mengaktifkan plugin sebelum menggunakannya. Anda mungkin diminta untuk melakukan ini lain kali Anda membuka alat Codebrowser, dalam hal ini Anda cukup memilih OK. Jika tidak, Anda dapat mengaktifkannya secara manual dengan membuka alat Codebrowser, pergi ke File->Configure... , dan memilih plugin RubyDragon untuk Ruby, plugin KotlinDragon untuk Kotlin, plugin JShellDragon untuk Java Interpreter, dan plugin ClojureDragon for cloubure. Mereka harus muncul di daftar Ghidra Core , tetapi Anda dapat memeriksa opsi Configure All Plugins jika Anda tidak dapat menemukannya.
Jika Anda perlu menghapus plugin bahasa, Anda dapat melakukannya dengan menghapus centang pada kotak dalam dialog konfigurasi di alat Codebrowser. Jika Anda ingin menghapus ekstensi secara keseluruhan, Anda juga harus menghapus centang di menu Install Extensions dari browser proyek, dan akhirnya restart Ghidra. Anda mungkin juga perlu menghapus folder secara manual dari folder .ghidra/<ghidrainstall>/Extensions Anda untuk sepenuhnya menghapusnya, terutama jika Anda ingin memuat plugin melalui plugin Eclipse untuk pengembangan.
Setelah plugin Rubydragon diaktifkan, Anda akan dapat membuka sesi Ruby interaktif dari alat Codebrowser dengan pergi ke Window->Ruby , atau dengan mengklik ikon Ruby di toolbar. Ini adalah sesi IRB yang disediakan oleh Jruby.
Variabel lingkungan yang sama yang disediakan dalam skrip Java dan Python juga tersedia dalam sesi ini bersama dengan beberapa tambahan, sebagai variabel global berikut:
$current_address
$current_api
$current_data
$current_function
$current_highlight
$current_instruction
$current_location
$current_program
$current_selection Variabel $current_api adalah instance dari FlatProgramAPI yang dibuat dengan $current_program . Ini memiliki banyak (tetapi tidak semua) fungsi kenyamanan yang akan tersedia dalam contoh GhidraScript .
Banyak kelas yang disediakan oleh Ghidra dapat secara otomatis diimpor ke terminal interaktif sehingga Anda tidak perlu menggunakan pernyataan java_import untuk menggunakannya. Jika Anda ingin menyesuaikan ini, Anda dapat memodifikasi file data auto-import.xml dalam instalasi. Untuk mengaktifkan fitur ini (memang mempengaruhi waktu startup) maka Anda dapat mengaktifkan opsi yang relevan dalam kategori Ruby Dragon Interpreters . Ini dilakukan untuk semua bahasa lain juga, menggunakan file data yang sama.
Anda juga dapat menulis skrip dalam Ruby, sama seperti Anda dengan Java atau Python. Ruby akan tersedia sebagai jenis skrip baru, dan Anda dapat melihat beberapa contoh skrip dalam Examples.Ruby Direktori Ruby dari manajer skrip yang menunjukkan penggunaan dasar dasar -dasar Jruby dan Ghidra. Script juga memiliki variabel global tambahan $script yang menyediakan akses ke instance RubyScript untuk mereka.
Variabel global yang sama yang tersedia dalam sesi interaktif juga disediakan untuk skrip untuk digunakan dengan cara yang sama.
Anda juga dapat menemukan bantuan secara langsung di menu Bantuan Ghidra (tekan F1 ) pada Ghidra Functionality->Scripting->Ruby Interpreter .
Jika Anda ingin menginstal permata yang tersedia di penerjemah atau skrip interaktif Anda, maka Anda harus mengambil beberapa langkah tambahan, tergantung pada seberapa terisolasi yang Anda inginkan dari lingkungan permata.
Jika Anda menggunakan sesuatu seperti RVM untuk mengelola lingkungan Ruby Anda, maka Anda dapat dengan mudah mengandalkan ini untuk telah mengatur variabel lingkungan GEM_PATH untuk menunjuk ke instalasi permata Anda. Namun untuk keberhasilan maksimum, Anda harus beralih ke instalasi JRuby, idealnya dari versi yang sama seperti dikemas dalam rubydragon, dan biarkan RVM menunjuk ke permata di dalamnya.
Jika Anda ingin permata Ghidra diatur spesifik untuk Ghidra, atau jika Anda tidak memiliki lingkungan Ruby di luar Ghidra, Anda dapat memilih lokasi sendiri dan mengatur variabel lingkungan GEM_PATH untuk menunjukkannya. Untuk menginstal permata baru ke jalan, memohon versi gem dari toples jruby yang dibundel seperti itu, mengubah versi dan jalur sesuai kebutuhan. Di sini jalur permata akan diatur ke ~/ghidra_gems
# from a shell environment
java -jar ~ /.ghidra/.ghidra_10.2_PUBLIC/Extensions/RubyDragon/lib/jruby-complete-9.3.9.0.jar -S gem install -i ~ /ghidra_gems wrapture REM from a windows command line
java -jar %USERPROFILE% .ghidra.ghidra_10.2_PUBLICExtensionsRubyDragonlibjruby-complete-9.3.9.0.jar -S gem install -i %USERPROFILE% ghidra_gems wrapture Setelah ini selesai, Anda dapat memerlukan Permata wrapture (atau apa pun yang Anda pilih untuk diinstal) dari skrip dan terminal interaktif.
Jika Anda tidak ingin membuat variabel lingkungan dalam konfigurasi global Anda, Anda harus mengacaukan skrip yang digunakan untuk meluncurkan Ghidra untuk mengatur GEM_PATH dengan tepat. Anda dapat melakukan ini dengan menambahkan perintah set di launch.bat atau launch.sh (tergantung pada OS Anda). Untuk sistem Windows, Anda juga harus menghapus parameter /I dari perintah start yang digunakan untuk meluncurkan Ghidra sehingga variabel lingkungan diteruskan.
Kotlin digunakan dengan cara yang sama seperti ruby toolset dengan beberapa perbedaan yang jelas, seperti disediakan oleh plugin KotlinDragon dan dicapai dari opsi menu Kotlin Window->Kotlin . Variabel bawaan untuk skrip dan jendela penerjemah di Kotlin sama dengan Java:
currentAddress
currentAPI
currentData
currentFunction
currentHighlight
currentInstruction
currentLocation
currentProgram
currentSelection
Skrip Kotlin menggunakan ekstensi kts karena ditafsirkan sebagai skrip daripada dikompilasi ke Java terlebih dahulu.
Groovy mengikuti pola yang sama dengan bahasa lain, disediakan di plugin GroovyDragon dan dapat dijangkau dari opsi menu Window->Groovy . Ini memiliki variabel bawaan yang sama yang disediakan orang lain:
currentAddress
currentAPI
currentData
currentFunction
currentHighlight
currentInstruction
currentLocation
currentProgram
currentSelection
Clojure mengikuti pola yang sama dengan bahasa lain, disediakan di plugin ClojureDragon dan Window->Clojure .
Interpreter dan skrip Clojure juga memiliki binding yang membuat informasi negara tersedia bagi mereka, di dalam namespace ghidra . Mereka adalah:
ghidra/current-address
ghidra/current-api
ghidra/current-data
ghidra/current-function
ghidra/current-highlight
ghidra/current-instruction
ghidra/current-location
ghidra/current-program
ghidra/current-selection ghidra/current-api disediakan sebagai contoh FlatProgramAPI yang dibuat dengan currentProgram , seperti halnya penerjemah lainnya. Impor otomatis kelas Ghidra juga dilakukan di ghidra Namespace.
Dan, seperti halnya Ruby, ikatan ghidra/script tersedia dalam skrip yang menyediakan akses ke instance ClojureScript yang mendasarinya. Namun tidak seperti Ruby, variabel ini tidak memungkinkan akses ke bidang yang dilindungi atau metode pribadi. Ini malah disuntikkan ke ghidra namespace juga. Misalnya, untuk mengakses TaskMonitor untuk skrip, Anda dapat dengan mudah merujuk ghidra/monitor untuk melakukan hal -hal seperti memperbarui kemajuan. Script Clojure Ghidra Basics memiliki contoh jenis akses ini. Mereka yang akrab dengan antarmuka scripting Python dapat mengenali paradigma ini, karena sama di sana.
Plugin Jshell menyediakan interpreter Java interaktif oleh Jshell, Java Rept termasuk dalam Java. Ini memberikan variabel bawaan yang sama yang tersedia dalam skrip Java:
currentAddress
currentAPI
currentData
currentFunction
currentHighlight
currentInstruction
currentLocation
currentProgram
currentSelection
Interpreter ini sangat berguna saat menulis skrip Java, karena memungkinkan Anda untuk menguji potongan kode dari skrip secara iteratif dari skrip tanpa perlu melakukan konversi apa pun ke bahasa lain seperti Python atau Kotlin.
Saat ini, cara termudah untuk berkontribusi adalah memposting saran atau mencobanya dan membuka masalah jika Anda memiliki masalah. Buka daftar masalah untuk bergabung dengan diskusi!
Jika Anda merasa petualang, Anda dapat menambahkan skrip contoh dalam bahasa pilihan Anda. Ini bisa setara dengan salah satu skrip yang datang dikemas dengan Ghidra, atau bisa jadi semuanya baru! Pastikan Anda menambahkan tes untuk itu dalam alur kerja aksi GitHub sehingga tidak rusak nanti. Lihatlah folder ghidra_scripts untuk melihat apa yang ada sekarang, dan mungkin menarik beberapa inspirasi tentang apa yang bisa Anda tambahkan.
Atau, jika semua itu agak banyak, beri kami teriakan di #GHidRarubydragon di Twitter dengan pikiran Anda!