Memperkenalkan IPyIDA: Plugin Python untuk perangkat rekayasa balik Anda

Memperkenalkan IPyIDA: Plugin Python untuk perangkat rekayasa balik Anda

ESET Research mengumumkan IPyIDA 2.0, sebuah plugin Python yang mengintegrasikan IPython dan Jupyter Notebook ke dalam IDA

IDA Pro dari Hex-Rays mungkin merupakan alat paling populer saat ini untuk perangkat lunak rekayasa balik. Bagi para peneliti ESET, alat ini adalah disassembler favorit dan menginspirasi pengembangannya IPyIDA plugin yang menyematkan file Kernel IPython ke IDA Pro. Di bawah pengembangan berkelanjutan sejak 2014, dengan senang hati kami mengumumkan rilis versi 2.0. IPyIDA melayani tujuan yang sama dengan yang disebut plugin lain IDA IPython, tetapi dengan twist: sedangkan IDA IPython hanya mendukung Windows, IPyIDA mendukung macOS, Linux, dan Windows.

Jika Anda sudah terbiasa dengan IDA Pro dan IPython, lewati ke bagian terakhir dari artikel ini di IPyIDA. Jika Anda tidak terbiasa dengan IPython, lewati ke bagian tengah. Terakhir, jika Anda menghargai pengenalan singkat tentang IDA Pro, baca terus.

Apa itu IDA Pro?

IDA Pro adalah disassembler yang menerjemahkan kode mesin menjadi kode rakitan. Setelah memuat file, IDA Pro membongkarnya dan menyimpan analisisnya dalam file database. IDA Pro menyediakan berbagai jendela ke dalam database, masing-masing secara unik membantu peneliti menemukan dan lebih memahami kode minat.

Mari kita lihat beberapa jendela ini dengan memuat file File MathLibrary.dll, yang dapat dibangun dengan Microsoft tutorial membuat file DLL.

Jendela keluaran

Jendela Keluaran menampilkan pesan tentang status analisis file, pesan kesalahan untuk operasi yang diminta pengguna, dan keluaran dari beberapa plugin. Gambar 1 menunjukkan jendela Keluaran setelah pemuatan pertama MathLibrary.dll.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 1. Jendela Keluaran IDA

Di bagian bawah jendela ini terdapat kolom input yang menerima perintah. Gambar 2 menunjukkan dua penyedia bahasa perintah default yang disertakan dengan IDA sejak versi 7.3: IDC untuk perintah yang ditulis dalam bahasa mirip-C asli IDA dan Plugin IDAPython untuk perintah yang ditulis dengan Python.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 2. Kolom input untuk mengetikkan perintah Python di IDA

Jendela Tampilan IDA

Jendela Tampilan IDA, juga dikenal sebagai jendela pembongkaran, memiliki dua format tampilan: tampilan grafik dan tampilan teks. Tampilan grafik memvisualisasikan aliran program dengan membagi fungsi menjadi blok dengan satu entri dan satu titik keluar. Gambar 3 menunjukkan tampilan grafik.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 3. Tampilan grafik pembongkaran IDA

Tampilan teks memberikan tampilan linier dari pembongkaran yang menampilkan alamat virtual, kode rakitan, dan komentar. Gambar 4 menunjukkan tampilan teks.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 4. Tampilan teks pembongkaran IDA

Selain ini dan banyak jendela lain yang disediakan IDA, IDA memungkinkan Anda menulis plugin khusus yang memperluas fiturnya dan menyelesaikan masalah rekayasa balik praktis. Mari beralih ke IPython dan beberapa fitur menarik yang ditawarkannya kepada insinyur balik yang menggunakan skrip Python di IDA.

Sekilas tentang IPython

Sementara IDAPython melayani kebutuhan dasar untuk menjalankan skrip dan perintah Python di IDA, penggemar Python telah dicengkeram oleh IPython demam. IPython adalah toolkit yang menawarkan pengalaman yang lebih interaktif dengan Python. IPython menggunakan model dua proses yang terdiri dari kernel dan klien. Kernel adalah proses yang menerima perintah dari klien, mengeksekusinya, dan mengembalikan hasilnya. Klien dapat berupa konsol interaktif seperti Konsol Jupyter, Konsol Jupyter Qt, atau Notebook Jupyter.

Sifat interaktif dari klien ini berasal dari sejumlah fitur yang mereka tambahkan ke shell Python klasik. Gambar 5 menunjukkan penggunaan blok kode multiline untuk mendefinisikan fungsi di IPython.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 5. Menggunakan blok kode multiline untuk mendefinisikan fungsi di IPython

Perhatikan penyorotan sintaks bilangan bulat, kata kunci, fungsi bawaan, dan string.

Dengan menekan Tab key, IPython menyediakan daftar atribut, objek, atau fungsi relevan yang dapat melengkapi kode. Gambar 6 menunjukkan fungsi daftar penyelesaian tab yang relevan dengan objek string.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 6. Penyelesaian tab di IPython

Penyelesaian tab lebih kaya jika Jedi diinstal.

IPython juga menyediakan fungsi magic, yaitu fungsi yang biasanya disebut dengan a % or %% awalan dan ambil argumen dengan sintaks gaya baris perintah. Gambar 7 menunjukkan % waktu fungsi ajaib, yang mengatur waktu eksekusi ekspresi Python.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 7. Fungsi ajaib di IPython

Dengan menggunakan! karakter di awal baris perintah, konsol IPython meneruskan perintah ke shell sistem yang mendasarinya untuk dijalankan. Misalnya, perintah populer adalah biji, yang menginstal dan mengelola paket dari Indeks Paket Python (PyPi). Gambar 8 menunjukkan !pip perintah dijalankan dari IPython.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 8. Menjalankan perintah shell sistem dari IPython

IPython menyediakan lebih banyak fitur interaktif yang dapat dijelajahi di dokumentasi resmi.

IPyIDA: Membawa IPython ke IDA

Dengan dirilisnya IPyIDA 2.0, penulisan skrip Python di IDA menjadi lebih bersahabat karena keuntungan sebagai berikut:

  • Dukungan untuk IDA di Windows, Linux, dan macOS
  • Skrip instalasi untuk pengaturan yang mudah, bahkan dalam file lingkungan virtual
  • Konsol Qt Jupyter berjalan di jendela IDA
  • Kernel IPython yang dapat terhubung ke ujung depan, seperti Konsol Jupyter, dari luar IDA.
  • Proksi kernel Jupyter untuk mendukung pembukaan Notebook Jupyter yang menghubungkan kembali ke kernel IPython dengan %Buka_notebook fungsi sihir

Gambar 9 menunjukkan proses membuka Notebook Jupyter dari IPyIDA.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 9. The %Buka_notebook fungsi ajaib di IPyIDA

Gambar 10 menunjukkan Konsol Jupyter berjalan di sesi terminal di luar IDA yang terhubung ke kernel IPython di IDA.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 10. Konsol Jupyter di luar IDA yang terhubung kembali ke kernel IPython di IDA

Pilihan Jupyter Qt Console untuk IPyIDA menghadirkan fitur interaktif tambahan ke konsol IPython tradisional, seperti grafik sebaris, penyimpanan dan pencetakan sesi saat ini, dan penyorotan sintaks penuh. Ini diilustrasikan dalam dokumentasi resmi untuk Jupyter Qt Console.

IPyIDA bahkan menyediakan fitur interaktifnya sendiri yang terinspirasi oleh IDA. Gambar 11 menunjukkan bahwa Ctrl-klik (Cmd-klik pada macOS) pada alamat atau nama variabel di konsol IPython akan mengalihkan tampilan ke alamat virtual di jendela pembongkaran.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 11. Ctrl-klik variabel atau alamat di IPyIDA melompat ke alamat di jendela pembongkaran IDA

Gambar 12 menunjukkan hex dump untuk array byte dengan konten non-ASCII.

Introducing IPyIDA: A Python plugin for your reverse‑engineering toolkit PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Gambar 12. IPyIDA menampilkan hex dump

Jika Anda baru mengenal IDA Pro, IPyIDA sangat membantu untuk membiasakan diri dengan API IDA. Jika Anda seorang veteran, IPyIDA membuat skrip Python jauh lebih mudah, dan dengan demikian waktu yang dihabiskan untuk rekayasa balik semoga lebih fokus dan bermanfaat.

Stempel Waktu:

Lebih dari Kami Hidup Keamanan