xAnalyzer adalah plugin untuk debugger x86/x64 x64dbg oleh @mrexodia. Plugin ini didasarkan pada Plugin APIInfo oleh @mrfearless, meskipun beberapa perbaikan dan penambahan telah dilakukan. xAnalyzer mampu melakukan berbagai jenis analisis terhadap kode statis aplikasi yang di-debug untuk memberikan lebih banyak informasi tambahan kepada pengguna. Plugin ini akan membuat deteksi panggilan fungsi API yang ekstensif untuk menambahkan definisi fungsi, argumen dan tipe data serta informasi pelengkap lainnya, sesuatu yang mirip dengan apa yang Anda dapatkan dengan mesin analisis OllyDbg, untuk membuatnya lebih mudah dipahami oleh pengguna. pengguna tepat sebelum memulai tugas debuggin.
Beberapa fitur utama dan peningkatannya antara lain:
Analisis panggilan fungsi yang diperluas (lebih dari 13.000 definisi API dari hampir 200 DLL)
Fungsi yang ditentukan dan umum, argumen, tipe data, dan pengenalan info debug tambahan.
Deteksi loop otomatis.
File definisi yang dikelola pengguna
Sebelum xAnalyzer
Setelah xAnalyzer
Unduh DI SINI rilis terbaru binari
Unduh x64dbg versi terbaru
Ekstrak apis_def.zip
Salin folder xAnalyzer.dp32/xAnalyzer.dp64 dan apis_def ke direktori plugin masing-masing di x64dbg
Lihat di bawah menu " Plugins " di jendela utama x64dbg atau di menu sekunder di jendela Disasm juga untuk entri " xAnalyzer "
xAnalyzer memiliki beberapa opsi untuk dipilih untuk lebih mempersonalisasi pengalaman menggunakannya, untuk menggunakannya tepat saat Anda membutuhkannya dan sesuai keinginan Anda. Opsi pluginnya adalah sebagai berikut:
Analisis Otomatis : Jika opsi ini AKTIF, plugin akan meluncurkan analisis otomatis penuh atas kode yang dapat dieksekusi setiap kali mencapai titik masuk saat memuat di debugger. Dengan menggunakan opsi ini Anda mendapatkan perilaku analisis awal OllyDbg yang lebih dekat pada x64dbg.
Analisis yang Diperluas : Opsi ini akan memaksa xAnalyzer untuk membuat analisis yang diperluas pada seluruh bagian kode dari executable yang di-debug. PERINGATAN!!! Dengan mengaktifkan opsi ini, proses analisis mungkin memerlukan lebih banyak waktu dan sumber daya untuk menyelesaikannya, juga sejumlah besar memori RAM mungkin digunakan oleh x64dbg tergantung pada ukuran bagian dan jumlah data tambahan yang ditambahkan ke pembongkaran statis executable yang dapat di-debug
Analisis Fungsi Tidak Terdefinisi : Dengan memilih opsi ini xAnalyzer akan menggunakan analisis umum dan tipe argumen untuk semua Panggilan/Fungsi API yang tidak ditentukan dalam file definisi api dan juga panggilan seperti:
CALL {REGISTER}
CALL {REGISTER + DISPLACEMENT}
CALL {DYNAMIC_POINTER}
xAnalyzer memiliki beberapa perintah dan opsi menu untuk dipilih saat bekerja dengan file yang dapat dieksekusi:
Dengan memilih beberapa instruksi di jendela pembongkaran x64dbg dan memilih menu ini, analisis cepat akan dilakukan pada baris yang dipilih. Anda juga dapat menggunakan perintah pilihan xanal untuk meluncurkan opsi ini atau bahkan mengatur hotkey Anda sendiri untuk opsi ini di gui x64dbg.
Jika Anda sedang menjalankan beberapa fungsi, Anda dapat menggunakan entri menu ini untuk menganalisis keseluruhan fungsi dan hanya fungsi itu. Mengambil instruksi tunggal yang Anda pilih sebagai referensi, xAnalyzer akan memproses dari sana semua baris di dalam blok kode. Anda juga dapat menggunakan fungsi perintah xanal untuk meluncurkan jenis analisis ini atau bahkan mengatur hotkey Anda sendiri untuk analisis tersebut di gui x64dbg.
Perintah ini akan meluncurkan analisis penuh atas seluruh modul. Fitur ini mempertimbangkan opsi Analisis Diperluas untuk kedalaman analisis yang akan digunakan. Anda dapat menggunakan modul perintah xanal untuk menjalankannya juga atau bahkan mengatur hotkey Anda sendiri untuk modul tersebut di gui x64dbg.
Dalam kasus ini, semua menu ini akan melakukan kebalikan dari perintah sebelumnya. Jika Anda ingin menghilangkan informasi tambahan analisis di beberapa bagian kode atau di seluruh executable jika diinginkan. Anda juga bisa menggunakan perintah: xanalremove choice/function/module
xAnalyzer memiliki sistem file definisi API yang dapat diperluas, file-file ini ada di folder "api_def" dan "api_def/headers" yang harus berisi semua file dengan struktur .ini dan dengan norma:
" nama file ": Ini adalah nama modul tempat fungsi API berada.
" filename.h ": Ini adalah header yang berisi informasi terkait tipe data (bendera dan enum).
Ekstensi " .api ": Menentukan bahwa ini adalah file definisi, tidak ada ekstensi lain yang akan dikenali (kernel32.api, shell32.api, dll)
Semua file ini berisi informasi penting untuk plugin seperti, prototipe fungsi, tipe argumen, dll. Semua informasi ini digunakan oleh xAnalyzer untuk mengatur informasi tambahan pada kode statis. Satu entri di salah satu file ini akan seperti:
File pengguna32.api
[MessageBox]
1=HANDLE hWnd
2=LPCTSTR lpText
3=LPCTSTR lpCaption
4=[MessageBoxType] uType
ParamCount=4
Header=shell.h.api;
@=MessageBox
File shell.h.api
[MessageBoxType]
TypeDisplay=UINT
Base=UINT
Type=Flag
Const1=MB_ABORTRETRYIGNORE
Value1=0x00000002
Const2=MB_CANCELTRYCONTINUE
Value2=0x00000006
Const3=MB_HELP
Value3=0x00004000
Const4=MB_OK
Value4=0x00000000
Const5=MB_OKCANCEL
...
Argumen apa pun di antara tanda kurung berarti bahwa ini adalah tipe data tertentu (bendera enum atau biner) dan ini akan ditentukan dalam file header .h yang ditentukan dalam kunci " Header ".
Sedangkan untuk file header skemanya hampir sama hanya ada beberapa kunci di sana, seperti " TypeDisplay ". Ini menentukan tipe data yang tepat untuk ditampilkan dalam komentar dbg, lalu muncul " Basis ", dan itu akan menunjuk ke tipe data dasar yang digunakan oleh entri utama, jika ada tipe data yang ditautkan, ini bisa berada di antara tanda kurung sebagai Sehat. Kunci " Type " adalah tipe struktur datanya dan dapat berupa "Flag" atau "Enum". Akhirnya semua nama dan nilai variabel muncul.
Jika Anda menemukan bahwa definisi panggilan API tertentu tidak terdeteksi atau tidak terdeteksi dengan benar oleh xAnalyzer, hal ini mungkin berarti definisi tersebut tidak ada dalam file definisi atau definisinya salah, jadi dalam hal ini penambahan atau modifikasi dapat dilakukan untuk menyertakan fungsi atau argumen apa pun yang hilang selama struktur yang sama diikuti, fungsi atau argumen tersebut dapat disesuaikan 100%.
Panggilan pertama yang tidak ditentukan dengan argumen umum dalam suatu fungsi tidak akan diproses, kecuali jika didahului dengan lompatan, karena tidak ada cara untuk mengetahui berapa banyak argumen yang akan digunakan tanpa menggunakan instruksi prolog fungsi secara ilegal. Hanya panggilan terdokumentasi yang akan diproses di awal suatu fungsi atau fungsi yang tidak ditentukan yang telah dipimpin oleh lompatan.
Beberapa fungsi "jarang" memiliki argumen di antara lompatan, jadi menurut desain plugin yang sebenarnya (tidak ada lompatan di antara argumen fungsi) panggilan ini tidak akan diproses, karena setiap kali lompatan ditemukan, instruksi di tumpukan akan dibersihkan.
Panggilan bertingkat hanya akan berfungsi dengan benar jika:
1-) Panggilan batin ditentukan
2-) Jika panggilan dalam yang tidak terdefinisi tidak memerlukan lebih banyak argumen tumpukan daripada argumen yang dibutuhkan oleh panggilan luar
Ini hanya mendeteksi loop di dalam fungsi (batas fungsi Prolog/RET). Jika suatu fungsi berisi RET di tengah kodenya, maka itu akan terdeteksi sebagai fungsi berakhir dan tumpukan loop dihapus.
Analisis bisa gagal jika executable yang sedang di-debug memiliki banyak titik di namanya
Deteksi loop salah untuk bagian dengan lompatan non-kondisional di dalamnya (Lihat #7)
Baris argumen bersarang (xAnalyzer memiliki dukungan untuk argumen bersarang tetapi x64dbg saat ini tidak)
Tambahkan analisis entropi
Pemindaian analisis aliran alih-alih linier (emulasi jejak)
Deteksi Peralihan Kasus
xAnalyzer 2.5.4
- Proyek yang diperbarui ke VS2017
- Memperbaiki masalah saat memproses instruksi argumen yang melibatkan penunjuk tumpukan (versi x64).
- Memperbaiki urutan argumen yang salah yang melibatkan penunjuk tumpukan (versi x64).
- Memperbaiki bug pada pengenalan argumen fungsi yang tidak terdefinisi yang menggandakan register sebagai argumen berbeda (versi x64)
- Mengubah pengenalan argumen panggilan yang tidak ditentukan, itu hanya akan memprediksi hingga 4 argumen yang tidak ditentukan secara default (versi x86)
- Beberapa pemfaktoran ulang kode
xAnalyzer 2.5.3
-Deteksi nama fungsi di versi x64dbg yang lebih baru diperbaiki
xAnalyzer 2.5.2
-Menggunakan baris disasm yang dipilih saat ini untuk analisis modul alih-alih cip
-Memodifikasi beberapa pengetikan di entri plugin
-Beberapa pemfaktoran ulang kode
-Modifikasi perintah "xanal/xanalremove exe" menjadi "xanal/xanalremove module"
xAnalyzer 2.5.1
-Memperbaiki kerusakan pada variasi instruksi bergerak
xAnalyzer 2.5.0
-Menghapus instruksi [EBP+/-] sebagai argumen pemanggil fungsi yang mungkin
-Menghapus awalan "0x" dari semua nilai argumen fungsi karena heksadesimal disimpulkan
-Argumen yang diperbaiki di mana variabel penunjuk tidak ditampilkan dengan benar sebagai penunjuk tetapi sebagai tipe data dasar
-Menambahkan pengenalan penggunaan penunjuk tumpukan (ESP) sebagai argumen yang memungkinkan untuk pemanggilan fungsi (x86)
-Menambahkan penggunaan nama tipe data yang akurat dalam argumen alih-alih nama tipe data generik/basis
-Menambahkan fitur pelacakan cerdas fungsi (Prediksi cerdas dan pengenalan panggilan fungsi tidak langsung seperti: CALL {REGISTER}, CALL {POINTER})
-Menambahkan nama penunjuk fungsi sebagai parameter (seluruh nama fungsi, jika terdeteksi, akan digunakan, bukan hanya alamatnya)
xAnalyzer 2.4.3
- Menambahkan pengenalan instruksi MOV pada x86
- Menambahkan pengenalan fungsi dengan akhiran "Stub".
- Memperbaiki bug pada "analisis otomatis" (menambahkan lebih banyak kondisi pemeriksaan EP)
- Opsi Hapus Komentar Otomatis/Label Otomatis dicentang sekarang secara default
xAnalyzer 2.4.2
- Memperbaiki BoF ketika argumen menandai komentar melampaui MAX_COMMENT_SIZE
- Memperbaiki bug pencarian nama fungsi ketika definisi terletak pada file .api kedua
xAnalyzer 2.4.1
- Menambahkan skema hotkey baru
- Menambahkan opsi baru untuk mengontrol data analisis sebelumnya mana yang harus dihapus. (Ini memberikan kemungkinan untuk bekerja secara lancar dengan plugin pemuat peta seperti SwissArmyKnife, dll).
- Menambahkan perintah baru (yang lama sudah tidak digunakan lagi)
seleksi xanal : Melakukan analisis seleksi
fungsi xanal : Melakukan analisis fungsi
xanal exe : Melakukan seluruh analisis yang dapat dieksekusi
xanalremove choice : Menghapus analisis seleksi sebelumnya
xanalremove function : Menghapus analisis fungsi sebelumnya
xanalremove exe : Menghapus seluruh analisis yang dapat dieksekusi sebelumnya
xanal help : Menampilkan beberapa teks bantuan ke jendela log
- Memperbaiki analisis otomatis yang tidak diluncurkan saat startup (Tutup #18)
- Memperbaiki berbagai file definisi api (Tutup #17)
xAnalyzer 2.4
- File definisi API yang baru dan lebih baik dengan skema yang sedikit dimodifikasi (13.000 API dari hampir 200 DLL)
- Sistem pengenalan simbol untuk setiap argumen definisi API yang digunakan (1000+ tipe data enum dan 800+ tanda)
- Pengenalan tipe data params (BOOL, NUMERIC, NON-NUMERIC)
- Deteksi rintisan VB "DllFunctionCall".
- String yang diteruskan sebagai argumen sekarang lebih bersih (komentar debugger sekarang memiliki bagian alamat yang dihilangkan)
- Ringkasan Eksekusi ditambahkan ke jendela log
- Fitur hotkeys dihapus (akan disertakan dalam revisi mendatang) karena beberapa konflik dengan x64dbg
- Berbagai bug diperbaiki
xAnalyzer 2.3.1
- Memperbaiki bug saat meluncurkan menu "Analisis Pilihan" dengan satu baris dipilih, yang menyebabkan pengecualian dbg tiba-tiba (terima kasih kepada @blaquee)
- Periksa apakah folder file definisi "apis_def" dan file definisi ada di dalamnya sebelum memuat plugin
- Mengubah tombol pintas menjadi Ctrl+Shift+X untuk pemilihan dan Ctrl+X untuk fungsi
xAnalyzer 2.3
- Menambahkan opsi "Analisis fungsi yang tidak ditentukan". (MATI secara default, apa pun yang tidak ada dalam file definisi tidak dianalisis)
- Menambahkan opsi "Analisis otomatis" (MATI secara default, buat analisis saat peluncuran di EP yang dapat dieksekusi yang di-debug)
- Menambahkan fitur "Analisis Pilihan" (Membuat analisis instruksi yang dipilih, mendukung beberapa panggilan yang dipilih)
- Menambahkan fitur "Analisis Fungsi" (Membuat penemuan otomatis dan analisis fungsi saat ini dari alamat yang dipilih)
- Menambahkan fitur "Hapus Analisis" dari Pilihan/Fungsi/Dapat Dieksekusi
- Menambahkan pintasan perintah
- Menambahkan ikon baru
- Menambahkan konfigurasi penyimpanan ke file .ini
- Menambahkan kapitalisasi nilai argumen heksadesimal
- Fitur yang direstrukturisasi "Analyze Executable" (Membuat analisis lengkap dari executable saat ini)
- Menu yang direstrukturisasi
- Dialog baru tentang sekarang menunjukkan nomor versi untuk melacak pembaruan
- Beberapa perbaikan bug kecil
- Memperbaiki dan menggabungkan beberapa file definisi API
- Peningkatan kecepatan dan stabilitas
xAnalyzer 2.2
- Menambahkan indikator kemajuan analisis
- Menambahkan mode kedalaman analisis baru
-Sekarang analisis otomatis hanya dijalankan jika tidak ada database cadangan
- Bug diperbaiki
xAnalyzer 2.1
- Argumen umum untuk fungsi yang tidak ditentukan dan sub internal
- Komentar dan argumen fungsi cerdas (hanya fungsi dengan argumen di tumpukan yang diproses). Hal ini memungkinkan xAnalyzer memberikan gambaran kode yang lebih jelas hanya dengan memproses dan mengomentari fungsi tersebut dengan argumen sebenarnya
- Deteksi panggilan fungsi tidak langsung dengan skema CALL -> DYNAMIC_MEMORY -> API
- Deteksi pemanggilan fungsi tidak langsung dengan skema CALL -> REGISTER/REGISTER + DISPLACEMENT -> API
- Deteksi panggilan fungsi tidak langsung dengan skema CALL -> JMP -> JMP -> API
- Deteksi loop otomatis
- Memperbaiki bug anak di bawah umur
- Penataan ulang kode
xAnalyzer 2.0
- Dukungan untuk x64 bit
- Mendukung perubahan urutan argumen panggilan API dalam x64 bit
- Mendukung file PDB info tambahan dalam panggilan API
- Dukungan panggilan API langsung/tidak langsung
- Dukungan panggilan fungsi API statis ke kode modul utama
- Memperbaiki beberapa urutan argumen panggilan API yang salah dalam file definisi. Lebih banyak panggilan kini dapat dideteksi dan dikomentari dengan baik
- Beberapa perbaikan dan kode tertulis yang lebih baik
- Berbagai bug terpecahkan
xAnalyzer 1.2
- Memperbarui file definisi API
- Menambahkan dukungan ke executable vc6+
xAnalyzer 1.1
- Memperbaiki masalah yang tidak menampilkan info API pada executable VC++ karena tidak membersihkan struktur BASIC_INSTRUCTION_INFO dengan benar sebelum/sesudah menggunakannya dalam satu lingkaran
- Menambahkan/Memperbarui file definisi API
- Bug diperbaiki
xAnalyzer 1.0
- Rilis Awal
Segala jenis kontribusi dipersilahkan, tidak hanya sebagai PR tetapi juga sebagai pelaporan bug, dokumentasi, dll.
Harap perhatikan hal berikut:
Terima kasih telah menggunakan plugin xAnalyzer...dan Selamat Membalikkan ke Semua!