Delphihelper adalah plugin Python Ida Pro yang bertujuan untuk membantu analisis biner x86/x86_64 yang ditulis dalam bahasa pemrograman Delphi.
Salin Direktori DelphiHelper dan DelphiHelper.py di dalam direktori plugin IDA:
%APPDATA%Hex-RaysIDA Proplugins$HOME/.idapro/plugins/ Unduh file basis pengetahuan IDR secara manual dengan mengikuti instruksi yang diberikan di bawah ini atau jalankan skrip setup_IDRKB.py .
CATATAN : Instalasi
py7zrdiperlukan untuk menjalankan skrip pengaturan:pip install py7zr
Delphihelper harus kompatibel dengan IDA 8.4 dan kemudian pada Windows, MacOS dan GNU/Linux.
Untuk menggunakan plugin Delphihelper, bagian sumber daya harus dimuat di IDA. Ini dapat dicapai dengan memeriksa sumber daya beban kotak atau dengan opsi -R dalam sakelar baris perintah.
Catatan : Autoanalisis IDA harus diselesaikan sebelum menggunakan plugin.
<Alt-Shift-H> : cetak bantuan<Alt-Shift-R> : jalankan parser vmt<Alt-Shift-F> : Jalankan DFM Finder (tunjukkan jendela penampil bentuk delphi)<Alt-Shift-E> : Jalankan pencari fungsi titik masuk<Alt-Shift-S> : Jalankan IDR Pengetahuan Basis Loader untuk SysInit dan Unit System<Alt-Shift-A> : Jalankan IDR Knowledge Base Loader untuk unit yang dipilih Hotkey : <Alt-Shift-R>
Parser Tabel Metode Virtual (VMT) harus dieksekusi dengan kursor pada alamat awal struktur VMT. Struktur ini dapat ditempatkan dengan mencari fungsi bernama CreateForm , CreateObject , dll.; Setelah fungsi ditemukan, argumen terakhir harus menjadi struktur VMT.
Dalam kebanyakan kasus ada urutan dua instruksi:
mov <register>, <VMTStructureOffset>
call CreateForm
Misalnya:
Setelah pada struktur (VMTStruktureFsset EG off_664A8C ), tekan <Enter> :
Tekan hotkey <Alt-Shift-R> . Hasilnya terlihat seperti di bawah:
Struktur VMT berisi banyak informasi berguna yang disimpan dalam berbagai tabel RTTI. Yang paling menarik adalah:
Parser VMT secara otomatis mengekstrak data dari tabel tersebut dan menyimpannya ke dalam eda enum dan struktur.
Tabel lapangan menyimpan nama, jenis dan offset dari setiap bidang yang diterbitkan. VMT Parser mengekstrak dan menyimpan semua entri ini untuk setiap struktur VMT ke dalam Ida enums:
Enum yang dibuat oleh parser VMT memiliki format berikut: %ObjectName%_Fields . Nama -nama entri enum memiliki format ini: %ObjectName%_%FieldType%_%FieldName% :
Entri dari enum yang dibuat oleh parser VMT kemudian dapat dinamai dengan menekan shortcut IDA built-in <M> , digunakan untuk penamaan konstanta simbolik.
Sebelum
Setelah
Metode virtual tabel menyimpan pointer ke semua metode virtual yang dinyatakan untuk kelas dan kelas dasarnya:
Parser VMT mengekstrak pointer dari VMT dan menyimpannya ke dalam struktur IDA yang dinamai oleh struktur VMT yang diuraikan. Nama -nama entri struktur memiliki format berikut: %MethodName%_%MethodOffset% :
Entri dari struktur yang dibuat oleh parser VMT kemudian dapat dinamai dengan menekan pintasan IDA bawaan <T> , yang digunakan untuk penamaan offset struktur.
Sebelum
Setelah
Metode tabel menyimpan nama dan petunjuk metode yang diterbitkan. Tabel metode ini juga berisi petunjuk penangan acara Delphi yang dapat ditemukan dan diakses dari penampil formulir Delphi (untuk info lebih lanjut lihat DFM Finder)
Hotkey : <Alt-Shift-F
Pencari DFM mencoba menemukan semua DFM yang disimpan di bagian sumber daya dari Biner Delphi yang dianalisis dan setelah itu menjalankan parser VMT pada semua struktur VMT yang terkait dengan DMF yang ditemukan. Setelah semua struktur VMT diproses, subview IDA interaktif baru ( penampil formulir Delphi ) ditampilkan. Subview menunjukkan tampilan pohon deskripsi bentuk Delphi yang diekstraksi dari DFM:
Node tebal mewakili komponen yang memiliki beberapa peristiwa Delphi yang ditentukan. Ikuti node tebal seperti itu lebih dalam di subtree sampai Anda melihat Node Properties Bold, di mana Anda dapat menemukan acara Delphi berwarna biru. Dengan mengklik item acara, Anda dipindahkan ke pawang acara yang sesuai di jendela Ida Disassembly.
Node hijau mewakili komponen yang memiliki beberapa file biner tertanam. Ikuti node hijau seperti itu lebih dalam di subtree sampai Anda melihat simpul Properties hijau, di mana Anda dapat menemukan item berwarna hijau. Item menunjukkan jalur file file biner tertanam yang dijatuhkan oleh DFM Finder . Subdirektori tujuan untuk file yang diekstraksi terletak di Direktori Kerja IDA saat ini dan memiliki format berikut: %IDAWorkingDirectory%_extracted_%BinaryFileName%
Klik pada node root (form) di jendela penampil Formulir Delphi menggerakkan Anda ke struktur VMT formulir di jendela Ida Disassembly.
Hotkey : <Alt-Shift-E>
Pencari fungsi titik masuk mencoba menemukan kemungkinan fungsi titik masuk dengan mencari referensi ke CreateFrom , InitExe dan InitLib call. Hasil disajikan di jendela output IDA, misalnya:
Hotkeys : <Alt-Shift-S> dan <Alt-Shift-A>
IDR Pengetahuan basis loader memuat tanda tangan IDR KB dari file KB. Plugin mengharapkan file KB disimpan di lokasi berikut:
Di Windows: %APPDATA%Hex-RaysIDA PropluginsDelphiHelperIDR_KB
di macOS/linux: $HOME/.idapro/plugins/DelphiHelper/IDR_KB/
<Alt-Shift-S> memuat tanda tangan fungsi hanya untuk SysInit dan System .
<Alt-Shift-A> mencoba memuat tanda tangan fungsi untuk semua unit yang dipilih dari daftar unit yang diimpor.
Catatan : File KB diunduh dari proyek IDR:
https://github.com/crypto2011/idr
https://github.com/crypto2011/idr64
Proyek IDR dilisensikan di bawah lisensi MIT:
MIT License
Copyright (c) 2006-2018 crypto
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Unduh dan Salin File KB berikut ke DelphiHelperIDR_KBIDR64 Directory:
https://github.com/crypto2011/idr64/blob/master/syskb2012.bin
https://github.com/crypto2011/idr64/blob/master/syskb2013.bin
https://github.com/crypto2011/idr64/blob/master/syskb2014.bin
Unduh dan Ekstrak File KB berikut ke DelphiHelperIDR_KBIDR Directory:
https://github.com/crypto2011/idr/blob/master/kb2005.7z
https://github.com/crypto2011/idr/blob/master/kb2006.7z
https://github.com/crypto2011/idr/blob/master/kb2007.7z
https://github.com/crypto2011/idr/blob/master/kb2009.7z
https://github.com/crypto2011/idr/blob/master/kb2010.7z
https://github.com/crypto2011/idr/blob/master/kb2011.7z
https://github.com/crypto2011/idr/blob/master/kb2012.7z
https://github.com/crypto2011/idr/blob/master/kb2013.7z
https://github.com/crypto2011/idr/blob/master/kb2014.7z