Interaksi API Ollama Skrip Ghidra untuk rekayasa balik berbantuan LLM.
Apa ini?
Skrip ini berinteraksi dengan API Ollama untuk berinteraksi dengan Model Bahasa Besar (LLM). Ia menggunakan API Ollama untuk melakukan berbagai tugas rekayasa balik tanpa meninggalkan Ghidra. Ini mendukung instance Ollama lokal dan jarak jauh. Skrip ini terinspirasi oleh GptHidra.
Model yang Didukung
Skrip ini mendukung model apa pun yang didukung Ollama
Ollama juga baru-baru ini menambahkan dukungan untuk model apa pun yang tersedia di HuggingFace dalam format GGUF, misalnya:
ollama run hf.co/arcee-ai/SuperNova-Medius-GGUF
Prasyarat
- Ghidra
- Ollama
- Salah satu model Ollama
Pengaturan Ollama
Jangan ragu untuk mengganti llama3.1:8b
dengan model mana pun yang kompatibel dengan Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b
Sekarang Anda siap melakukannya, localhost:11434
harus siap menangani permintaan
Catatan: Skrip ini juga mendukung instance jarak jauh, atur alamat IP dan port pada konfigurasi pertama.
Apa yang bisa dilakukannya?
- Jelaskan fungsi yang saat ini ada di jendela decompiler
- Menyarankan nama untuk fungsi saat ini, akan secara otomatis memberi nama fungsi tersebut jika ini telah diaktifkan
- Tulis ulang fungsi saat ini dengan komentar yang direkomendasikan
- Tulis ulang sepenuhnya fungsi saat ini, coba perbaiki nama fungsi/parameter/variabel dan juga tambahkan komentar
- Pengguna dapat mengajukan pertanyaan tentang suatu fungsi
- Temukan bug/sarankan potensi kerentanan dalam fungsi saat ini (lebih hanya untuk memastikan Anda telah mencakup semuanya, beberapa saran bodoh karena tidak memiliki konteks)
- Gunakan versi modifikasi dari Skrip Ghidra LeafBlowerLeafFunctions.py ini untuk mengotomatiskan analisis fungsi 'leaf' potensial seperti strcpy , memcpy , strlen , dll dalam binari dengan simbol yang dilucuti, ganti nama otomatis jika ini diaktifkan
- Jelaskan instruksi perakitan tunggal yang saat ini dipilih di jendela daftar
- Jelaskan beberapa instruksi perakitan yang saat ini dipilih di jendela daftar
- Entri cepat umum untuk mengajukan pertanyaan (daripada harus ke Google, bagus untuk hal-hal sederhana)
Opsi Konfigurasi
Opsi konfigurasi berikut tersedia, dan dapat dikonfigurasi saat pertama kali dijalankan:
- IP Server : Jika menggunakan instance jarak jauh, setel ke IP instance jarak jauh, jika tidak, masukkan
localhost
- Port : Jika instance Anda menggunakan port yang berbeda, ubah di sini - defaultnya adalah
11434
- Skema : Pilih
http
atau https
bergantung pada bagaimana instans Anda dikonfigurasi - Model : Pilih model yang ingin Anda gunakan untuk analisis, Anda dapat mengubahnya kapan saja
- Prompt khusus proyek : Digunakan untuk memberikan konteks tambahan pada model jika diperlukan
- Komentar Tanggapan : Beberapa opsi menyimpan tanggapan sebagai komentar di bagian atas fungsi, ini dapat diaktifkan/dinonaktifkan di sini
- Penggantian nama otomatis : Beberapa opsi mencoba dan secara otomatis mengganti nama fungsi berdasarkan respons, ini dapat diaktifkan/dinonaktifkan di sini
Opsi 11 & 12 dapat digunakan untuk menyesuaikan pengaturan setelah dijalankan pertama kali.
Penggunaan
- Tempatkan skrip GhidrOllama.py dan direktori ghidrollama_utils di direktori skrip Ghidra Anda (biasanya
~/ghidra_scripts
). - Temukan fungsi/instruksi yang ingin Anda masukkan ke LLM
- Jalankan skrip dari jendela Script Manager
- Jika ini pertama kalinya menjalankan skrip, selesaikan konfigurasi awal (ini dapat diubah nanti)
- Pilih bagaimana Anda ingin fungsi/instruksi dianalisis
- Tunggu hingga output dicetak ke konsol (waktu tunggu bervariasi tergantung model dan spesifikasi host)
Cara untuk Berlari
Masuk ke jendela skrip untuk menjalankan skrip ini setiap saat tidaklah nyaman, skrip dapat dengan mudah dijalankan dengan cara berikut:
- Pengikatan kunci : Pengikatan kunci default untuk skrip ini adalah Q
- Toolbar : Ikon kecil pada toolbar dapat diklik untuk menjalankan skrip
Pengikatan kunci
Untuk mengaktifkannya, setelah Anda menambahkan skrip Anda ke dalam daftar direktori skrip Ghidra, cari skrip tersebut di dalam daftar. Klik kanan hasilnya, dan pilih "Assign key binding". Jika diminta memasukkan kunci, masukkan q .
Bilah Alat
Untuk mengaktifkan ikon toolbar, cari skrip di pengelola skrip, dan klik kotak centang di kolom pertama (kolom Dalam Toolbar ). Ikon GhidrOllama akan muncul di toolbar.
Catatan
- Perlu dicatat bahwa analisisnya hanya akan sebaik modelnya, skrip ini pada dasarnya hanya menjembatani model dan Ghidra
- Semakin baik modelnya (lebih banyak parameter, lebih lambat) analisisnya akan semakin komprehensif dan benar (sering kali!)
- Jika Anda ingin gambaran singkat tentang suatu fungsi, llama3.1:8b cepat dan memberikan analisis yang layak
- Hati-hati dengan fungsi besar dan model konteks rendah, jika fungsinya terlalu besar untuk jendela konteks, model akan merespons dengan omong kosong (jika merespons sama sekali)
Contoh Analisis Fungsi
Di bawah ini adalah implementasi strchr() seperti yang terlihat di jendela dekompilasi Ghidra dengan simbol yang dilucuti: