Plugin Generator Tanda Tanda Tanda Tangan yang Ditingkatkan.
Salin IDA_SigMaker32.dLL dan IDA_SigMaker64.dLL ke Direktori plugins IDA Anda.
Kunci panas IDA default adalah "Ctrl-Alt-S", tetapi dapat diatur ke Kunci lain menggunakan kunci Anda "plugins.cfg". Karena "Ctrl-Alt-S" sekarang kombo bertentangan dengan default IDA, untuk menghindari mendapatkan pesan peringatan, mengedit entri "idagui.cfg" Anda dan membuat entri "stacktrace" seperti: "StackTrace" = 0 // "Ctrl-Alt-S" // open stack trace window ('0' menonaktifkan kunci).
Membutuhkan Ida Pro Versi 7.6'ish.
Ajukan plugin melalui hotkey atau melalui menu Edit/Plugin IDA.

Ada tiga operasi generasi khas:
Fungsi : Digunakan untuk membuat titik masuk fungsi yang unik, tanda tangan fungsi minimal dengan offset, atau tanda tangan seluruh tubuh tergantung pada konfigurasi opsi (lihat di bawah).
Pertama -tama pilih alamat apa pun di dalam fungsi target. Jika fungsi yang dipilih tidak unik (untuk titik masuk, atau opsi minimal) maka tanda tangan untuk fungsi unik pemindaian referensi silang akan dicoba.
Kasus Penggunaan Khas: Tanda Tangan Untuk Menemukan Fungsi Pada Waktu Jalankan dalam Memori Target, untuk menemukan fungsi di IDA setelah pembaruan yang dapat dieksekusi, atau untuk membantu menemukan perpustakaan yang diketahui dengan tanda tangan, dll.
Contoh output tanda tangan: 
Hasil tanda tangan didorong ke windows clipboard untuk menempel Ctrl+V yang mudah ke dalam kode sumber, dll.

Format Output: IDA : Format pencarian biner hex default yang didukung IDA dan beberapa alat lainnya, menggunakan byte hex spaced dan "??" kartu wildcars. Contoh: C1 6C E8 ?? ?? ?? ?? 8B 50 08 Code Style : Escape Code Hex String dan String Topeng Terpisah Di mana 'X' adalah penjaga byte, dan '?' adalah byte wildcard. Contoh: "xC1x6CxE8xCCxCCxCCxCCx8Bx50x08", "xxx????xxx" byte inline : array gaya C minimalis byte dengan byte wildcard termasuk format. Contoh: {0xC1,0x6C,0xE8,0xAE,0xAE,0xAE,0xAE,0x8B,0x50,0x08}; Gunakan kotak Edit "Byte Byte" untuk mengubah byte topeng "inline byte" default. Byte mask default adalah 0xAE , salah satu byte kode yang paling jarang digunakan (lihat "Byte Topeng Ideal" di bawah).
Kriteria untuk pembuatan tanda tangan "fungsi". Titik Masuk : Akan Berusaha untuk Menghasilkan Tanda Titik Masuk Fungsi Ukuran Byte Minimal Bila memungkinkan. Ukuran byte minimal : Akan berupaya menghasilkan jumlah minimal, dengan jumlah wildcard, byte berukuran (lima lebih besar) batas instruksi yang disejajarkan tanda tangan di dalam tubuh fungsi yang dipilih. Badan Fungsi Penuh : Akan mencoba untuk menghasilkan tanda tangan tubuh fungsi penuh yang unik.
Untuk salah satu dari tiga opsi ini, jika fungsinya tidak unik, upaya akan dilakukan untuk menemukan tanda tangan referensi silang unik terkecil sebagai gantinya. Jika Anda ingin membuat tanda tangan fungsi penuh atau parsial untuk fungsi non-unik maka gunakan opsi "dari rentang alamat" sebagai gantinya.
Level Pesan : Setel ke "Verbose" untuk output pesan pembuatan tanda tangan internal ke jendela log IDA.
Max Function Scan Refs : Batasi berapa banyak fungsi referensi silang untuk mencari ketika tanda tangan "fungsi" langsung tidak dapat ditemukan. Biasanya ini harus '0' untuk pencarian tanpa batas, tetapi untuk kasus masalah di mana ada begitu banyak referensi yang menyebabkan perlambatan, ini dapat diatur ke batas yang masuk akal seperti 16 atau 100 untuk meningkatkan kecepatan pemindaian.
Untuk kasus fungsi yang relatif langka yang memiliki potongan mereka tersebar di beberapa rentang alamat, alat ini akan mencoba menggunakan hanya potongan pertama. Jika ingin membuat tanda tangan di salah satu potongan yang terputus -putus, coba gunakan metode "at alamat". Jika semuanya gagal, cobalah SIG "Dari Alamat" (yang mungkin perlu dicari keunikan manual).
Max Function Entry Point Byte Signature : Saat menggunakan opsi "fungsi", dan kriteria "titik masuk" dikonfigurasi, secara opsional membatasi ukuran byte tanda tangan titik masuk maksimum. Standarnya adalah '0', untuk tidak terbatas (yang dapat mencapai seluruh ukuran byte bodi fungsi yang dipilih). Jika batas ini terlampaui, tanda tangan referensi silang akan dicari sebagai gantinya.
Ditetapkan ke batas praktis seperti '16' atau '32', untuk tanda tangan XREF yang biasanya lebih kecil vs tanda tangan titik masuk yang berpotensi sangat besar.
Sigmakerex ("ex") secara keseluruhan menghasilkan tanda tangan fungsi yang lebih kecil dan lebih ketat dengan menggunakan analisis instruksi yang lebih baik. Contoh: Sigmaker ("SM") Wildcards Operand Bytes of Instruction sub esp, 90h (sebagai "81 EC ?? ?? ?? ?? ), membuang empat byte terakhir secara tidak perlu. Sementara Ex melihatnya sebagai nilai langsung dan menjaga keseluruhan urutan 81 EC 90 00 00 00
Ex lebih baik difokuskan pada fungsi penggunaan tanda tangan tubuh normatif. Untuk SM hanya ada satu opsi yang dapat dikendalikan. Ini akan mencoba membuat tanda tangan yang unik di mana pun alamat yang Anda pilih di fungsi. Jika tidak dapat menemukannya di sana, ia akan mencari SIG referensi silang yang unik saja saja. Untuk EX, karena kasus penggunaan khas yang diidentifikasi adalah untuk menemukan titik masuk fungsi, tanda tangan titik masuk terkecil akan dihasilkan ketika opsi kriteria "titik masuk" dikonfigurasi. Untuk ketika opsi "Ukuran Byte Minimal" dipilih, ia akan mencari tanda tangan unik yang paling terkecil dan paling sedikit (dari minimum lima byte) dalam seluruh badan fungsi.
SM memiliki lebih banyak kontrol kriteria output atas byte vs jumlah wildcard, dll., Dalam dialog opsi. Ex mengasumsikan Anda menginginkan yang terbaik dari keduanya (wildcard paling sedikit dan ukuran byte terkecil).
Ekspontak dari fungsi "konversi" dan "pencarian" individu yang dimiliki SM daripada preferensi untuk UI yang lebih sederhana dan kurang berantakan.
Untuk pencarian, karena EX selalu memancarkan output format IDA selain tanda tangan format output yang dipilih, gunakan opsi pencarian biner IDA "hex" dengan string IDA SIG.
Ex umumnya lebih cepat, ketika bahkan melakukan pencarian yang lebih luas, karena teknik mengkloning IDB ke RAM dan menggunakan pemindai pola AVX2 yang dioptimalkan vs mengandalkan fungsi IDA Find yang lambat untuk pemindaian.
Dalam proyek saya sendiri untuk menemukan pola secara dinamis, saya lebih suka format "byte inline" (karena kurangnya nama yang lebih baik). Ini adalah yang paling sederhana, paling kompak, dan tidak memerlukan transformasi runtime dari string hex ASCII. Saya telah menggunakan format ini untuk banyak proyek dan belum mengalami tabrakan khas atau masalah pertandingan yang berlebihan.
Untuk meminimalkan masalah redundansi potensial, lebih bijaksana untuk menggunakan salah satu nilai byte kode yang paling sedikit digunakan untuk byte wildcard/mask. Untuk menemukan kandidat yang ideal, saya mengumpulkan frekuensi byte kode dari tiga setiap segmen kode 32bit dan 64bit yang besar, kemudian ditabulasi dan mengurutkan hasilnya. "IDA_GET_BYTE_FREQUENCY.PY" skrip IDA digunakan Kamus Frekuensi Byte Kumpulkan dan simpan ke JSON DB. Skrip "byte_frequency_tabulate.py" menabulasi dan memilah -milah urutan menaikkan satu set JSON DBS yang disimpan ini. Jelas frekuensi byte untuk 32bit tidak sama dengan 64bit One dan ditabulasi secara independen. Lihat "32bit.txt" dan "64bit.txt". Dalam korelasi visual dari keduanya, 0xA2 sebenarnya adalah penyebut yang paling tidak umum, kemudian diikuti oleh 0XAE. 0xAE dipilih lebih dari 0xA2 sebagai byte mask default karena lebih mudah dipilih secara subyektif untuk dipilih secara visual.
Dibangun menggunakan Visual Studio 2019, di Windows 10, dengan satu -satunya ketergantungan adalah IDA Pro C/C ++ SDK resmi. Pengaturan dalam file proyek, ia mencari variabel lingkungan _IDADIR dari mana ia mengharapkan untuk menemukan folder "idasdk/include" dan folder "idasdk/lib" di mana IDA SDK berada. Tidak menggunakan IDADIR karena Ida mencarinya sendiri dan dapat menyebabkan konflik jika Anda mencoba menggunakan lebih dari satu versi IDA yang diinstal.
Python 3.7'ish atau lebih baik untuk menjalankan skrip "byte_frequency_tabulate.py".
Berkat pencipta alat Sigmaker asli dari gamedeception.net Days hingga C/C ++ saat ini dan Python Iteration Penulis: P4TR! CK, Bobbysing, Xero | Hawk, Ajkhoury, dan Zoomgod et al. Terima kasih kepada Wojciech Mula untuk sumber daya pemrograman SIMD -nya.
Dirilis di bawah MIT © 2022 oleh Kevin Weatherman