amoco
| Status: | Dalam pengembangan |
| Versi: | 2.9 (pra-3.0) |
| Dokter: | http://amoco.readthedocs.io/en/latest/index.html |
Keterangan
Amoco adalah paket Python yang didedikasikan untuk analisis simbolis binari.
Fiturnya:
- Kerangka kerja generik untuk instruksi decoding, dikembangkan untuk mengurangi waktu yang dibutuhkan untuk menerapkan dukungan untuk arsitektur baru. Misalnya dekoder untuk sebagian besar instruksi IA32 (tujuan umum) cocok dalam kurang dari 800 baris Python. Decoder RISC SPARCV8 penuh (atau ARM jempol-1 set) juga cocok dalam kurang dari 350 baris. Decoder set instruksi ARMV8 kurang dari 650 baris.
- Modul aljabar simbolik yang memungkinkan untuk menggambarkan semantik dari setiap instruksi dan menghitung representasi fungsional blok instruksi.
- Model eksekusi generik yang menyediakan model memori abstrak untuk menangani nilai konkret atau simbolis secara transparan, dan fitur yang bergantung pada sistem lainnya.
- Berbagai kelas yang menerapkan teknik pembongkaran yang biasa seperti sapuan linier, traversal rekursif, atau lebih banyak teknik yang diabaikan seperti predikat jalur yang bergantung pada pemecah SAT/SMT untuk melanjutkan dengan menemukan grafik aliran kontrol atau bahkan untuk mengimplementasikan teknik seperti DARE (diarahkan eksplorasi acak otomatis).
- Berbagai pembantu generik dan printer cantik yang bergantung pada lengkungan untuk memungkinkan konfigurasi tampilan dan perasaan kustom (pikirkan AT&T vs. intel sintaks, offset absolute vs relatif, desimal atau hex segera, dll).
Amoco masih dalam proses . Lihat Todo untuk daftar fitur yang akan digabungkan dari Develops Branch atau untuk lebih diterapkan secara lebih menyeluruh.
Dokumentasi dan API pengguna dapat ditemukan di http://amoco.readthedocs.io/en/latest/index.html

Todo
Beberapa komponen Amoco masih dalam proses didorong ke cabang rilis atau dikembangkan lebih lanjut. Lebih tepatnya:
- x86 instruksi fpu semantik tidak diimplementasikan,
- ARM SIMD, VFP, Neon, TrustZone, Set Instruksi Jazelle tidak diimplementasikan,
- Beberapa strategi pembongkaran berbasis pemecah belum digabungkan.
- Fitur Impor/Ekspor IDB tidak diimplementasikan.
Kontribusi untuk memenuhi bagian yang tidak lengkap/tidak diimplementasikan dipersilakan.
Catatan Pengembang
Stylesheet QT default terinspirasi oleh qdarkstylesheet yang sangat baik dan menggunakan sebagian besar ikonnya melalui API Qresource yang disediakan dari modul rc_icons.py yang dihasilkan:
<pyenv>/lib/python3. <x>/situs -package/pyside6/rcc -g python icons.qrc> rc_icons.py
Lisensi
Silakan lihat lisensi.
Changelog
- v2.9.11
- Ubah mesin istilah UI default dari pygments menjadi kaya
- Tambahkan Objek Emudata ORM untuk menyimpan status emulator
- Tambahkan perintah simpan/kembalikan di emul UI
- Implementasikan logika CallStack
- Tambahkan bingkai CallStack di Emul UI
- Tambahkan Perintah Debug di Emul UI
- Tambahkan kelas structView untuk struct pencetakan yang cantik
- Perbaiki Logika X86 MMU_CACHE (Flush & Misses)
- Ubah Tindakan Default dari CodeQL ke Ruff
- kode refactor berdasarkan cek ruff
- v2.9.10
- x86: Tambahkan dukungan untuk eksekusi mode nyata
- x86: Tambahkan dukungan penuh untuk segmentasi/paging
- Tambahkan Sistem Baremetal-X86 untuk Analisis Firmware BIOS
- Gabungkan Modul Arch.io Baru untuk mendefinisikan Stubs iOS
- Gabungkan Modul Cas.Blobs
- Tambahkan versi cepat stos/lods/scas/movs
- Tambahkan metode tracepoint di kelas emul
- Tambahkan dukungan untuk sumber daya PE
- Tingkatkan perintah AMOCO App Load/Emul
- Tambahkan Set, Tampilan, Nexti, sampai di Emul UI
- v2.9.9
- Tambahkan arsitektur PPC32 (E200)
- Tambahkan dukungan untuk format Coffable Executable
- Tambahkan parser untuk file jejak GDB
- meningkatkan subpackage struct
- v2.9.8
- Perbarui ke Pyside6 (QT6)
- Tambahkan format OLE2
- Perbarui Struktur Structs untuk memungkinkan ukuran pointer yang dipilih
- pembaruan parsial arsitektur AVR
- v2.9.7
- Jatuhkan Python <3,8 Dukungan
- Tingkatkan Paket Structs untuk Dukungan Bitfield dan Perhitungan Offset Bidang untuk Ukuran Pointer yang Dipilih (32 atau 64 bit)
- v2.9.6
- Gabungkan QT GUI ImageView
- Tingkatkan QT GUI BINFMTVIEW/HEXVIEW dengan Entropy & InfoView
- Tambahkan tampilan Mach-O spesifik
- Tingkatkan dukungan untuk mode gelap QT UI
- Tambahkan arsitektur Tricore
- Tambahkan arsitektur W65C02
- Tambahkan arsitektur Wasm
- Tambahkan Wasm Binary Format Parser
- Pindahkan System.Structs Modul ke dalam sebuah paket
- v2.9.5
- Gabungkan QT GUI BINFMTVIEW/HEXVIEW
- Perbaiki berbagai instruksi lengan dan semantik instruksi lengan
- Tambahkan tampilan struktur dan tampilan ELF dan PE tertentu
- Tambahkan dukungan untuk mode gelap QT UI
- Tambahkan MIPS Loader
- Tambahkan dukungan bitfield di structs
- v2.9.4
- Tambahkan Linux32 Loader untuk MIPS_LE/SPARC/RISCV
- Perbarui Antarmuka Sistem Win32/Win64
- Tambahkan dukungan mapper untuk pipa yang tidak menarik
- Perbaiki Efek Pipa Muat MIPS R3000 yang tertunda
- Tambahkan kelas Archview
- Tambahkan RISCV64 Arsitektur (RISCV.RV64I)
- Tambahkan tes prasyarat untuk spesifikasi
- Perbarui semua spesifikasi Arch untuk menghindari tabrakan
- Tingkatkan/perbaiki berbagai format lengkungan
- Perbaiki parser x86
- v2.9.3
- Gabungkan/perbarui perintah DBGUI EMUL dan SRV
- Gabungkan/perbarui tampilan emulator
- Tambahkan Sistem PSX
- Tambahkan Arsitektur MIPS (R3000 saja)
- Tingkatkan dukungan untuk perubahan konfigurasi
- Peserta Ulang Antarmuka Ext/Stub
- Memperbaiki formatter sparc
- Memperbaiki Parsing PE32+ DataDirectories
- v2.9.2
- Persiapkan Gabungkan dengan DBGUI
- Jatuhkan dukungan Python 2.7
- Mengerjakan ulang subpackage/modul impor dan logging
- Berbagai kode membersihkan
- Sumber yang gelap
- v2.9.1
- Tambahkan Mach-O Loader dan System.osx Skeleton
- Tingkatkan modul emulator
- Tambahkan server dan klien dasar CMDCLI UI
- Perbaiki berbagai kesalahan/peringatan
- v2.9.0
- Tambahkan kerangka modul emulator (kelas emul)
- Reorganisasi Modul Sistem ke dalam Subpackages
- Tambahkan Sistem, OS, Tugas dan Kelas Definestub
- Tambahkan arsitektur AVR
- Modified Block Class => Atribut Peta dipindahkan ke kelas CFG.Node
- Kelas memori yang dipindahkan di System.Memory Module
- Kelas analisis CFG bergerak di subpackage 'SA'
- Tingkatkan log debug
- Tingkatkan Pe/Elf Parsers dengan Modul Amoco.Structs
- Tambahkan metode checksec di kelas ELF
- Perbaiki semantik dan format ARMV7
- v2.6.3
- Tambahkan arsitektur kerdil
- Perbarui dan tingkatkan Loader ELF
- Tingkatkan ekspresi menyederhanakan untuk shift+dan ops
- Gabungkan variabel-panjang bidang struct kelas "varfield"
- v2.6.2
- Perbaiki dukungan untuk struct "slop"
- Izinkan penyelarasan struct yang ditentukan sendiri
- v2.6.1
- Gunakan ukuran/aligmen struktur asli secara default
- v2.6.0
- Tambahkan arsitektur V850 (E2S)
- Tambahkan arsitektur SH2-A
- Tambahkan dukungan untuk menganalisis struktur hab i.mx6
- Gabungkan arsitektur AVR
- Tambahkan kelas sistem/structs
- Ekspor 'merangkak' dari pohon amoco (liblik-c-to-struktur)
- Tambahkan Instruksi EBPF Semantik
- Tambahkan Dukungan untuk Instruksi BPF (Lama) Spesifikasi Spesifikasi
- Tambahkan dukungan untuk format biner hex/srec
- Tambahkan Metode 'Gabungan' MemoryMap
- Tambahkan metode 'Step_instruction' di CoreExec (Emulator)
- Tambahkan dukungan untuk struktur UFS
- Gabungkan Sinyal Dispatcher untuk UI
- Tingkatkan Dukungan Setuptools
- Hapus racun dan hanya mengandalkan Travis
- Tingkatkan instruksi armv7 semantik dan pembantu kode
- Tingkatkan Spesifikasi dan Format Instruksi ARMV7
- Tambahkan Level Level Debug Pohon Spec
- Perbaiki dekoder untuk lengkungan dengan instruksi panjang variabel Bigendian
- Tingkatkan efikasi dekoder dengan indikator fetcher yang diperluas
- Tambahkan Dukungan Pygments untuk SPARC, Formatter Instruksi MSP430
- meningkatkan ekspresi pelebaran
- Tingkatkan modul konfigurasi
- v2.5.3
- Perbaikan Lengkap Masalah #77 (Khas X64 Madness)
- v2.5.2
- Perbaikan sebagian masalah #77 (GitHub) Terkait dengan semantik instruksi LEA di x64 Arch.
- v2.5.1
- Tambahkan arsitektur RISC-V
- Tambahkan Arsitektur EBPF
- Gunakan output unicode dengan simbol unicode untuk sebagian besar operator jika didukung
- Tambahkan lebih sedikit dari operator (LTU) dan lebih besar atau tidak setara (GEU) yang dibutuhkan oleh arsitektur RISCV
- Perbaiki Metode Sederhanakan untuk Ekspresi Comp
- Tingkatkan metode Sederhanakan dengan parameter opsional 'bitslice'
- Tingkatkan Antarmuka Memori Mapper
- Perbaiki metode SMT model_to_mapper
- Tambahkan output CFG 'Dot' Format (Elementary)
- Tambahkan metode 'getFileOffset' di kelas ELF dan PE
- Hapus Bendera Endianness Global
- Perbarui format x86/x64 agar kompatibel dengan GNU As dan Clang
- Tambahkan beberapa instruksi x86/x64 semantik (movnti, wbinvd, div, ...)
- Perbaiki beberapa spesifikasi instruksi langka x86/x64 (pmovmskb, ...)
- v2.5.0
- Dukung python3 (> = 3.5)
- Izinkan memuat beberapa lengkungan CPU (perbaiki masalah #21 dan #64)
- Perbarui Dokumen ReadMe dan Sphinx
- v2.4.6
- Tambahkan Dokumentasi SPHINX (File dan DocStrings RST)
- Tambahkan metode fungsi untuk kelas utama
- Tingkatkan Peri Pretty Printing
- mengubah modul db untuk menggunakan sqlalchemy daripada zodb
- Buat semua objek dapat dipetik (dengan protokol tertinggi)
- Tambahkan format x86 & x64 baru
- Perbaiki banyak spesifikasi x64 dan semantik
- Beberapa peningkatan kinerja
- Tingkatkan Sederhana MEM (VEC) dan SLC (VEC)
- Perbaiki SLC.Simplify untuk operator '**'
- v2.4.5
- Tambahkan pemilih X86/X64 Internal 'Mode'
- Tambahkan ekspresi 'lab' untuk label
- Tingkatkan MemoryZone/Peta dengan metode 'GREP'
- Tingkatkan MemoryZone untuk memungkinkan "bergeser" ke beberapa alamat
- Tingkatkan x86 AT&T Formatter
- Tambahkan x64 tes dekoder
- Perbaiki X64 Mode Pengalamatan Rip-Relatif
- Perbaiki banyak spesifikasi x64
- Tambahkan x64 Semantik Instruksi Kemasan
- Perbaiki berbagai instruksi X86 SSE
- Perbaiki berbagai masalah x86 (FistTP/Setcc/Push IMM8/MOVQ)
- v2.4.4
- Tambahkan beberapa semantik instruksi SSE
- Tambahkan Paket QT UI.Graphics dengan Kelas Item Block/Func/XFunc
- Tambahkan Paket GTK UI.Graphics Awal
- Pindahkan Vltable di kelas UI.Views.BlockView
- Perbaiki berbagai decoding/format/semantik x86/64
- v2.4.3
- Tambahkan Paket UI.Graphics (dikosongkan)
- Tambahkan modul UI.Views dengan dukungan untuk blok/func/xfunc
- Tambahkan Ui.render.vltable Class ke Tabel Cetak Pretty
- Tingkatkan Kelas Formatter Instruksi untuk Mengakses Token PP
- algoritma ITERCFG dan lbackward yang lebih bersih
- Tambahkan kelas ekspresi VECW untuk mewakili ekspresi VEC yang 'melebar'
- meningkatkan penulisan memori ekspresi VEC
- Tingkatkan pelebaran dan fixpoint di func.makemap ()
- Tambahkan atribut 'ketik' (std/pc/flags/stack/lainnya)
- Tentukan jenis register untuk x86 lengkung
- Perbaiki beberapa decoding/format/semantik x86/64
- Perbarui Travis Config, perbaiki Pytest vs. Token.
- v2.4.2
- Gabungkan Dukungan untuk Pygments Metode Pencetakan Pretty (dalam Modul UI.Render)
- Tambahkan x86 formatter sintaks hilighted (dalam arch.x86.formats)
- Expose Exprese's Pretty Printing Interface (exp.pp (), exp.toks ())
- Hapus Fallback Kelas Konfigurasi Default (ConfigParser adalah standar)
- Gabungkan beberapa sampel dan tes yang diangkut ke paket pytest
- Gunakan setuptools, tambahkan tox.ini dan travis-ci config
- Perbaiki beberapa semantik x86/x64
- Tingkatkan format SPARC V8
- Tambahkan register coprocessor sparc
- Perbarui ReadMe
- v2.4.1
- Tambahkan Lbackward Analysis dan Func.makemap () Implementasi
- Tambahkan kelas ekspresi VEC untuk mewakili satu set ekspresi
- Tambahkan fungsi gabungan dan pelebaran mapper
- Izinkan untuk lulus instance solver SMT di exp.to_smtlib ()
- Tambahkan metode funchelpers di kelas sistem berbasis x86
- Tambahkan Kelas Sesi/DB dan metode khusus acar
- Tambahkan metode "kemajuan" di kelas log untuk memberikan umpan balik
- Tambahkan paket eksternal yang diperlukan dalam setup.py
- Perbaiki beberapa semantik x86/x64
- Tingkatkan format SPARC V8
- Perbarui ReadMe
- v2.4.0
- Gabungkan Antarmuka Pemecah Z3, lihat Smt.py dan Smtlib () Metode EXP
- Gabungkan Analisis Fbackward dan Kelas Func Kode.
- Tingkatkan Ekspresi: Pisahkan Ops Unary and Binary, Ekspresi "Normalisasi"
- Tingkatkan metode mapper dengan memori () dan operator komposisi tahan aliasing
- Tingkatkan Kelas MemoryZone: Kembalikan bagian -bagian Ekspresi Tertinggi alih -alih meningkatkan memori.
- Menambahkan kelas Rawexec untuk input seperti shellcode
- Dukungan input string di kelas ELF/PE.
- Perbaiki berbagai bug x86/x64
- Lindungi dari mengubah ukuran register Env
- Tambahkan Win64 Loader
- Sesuaikan level log dan file opsional dari conf
- Perbarui ReadMe
- v2.3.5
- Tambahkan X64 Arch + Full X86/64 SSE Decoder
- Hotfix x86/x64 inversi {88}/{8a} instruksi MOV
- Perbaiki berbagai decoder dan semantik x86
- Kode Kode kosmetik
- v2.3.4
- Gabungkan Armv7/Thumb Fixed Semantik
- Tambahkan X86 FPU Decoders
- Tambahkan Fungsi Temukan di MemoryMap
- Perbaiki inti read_instruction pada batas peta
- Perbaiki PE Impor Parsing dan TLS Table Builder
- Decoder generik lebih cepat
- Persimpangan Hotfix Berbagai X86 Decoders
- Tambahkan beberapa decoder x86 SSE
- v2.3.3
- Dukungan untuk mikrokontroler MSP430 dan PIC18
- Perbaiki sparc rett, udiv/sdiv dan format
- Perbaiki decoding instruksi jcxz x86
- v2.3.2
- Gabungkan arsitektur Z80/GB, perbaiki masalah yang dilaporkan SPARC
- Tambahkan contoh decoding SSE2 (diperbaiki)
- v2.3.1
- Tambahkan file lisensi
- Perbaiki Arsitektur SPARC
- Hindari ekspresi PTR saat alamat tidak didef
- Perbaiki aturan penyederhanaan eqn_helpers
- Readme diperbarui
- Kelas PE baru (diuji pada cost.exe) + dukungan untuk beberapa titik masuk.