Triton adalah perpustakaan analisis biner yang dinamis. Ini menyediakan komponen internal yang memungkinkan Anda untuk membangun alat analisis program Anda, mengotomatiskan rekayasa terbalik, melakukan verifikasi perangkat lunak atau hanya meniru kode.
- Eksekusi Simbolik Dinamis
- Analisis noda dinamis
- Representasi AST dari X86 , X86-64 , ARM32 , AARCH64 dan RISC-V 32/64 Isa Semantik
- Sintesis Ekspresi
- SMT Penyederhanaan berlalu
- Mengangkat ke LLVM serta Z3 dan kembali
- Antarmuka Smt Solver ke Z3 dan Bitwuzla
- API C ++ dan Python
Karena Triton adalah semacam proyek paruh waktu, tolong, jangan salahkan kami jika tidak sepenuhnya dapat diandalkan. Masalah terbuka atau permintaan tarik selalu lebih baik daripada trolling =). Namun, Anda dapat mengikuti pengembangan di Twitter @QB_Triton.
Awal yang cepat
- Instalasi
- API Python
- C ++ API
- Contoh Python
- Mereka sudah menggunakan Triton
Memulai
from triton import *
> >> # Create the Triton context with a defined architecture
>> > ctx = TritonContext ( ARCH . X86_64 )
> >> # Define concrete values (optional)
>> > ctx . setConcreteRegisterValue ( ctx . registers . rip , 0x40000 )
> >> # Symbolize data (optional)
>> > ctx . symbolizeRegister ( ctx . registers . rax , 'my_rax' )
> >> # Execute instructions
>> > ctx . processing ( Instruction ( b" x48 x35 x34 x12 x00 x00 " )) # xor rax, 0x1234
> >> ctx . processing ( Instruction ( b" x48 x89 xc1 " )) # mov rcx, rax
> >> # Get the symbolic expression
>> > rcx_expr = ctx . getSymbolicRegister ( ctx . registers . rcx )
> >> print ( rcx_expr )
( define - fun ref ! 8 () ( _ BitVec 64 ) ref ! 1 ) ; MOV operation - 0x40006 : mov rcx , rax
>> > # Solve constraint
>> > ctx . getModel ( rcx_expr . getAst () == 0xdead )
{ 0 : my_rax : 64 = 0xcc99 }
>> > # 0xcc99 XOR 0x1234 is indeed equal to 0xdead
>> > hex ( 0xcc99 ^ 0x1234 )
'0xdead' Memasang
Triton bergantung pada dependensi berikut:
* libcapstone >= 5.0.x https://github.com/capstone-engine/capstone
* libboost (optional) >= 1.68
* libpython (optional) >= 3.6
* libz3 (optional) >= 4.6.0 https://github.com/Z3Prover/z3
* libbitwuzla (optional) >= 0.4.x https://github.com/bitwuzla/bitwuzla
* llvm (optional) >= 12
Linux dan MacOS
$ git clone https://github.com/JonathanSalwan/Triton
$ cd Triton
$ mkdir build ; cd build
$ cmake ..
$ make -j3
$ sudo make install
Secara default, LLVM dan Bitwuzla tidak dikompilasi. Jika Anda ingin menikmati kekuatan penuh Triton, kompilasi CMake adalah:
$ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH= $( llvm-config --prefix ) -DBITWUZLA_INTERFACE=ON ..
MacOS M1 Catatan:
Jika Anda mendapatkan kesalahan kompilasi seperti:
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
Cobalah untuk menentukan PYTHON_EXECUTABLE , PYTHON_LIBRARIES dan PYTHON_INCLUDE_DIRS untuk versi Python spesifik Anda:
cmake -DCMAKE_INSTALL_PREFIX=/opt/homebrew/
-DPYTHON_EXECUTABLE=/opt/homebrew/bin/python3
-DPYTHON_LIBRARIES=/opt/homebrew/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/libpython3.10.dylib
-DPYTHON_INCLUDE_DIRS=/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.10/include/python3.10/
.. Informasi ini Anda bisa keluar dari cuplikan ini:
from sysconfig import get_paths
info = get_paths ()
print ( info )
Windows
Anda dapat menggunakan cmake untuk menghasilkan file .sln libtriton.
> git clone https://github.com/JonathanSalwan/Triton.git
> cd Triton
> mkdir build
> cd build
> cmake -G " Visual Studio 14 2015 Win64 "
-DBOOST_ROOT="C:/Users/jonathan/Works/Tools/boost_1_61_0"
-DPYTHON_INCLUDE_DIRS="C:/Python36/include"
-DPYTHON_LIBRARIES="C:/Python36/libs/python36.lib"
-DZ3_INCLUDE_DIRS="C:/Users/jonathan/Works/Tools/z3-4.6.0-x64-win/include"
-DZ3_LIBRARIES="C:/Users/jonathan/Works/Tools/z3-4.6.0-x64-win/bin/libz3.lib"
-DCAPSTONE_INCLUDE_DIRS="C:/Users/jonathan/Works/Tools/capstone-5.0.1-win64/include"
-DCAPSTONE_LIBRARIES="C:/Users/jonathan/Works/Tools/capstone-5.0.1-win64/capstone.lib" ..
Namun, jika Anda lebih suka mengunduh secara langsung perpustakaan yang dikompilasi, lihat artefak Appveyor kami. Perhatikan bahwa jika Anda menggunakan Artefak Appveyor, Anda mungkin harus menginstal paket Visual C ++ yang dapat didistribusikan kembali untuk Visual Studio 2012.
Menginstal dari vcpkg
Port Triton di VCPKG selalu up to date oleh anggota tim Microsoft dan kontributor komunitas. URL VCPKG adalah: https://github.com/microsoft/vcpkg. Anda dapat mengunduh dan menginstal Triton menggunakan manajer ketergantungan VCPKG:
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh # ./bootstrap-vcpkg.bat for Windows
$ ./vcpkg integrate install
$ ./vcpkg install triton
Jika versi sudah ketinggalan zaman, silakan buat masalah atau tarik permintaan pada repositori VCPKG.
Kontributor
- Alberto Garcia Illera - Otomatisasi Pesiar
- Alexey Vishnyakov - ISP Ras
- Biner Hitam - N/A
- Christian Heitman - Quarkslab
- Daniil Kuts - ISP Ras
- Jessy Campos - N/A
- Matteo F. - N/A
- Pierrick Brunet - Quarkslab
- Pixelrick - N/A.
- Romain Thomas - Quarkslab
- Dan banyak lagi
Mereka sudah menggunakan Triton
Peralatan
- Exrop: Generasi Ropchain Otomatis.
- PIMP: Plugin R2 berbasis Triton untuk eksekusi konsolik dan kontrol total.
- Ponce: Pemenang Kontes Plugin IDA 2016! Eksekusi simbolik hanya satu klik saja!
- Qynthesis: Greybox synthesizer yang diarahkan untuk deobfuscation dari instruksi perakitan.
- Tritondse: Perpustakaan DSE berbasis Triton dengan kemampuan pemuatan dan eksplorasi.
- Titan: Titan adalah vMprotect devirtualizer menggunakan Triton.
Makalah dan Konferensi
- Sydr-Fuzz: Fuzzing hibrida terus menerus dan analisis dinamis untuk siklus pengembangan keamanan
Bicaralah di : Ivannikov ISP RAS Open Conference, Moscow, Rusia, 2022. [Kertas] [Slide]
Penulis : Vishnyakov A., Kuts D., Logunova V., Parygina D., Kobrin E., Savidov G., Fedotov A.
Abstrak : Saat ini kerangka analisis dinamis otomatis untuk pengujian berkelanjutan sangat diminati untuk memastikan keselamatan perangkat lunak dan memenuhi persyaratan siklus hidup pengembangan keamanan (SDL). Efisiensi perburuan bug keamanan dari teknik fuzzing hibrida canggih mengungguli fuzzing yang dipandu oleh cakupan yang dipandu secara luas. Kami mengusulkan pipa analisis dinamis yang ditingkatkan untuk memanfaatkan produktivitas deteksi bug otomatis berdasarkan fuzzing hibrida. Kami mengimplementasikan pipa yang diusulkan dalam fuzzing sydr-fuzz fuzzing kontinu yang ditenagai oleh orkestrator fuzzing hybrid, mengintegrasikan SYDR alat DSE kami dengan libfuzzer dan AFL ++. Sydr-Fuzz juga menggabungkan pemeriksa predikat keamanan, crash triaging tool CASR, dan utilitas untuk corpus minimisasi dan pengumpulan cakupan. Benchmarking fuzzer hybrid kami terhadap solusi canggih alternatif menunjukkan keunggulannya atas fuzzer yang dipandu cakupan sambil tetap pada level yang sama dengan fuzzer hybrid canggih. Selain itu, kami menyetujui relevansi pendekatan kami dengan menemukan 85 kelemahan perangkat lunak dunia nyata baru dalam proyek OSS-Sydr-Fuzz. Akhirnya, kami membuka kode sumber CASR kepada masyarakat untuk memfasilitasi pemeriksaan kecelakaan yang ada.
- Pemecahan optimis yang kuat untuk eksekusi simbolik dinamis
Bicara di : Ivannikov Memorial Workshop, Kazan, Rusia, 2022. [Kertas] [Slide]
Penulis : Parygina D., Vishnyakov A., Fedotov A.
Abstrak : Eksekusi Simbolik Dinamis (DSE) adalah metode yang efektif untuk pengujian program otomatis dan deteksi bug. Ini meningkatkan cakupan kode oleh eksplorasi cabang kompleks selama fuzzing hibrida. DSE Tools membalikkan cabang di sepanjang beberapa jalur eksekusi dan membantu fuzzer memeriksa bagian -bagian program yang sebelumnya tidak tersedia. DSE sering menghadapi masalah yang berlebihan. Yang pertama mengarah pada komplikasi analisis yang signifikan sementara yang kedua menyebabkan eksekusi simbolik yang tidak akurat. Kami mengusulkan metode pemecahan optimis yang kuat yang menghilangkan kendala predikat jalur yang tidak relevan untuk inversi cabang target. Kami menghilangkan kendala simbolik yang tidak dapat dikendalikan oleh cabang target. Selain itu, kami secara terpisah menangani cabang simbolik yang memiliki instruksi transfer kontrol bersarang yang melewati kontrol di luar ruang lingkup cabang induk, misalnya pengembalian, goto, break, dll. Kami menerapkan metode yang diusulkan dalam alat eksekusi simbolik dinamis kami Sydr. Kami mengevaluasi strategi optimis yang kuat, strategi optimis yang hanya berisi negasi kendala terakhir, dan kombinasi mereka. Hasilnya menunjukkan bahwa kombinasi strategi membantu meningkatkan cakupan kode atau jumlah rata -rata cabang terbalik dengan benar per satu menit. Adalah optimal untuk menerapkan kedua strategi bersama -sama berbeda dengan konfigurasi lainnya.
- Sintesis Program Greybox: Pendekatan Baru untuk Menyerang Kebingungan Dataflow
Bicara di : Blackhat USA, Las Vegas, Nevada, 2021. [Slide]
Penulis : Robin David
Abstrak : Pembicaraan ini menyajikan kemajuan terbaru dalam sintesis program yang diterapkan untuk deobfuscation. Ini bertujuan untuk mendemistifikasi teknik analisis ini dengan menunjukkan bagaimana hal itu dapat dilakukan pada kebingungan. Terutama implementasi qsynthesis yang dirilis untuk bincang-bincang ini menunjukkan alur kerja ujung ke ujung lengkap untuk deobfuscate Instruksi perakitan kembali dalam instruksi yang dioptimalkan (deobfuscated) yang disusun kembali ke dalam biner.
- Dari kode sumber hingga crash test-case melalui otomatisasi pengujian perangkat lunak
Bicara di : C & Esar, Rennes, Prancis, 2021. [Kertas] [Slide]
Penulis : Robin David, Jonathan Salwan, Justin Bourroux
Abstrak : Makalah ini menyajikan pendekatan yang mengotomatisasi proses pengujian perangkat lunak dari kode sumber ke pengujian dinamis dari program yang dikompilasi. Lebih khusus lagi, dari laporan analisis statis yang menunjukkan peringatan pada jalur sumber, ini memungkinkan pengujian untuk menutupi garis -garis ini secara dinamis dan oportunistik memeriksa apakah mereka dapat memicu kecelakaan atau tidak. Hasilnya adalah uji korpus yang memungkinkan untuk menutupi peringatan dan memicu mereka jika kebetulan itu benar -benar positif. Makalah ini membahas metodologi yang digunakan untuk melacak peringatan di biner yang dikompilasi, proses pemilihan mesin pengujian dan hasil yang diperoleh pada implementasi tumpukan TCP/IP untuk sistem tertanam dan IoT.
- Keamanan Simbolik Predikat: Kelemahan Program Perburuan
Bicara di : Ivannikov ISP Ras Open Conference, Moskow, Rusia, 2021. [Kertas] [Slide]
Penulis : A.Vishnyakov, V.Logunova, E.Kobrin, D.Kuts, D.Parygina, A.Fedotov
Abstrak : Eksekusi Simbolik Dynamic (DSE) adalah metode yang kuat untuk eksplorasi jalur selama fuzzing hybrid dan deteksi bug otomatis. Kami mengusulkan predikat keamanan untuk secara efektif mendeteksi perilaku yang tidak terdefinisi dan kesalahan pelanggaran akses memori. Awalnya, kami secara simbolis menjalankan program di jalur yang tidak memicu kesalahan apa pun (hybrid fuzzing dapat mengeksplorasi jalur ini). Kemudian kami membangun predikat keamanan simbolik untuk memverifikasi beberapa kondisi kesalahan. Dengan demikian, kami dapat mengubah aliran data program untuk memerlukan dereferensi penunjuk nol, pembagian dengan nol, akses di luar batas, atau kelemahan integer meluap. Tidak seperti analisis statis, eksekusi simbolik dinamis tidak hanya melaporkan kesalahan tetapi juga menghasilkan data input baru untuk mereproduksi mereka. Selain itu, kami memperkenalkan pemodelan semantik fungsi untuk fungsi perpustakaan standar C/C ++ umum. Kami bertujuan untuk memodelkan aliran kontrol di dalam fungsi dengan rumus simbolik tunggal. Ini membantu deteksi bug, mempercepat eksplorasi jalur, dan mengatasi overconstorts di jalur predikat. Kami menerapkan teknik yang diusulkan dalam alat eksekusi simbolik dinamis kami Sydr. Dengan demikian, kami memanfaatkan metode yang kuat dari Sydr seperti jalur predikat yang menghilangkan kendala yang tidak relevan. Kami menyajikan Juliet Dynamic untuk mengukur akurasi alat deteksi bug dinamis. Sistem pengujian juga memverifikasi yang menghasilkan input memicu pembersih. Kami mengevaluasi akurasi SYDR untuk 11 CWE dari Juliet Test Suite. SYDR menunjukkan akurasi keseluruhan 95,59%. Kami membuat artefak evaluasi sydr tersedia untuk umum untuk memfasilitasi hasil reproduktifitas.
- Menuju Pointer Simbolik Penalaran dalam Eksekusi Simbolik Dinamis
Bicara di : Ivannikov Memorial Workshop, Nizhny Novgorod, Rusia, 2021. [Kertas] [Slide]
Penulis : Daniil Kuts
Abstrak : Eksekusi simbolis dinamis adalah teknik yang banyak digunakan untuk pengujian perangkat lunak otomatis, dirancang untuk deteksi eksplorasi jalur eksekusi dan kesalahan program. Pendekatan hibrida baru -baru ini menjadi luas, ketika tujuan utama eksekusi simbolik adalah membantu fuzzer meningkatkan cakupan program. Semakin banyak cabang yang dapat dibalik oleh pelaksana simbolik, semakin berguna untuk fuzzer. Aliran kontrol program sering tergantung pada nilai memori, yang diperoleh dengan menghitung indeks alamat dari input pengguna. Namun, sebagian besar alat DSE tidak mendukung ketergantungan seperti itu, sehingga mereka kehilangan beberapa cabang program yang diinginkan. Kami mengimplementasikan alamat simbolis yang beralasan pada pembacaan memori dalam alat eksekusi simbolik dinamis kami Sydr. Kemungkinan daerah akses memori ditentukan dengan menganalisis ekspresi simbolik alamat memori, atau pencarian biner dengan SMT-Solver. Kami mengusulkan teknik linierisasi yang ditingkatkan untuk memodelkan akses memori. Metode pemodelan memori yang berbeda dibandingkan pada set program. Evaluasi kami menunjukkan bahwa penanganan alamat simbolis memungkinkan untuk menemukan cabang simbolis baru dan meningkatkan cakupan program.
- Qsynth: Pendekatan berbasis sintesis program untuk deobfuscation kode biner
Bicara di : Bar, San Diego, California, 2020. [Kertas]
Penulis : Robin David, Luigi Coniglio, Mariano Ceccato
Abstrak : Kami menyajikan pendekatan generik yang memanfaatkan sintesis DSE dan program untuk berhasil mensintesis program yang dikaburkan dengan campuran-boolean-aritmatika, pengodean data atau virtualisasi. Algoritma sintesis yang diusulkan adalah sintesis offline sintesis yang dipandu oleh pencarian pertama-breath-first. Kami menunjukkan keefektifannya terhadap pengabdian canggih dan skalabilitasnya saat ia menggantikan pendekatan serupa lainnya berdasarkan sintesis. Kami juga menunjukkan keefektifannya dengan adanya kebingungan komposit (kombinasi berbagai teknik). Pekerjaan yang berkelanjutan ini mencerahkan keefektifan sintesis untuk menargetkan jenis -jenis kebingungan tertentu dan membuka jalan menuju algoritma yang lebih kuat dan strategi penyederhanaan.
- SYDR: eksekusi simbolik dinamis canggih
Bicara di : Ivannikov ISP Ras Open Conference, Moscow, Rusia, 2020. [Kertas] [Slide] [Video]
Penulis : A.Vishnyakov, A.Fedotov, D.Kuts, A.Novikov, D.Parygina, E.Kobrin, V.Logunova, P.Belecky, S.Kurmangaleev
Abstrak : Eksekusi Simbolik Dinamis (DSE) memiliki sejumlah besar aplikasi dalam keamanan komputer (fuzzing, penemuan kerentanan, rekayasa balik, dll.). Kami mengusulkan beberapa peningkatan kinerja dan akurasi untuk eksekusi simbolik yang dinamis. Melewati instruksi non-simbolik memungkinkan untuk membangun jalur predikat 1.2--3,5 kali lebih cepat. Mesin simbolik menyederhanakan formula selama eksekusi simbolik. Path Predicate Slicing menghilangkan konjung yang tidak relevan dari kueri pemecah. Kami menangani setiap tabel lompatan (pernyataan sakelar) sebagai beberapa cabang dan menggambarkan metode untuk pelaksanaan simbolis program multi-threaded. Solusi yang diusulkan diimplementasikan dalam alat SYDR. SYDR melakukan inversi cabang di jalur predikat. SYDR Menggabungkan Alat Instrumentasi Biner Dinamorio Dynamorio dengan Mesin Simbolik Triton.
- Deobfuscation simbolik: dari kode tervirtualisasi kembali ke aslinya
Bicara di : Dimva, Paris-Saclay, Prancis, 2018. [kertas] [Slide]
Penulis : Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet
Abstrak : Perlindungan perangkat lunak telah mengambil tempat penting selama dekade terakhir untuk melindungi perangkat lunak yang sah dari rekayasa terbalik atau merusak. Virtualisasi dianggap sebagai salah satu pertahanan terbaik terhadap serangan semacam itu. Kami menyajikan pendekatan generik berdasarkan eksplorasi jalur simbolik, noda dan kompilasi ulang yang memungkinkan untuk memulihkan, dari kode tervirtualisasi, kode devirtual secara semantik identik dengan yang asli dan ukurannya tutup. Kami mendefinisikan kriteria dan metrik untuk mengevaluasi relevansi hasil deobfuscated dalam hal kebenaran dan presisi. Akhirnya kami mengusulkan pengaturan sumber terbuka yang memungkinkan untuk mengevaluasi pendekatan yang diusulkan terhadap beberapa bentuk virtualisasi.
- Deobfuscation perlindungan perangkat lunak berbasis VM
Talk at : Sstic, Rennes, Prancis, 2017. [Kertas Prancis] [Slide Inggris] [Video Prancis]
Penulis : Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet
Abstrak : Dalam presentasi ini kami menggambarkan suatu pendekatan yang secara otomatis menganalisis perlindungan perangkat lunak berbasis mesin virtual dan yang mengkompilasi ulang versi baru dari biner tanpa perlindungan tersebut. Pendekatan otomatis ini bergantung pada panduan eksekusi simbolik dengan analisis nakal dan beberapa kebijakan konkretisasi, kemudian pada penulisan ulang biner menggunakan transisi LLVM.
- Bagaimana Triton dapat membantu membalikkan perlindungan perangkat lunak berbasis mesin virtual
Bicara di : CSAW SOS, NYC, New York, 2016. [Slide]
Penulis : Jonathan Salwan, Romain Thomas
Abstrak : Bagian pertama dari pembicaraan akan menjadi pengantar kerangka kerja Triton untuk mengekspos komponennya dan menjelaskan bagaimana mereka bekerja bersama. Kemudian, bagian kedua akan mencakup demonstrasi tentang bagaimana mungkin untuk membalikkan perlindungan berbasis mesin virtual menggunakan analisis noda, eksekusi simbolik, penyederhanaan SMT dan optimisasi LLVM-IR.
- Analisis biner dinamis dan kode yang dikecam
Bicara di : St'hack, Bordeaux, Prancis, 2016. [Slide]
Penulis : Jonathan Salwan, Romain Thomas
Abstrak : Pada presentasi ini kita akan berbicara tentang bagaimana DBA (analisis biner dinamis) dapat membantu seorang insinyur terbalik untuk membalikkan kode yang dikaburkan. Pertama -tama kita akan memperkenalkan beberapa teknik pengayaan dasar dan kemudian mengekspos bagaimana mungkin untuk memecahkan beberapa barang (menggunakan kerangka kerja DBA open -source kami - Triton) seperti mendeteksi predikat buram, merekonstruksi CFG, temukan algoritma asli, mengisolasi data yang masuk akal dan banyak lagi ... kemudian, kami akan menyimpulkan dengan beberapa kata tentang demo dan beberapa kata tentang beberapa kata kami.
- Bagaimana Triton dapat membantu menganalisis binari yang dikaburkan
Publikasi di : Majalah MISC 82, 2015. [Artikel Prancis]
Penulis : Jonathan Salwan, Romain Thomas
Abstrak : Kebingungan biner digunakan untuk melindungi kekayaan intelektual perangkat lunak. Ada berbagai jenis kebingungan tetapi secara kasar, itu mengubah struktur biner menjadi struktur biner lain dengan menjaga semantik yang sama. Tujuan kebingungan adalah untuk memastikan bahwa informasi asli "tenggelam" dalam informasi yang tidak berguna yang akan membuat rekayasa terbalik lebih sulit. Dalam artikel ini kita akan menunjukkan bagaimana kita dapat menganalisis program yang diusenkan dan memecah beberapa kebingungan menggunakan kerangka kerja Triton.
- Triton: Kerangka kerja eksekusi konsolis
Bicara di : SStic, Rennes, Prancis, 2015. [Kertas Prancis] [Slide Bahasa Inggris Detail]
Penulis : Jonathan Salwan, Florent Saudel
Abstrak : Pembicaraan ini adalah tentang rilis Triton, kerangka kerja eksekusi konsolik berdasarkan PIN. Ini menyediakan komponen seperti mesin noda, mesin eksekusi simbolik yang dinamis, mesin snapshot, terjemahan instruksi x64 ke SMT2, antarmuka Z3 untuk menyelesaikan kendala dan binding python. Berdasarkan komponen-komponen ini, Triton menawarkan kemungkinan untuk membangun alat untuk penelitian kerentanan atau bantuan rekayasa balik.
- Analisis perilaku dinamis menggunakan instrumentasi biner
Bicara di : St'hack, Bordeaux, Prancis, 2015. [Slide]
Penulis : Jonathan Salwan
Abstrak : Pembicaraan ini dapat dipertimbangkan seperti bagian 2 dari pembicaraan kami di SecurityDay. Pada bagian sebelumnya, kami berbicara tentang bagaimana mungkin untuk mencakup fungsi yang ditargetkan dalam memori menggunakan pendekatan DSE (Eksekusi Simbolik Dinamis). Meliputi suatu fungsi (atau negara -negara) tidak berarti menemukan semua kerentanan, beberapa kerentanan tidak merusak program. Itulah mengapa kita harus mengimplementasikan analisis spesifik untuk menemukan bug spesifik. Analisis ini didasarkan pada instrumentasi biner dan analisis perilaku runtime dari program. Dalam pembicaraan ini, kita akan melihat bagaimana mungkin untuk menemukan jenis bug berikut ini: Off-by-One, Stack / Heap Overflow, Use-Free-Free, Format String dan {Write, Baca} -Apakah di mana.
- Meliputi fungsi menggunakan pendekatan eksekusi simbolik yang dinamis
Bicara di : Hari Keamanan, Lille, Prancis, 2015. [Slide]
Penulis : Jonathan Salwan
Abstrak : Pembicaraan ini adalah tentang analisis dan instrumentasi biner. Kita akan melihat bagaimana mungkin untuk menargetkan fungsi tertentu, memotret memori konteks/register sebelum fungsi, menerjemahkan instrumentasi ke dalam representasi menengah, menerapkan analisis noda berdasarkan IR ini, membuat/menyimpan formula untuk eksekusi simbolik dinamis (DSE), menghasilkan nilai konkret yang lain untuk melewati jalur spesifik, mengembalikan memori konteks/register yang lain.
Mengutip Triton
@inproceedings{SSTIC2015-Saudel-Salwan,
author = {Saudel, Florent and Salwan, Jonathan},
title = {Triton: A Dynamic Symbolic Execution Framework},
booktitle = {Symposium sur la s{ ' {e}}curit{ ' {e}} des technologies de l'information
et des communications},
series = {SSTIC},
pages = {31--54},
address = {Rennes, France},
month = jun,
year = {2015},
}