
Triton एक गतिशील बाइनरी विश्लेषण लाइब्रेरी है। अपने स्वयं के प्रोग्राम विश्लेषण उपकरण बनाएं, अपने रिवर्स इंजीनियरिंग को स्वचालित करें, सॉफ्टवेयर सत्यापन करें या केवल कोड का अनुकरण करें।

Triton एक गतिशील बाइनरी विश्लेषण पुस्तकालय है। यह आंतरिक घटक प्रदान करता है जो आपको अपने प्रोग्राम विश्लेषण उपकरण बनाने, रिवर्स इंजीनियरिंग को स्वचालित करने, सॉफ्टवेयर सत्यापन करने या केवल कोड का अनुकरण करने की अनुमति देते हैं।
चूंकि Triton एक प्रकार का अंशकालिक प्रोजेक्ट है, कृपया, यदि यह पूरी तरह से विश्वसनीय नहीं है तो हमें दोष न दें। मुद्दे खोलना या पुल अनुरोध हमेशा ट्रोलिंग से बेहतर होते हैं =)। हालाँकि, आप ट्विटर पर विकास का अनुसरण कर सकते हैं @qb_triton.
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'
## pip का उपयोग करके स्थापित करें
Triton को `pip` का उपयोग करके स्थापित किया जा सकता है:```console
pip install triton-library
Triton निम्नलिखित निर्भरताओं पर निर्भर करता है:```
### Linux और MacOS```console
$ git clone https://github.com/JonathanSalwan/Triton
$ cd Triton
$ mkdir build ; cd build
$ cmake ..
$ make -j3
$ sudo make install
डिफ़ॉल्ट रूप से, LLVM और Bitwuzla संकलित नहीं होते हैं। यदि आप Triton की पूर्ण शक्ति का आनंद लेना चाहते हैं, तो cmake संकलन है:```console $ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH=$(llvm-config --prefix) -DBITWUZLA_INTERFACE=ON ..
#### MacOS M1 Note:
यदि आपको इस प्रकार के कंपाइलेशन त्रुटियाँ मिलती हैं:```
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
अपने विशिष्ट Python संस्करण के लिए PYTHON_EXECUTABLE, PYTHON_LIBRARIES और PYTHON_INCLUDE_DIRS निर्दिष्ट करने का प्रयास करें:```console
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/
..
यह जानकारी आप इस स्निपेट से प्राप्त कर सकते हैं:```python
from sysconfig import get_paths
info = get_paths()
print(info)
यदि पायथन ऑटोकम्प्लीशन काम नहीं कर रहा है, तो इन चरणों का पालन करें:
/usr/lib/python3.13/)।आपके IDE को .pyi फ़ाइलों को पार्स करने का समर्थन करना चाहिए।
आप libTriton की .sln फ़ाइल उत्पन्न करने के लिए cmake का उपयोग कर सकते हैं।```console
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" ..
आप setup.py का उपयोग करके Windows पर triton.pyd का डीबग संस्करण उत्पन्न कर सकते हैं।```console
> git clone https://github.com/JonathanSalwan/Triton.git
> cd Triton
> $env:COMPILER_DIR="C:/deps/llvm/llvm2116r/bin"
> $env:CMAKE_PREFIX_PATH="C:/deps/llvm/llvm-project-21.1.6.src/install/lib/cmake/llvm;C:/code/cxx-common-cmake/build/install"
> python_d -m build --wheel
> python_d -m pip install (Get-ChildItem .\dist\triton_library*)
हालांकि, यदि आप पहले से संकलित लाइब्रेरी को सीधे डाउनलोड करना पसंद करते हैं, तो हमारे AppVeyor के कलाकृतियाँ देखें। ध्यान दें कि यदि आप AppVeyor की कलाकृतियों का उपयोग करते हैं, तो आपको संभवतः Visual C++ Redistributable पैकेज इंस्टॉल करने होंगे Visual Studio 2012 के लिए।
vcpkg में Triton पोर्ट Microsoft टीम के सदस्यों और समुदाय के योगदानकर्ताओं द्वारा अद्यतित रखा जाता है। vcpkg का URL है: https://github.com/Microsoft/vcpkg। आप vcpkg निर्भरता प्रबंधक का उपयोग करके Triton डाउनलोड और इंस्टॉल कर सकते हैं:```console $ git clone https://github.com/Microsoft/vcpkg.git $ cd vcpkg $ ./bootstrap-vcpkg.sh # ./bootstrap-vcpkg.bat for Windows $ ./vcpkg integrate install $ ./vcpkg install triton
यदि संस्करण पुराना है, तो कृपया vcpkg रिपॉजिटरी पर [एक मुद्दा या पुल अनुरोध बनाएं](https://github.com/Microsoft/vcpkg)।
# योगदानकर्ता
* [**Alberto Garcia Illera**](https://twitter.com/algillera) - Cruise Automation
* [**Alexey Vishnyakov**](https://vishnya.xyz/) - ISP RAS
* [**Black Binary**](https://github.com/black-binary) - n/a
* [**Christian Heitman**](https://github.com/cnheitman) - Quarkslab
* [**Daniil Kuts**](https://github.com/apach301) - ISP RAS
* [**Jessy Campos**](https://github.com/ek0) - n/a
* [**Matteo F.**](https://twitter.com/fvrmatteo) - n/a
* [**Pierrick Brunet**](https://github.com/pbrunet) - Quarkslab
* [**PixelRick**](https://github.com/PixelRick) - n/a
* [**Romain Thomas**](https://twitter.com/rh0main) - Quarkslab
* [**और भी कई**](https://github.com/JonathanSalwan/Triton/graphs/contributors)
## वे पहले से ही Triton का उपयोग कर चुके हैं
### उपकरण
* [Exrop](https://github.com/d4em0n/exrop): स्वचालित ROP श्रृंखला निर्माण।
* [Pimp](https://github.com/kamou/pimp): कॉन्कोलिक निष्पादन और पूर्ण नियंत्रण के लिए Triton-आधारित R2 प्लगइन।
* [Ponce](https://github.com/illera88/Ponce): IDA 2016 प्लगइन प्रतियोगिता विजेता! प्रतीकात्मक निष्पादन बस एक क्लिक दूर!
* [QSynthesis](https://github.com/quarkslab/qsynthesis): असेंबली निर्देशों के डिओबफस्केशन के लिए ग्रेबॉक्स संश्लेषक।
* [TritonDSE](https://github.com/quarkslab/tritondse): लोडिंग और अन्वेषण क्षमताओं वाली Triton-आधारित DSE लाइब्रेरी।
* [Titan](https://github.com/archercreat/titan): Titan एक VMProtect डिवर्चुअलाइज़र है जो Triton का उपयोग करता है।
### पेपर और सम्मेलन<ul dir="auto">
<li>
<b>Sydr-Fuzz: सुरक्षा विकास जीवनचक्र के लिए सतत हाइब्रिड फ़ज़िंग और गतिशील विश्लेषण</b><br />
<b>वार्ता स्थल</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2022. [<a href="publications/ISPOPEN2022-sydr-fuzz.pdf">पेपर</a>] [<a href="publications/ISPOPEN2022-slide-sydr-fuzz-vishnyakov.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Vishnyakov A., Kuts D., Logunova V., Parygina D., Kobrin E., Savidov G., Fedotov A.<br />
<b>सारांश</b>: <em>आजकल निरंतर परीक्षण के लिए स्वचालित गतिशील विश्लेषण ढाँचे सॉफ्टवेयर सुरक्षा सुनिश्चित करने और सुरक्षा विकास जीवनचक्र (SDL) आवश्यकताओं को पूरा करने के लिए अत्यधिक मांग में हैं। अत्याधुनिक हाइब्रिड फ़ज़िंग तकनीकों की सुरक्षा बग शिकार दक्षता व्यापक रूप से उपयोग किए जाने वाले कवरेज-निर्देशित फ़ज़िंग से बेहतर प्रदर्शन करती है। हम हाइब्रिड फ़ज़िंग पर आधारित स्वचालित बग पहचान की उत्पादकता का लाभ उठाने के लिए एक उन्नत गतिशील विश्लेषण पाइपलाइन प्रस्तावित करते हैं। हम प्रस्तावित पाइपलाइन को सतत फ़ज़िंग टूलसेट Sydr-Fuzz में लागू करते हैं, जो हाइब्रिड फ़ज़िंग ऑर्केस्ट्रेटर द्वारा संचालित है, और हमारे DSE टूल Sydr को libFuzzer और AFL++ के साथ एकीकृत करता है। Sydr-Fuzz में सुरक्षा विधेय जाँचकर्ता, क्रैश ट्राइजिंग टूल Casr, और कॉर्पस न्यूनीकरण एवं कवरेज संग्रह के लिए उपयोगिताएँ भी शामिल हैं। हमारे हाइब्रिड फ़ज़र का वैकल्पिक अत्याधुनिक समाधानों के विरुद्ध बेंचमार्किंग कवरेज-निर्देशित फ़ज़र्स पर इसकी श्रेष्ठता दर्शाती है, जबकि यह उन्नत हाइब्रिड फ़ज़र्स के समान स्तर पर बना रहता है। इसके अलावा, हम OSS-Sydr-Fuzz प्रोजेक्ट के भीतर 85 नई वास्तविक-विश्व सॉफ्टवेयर खामियों की खोज करके अपने दृष्टिकोण की प्रासंगिकता को सिद्ध करते हैं। अंत में, हम मौजूदा क्रैश की जाँच की सुविधा के लिए समुदाय को Casr स्रोत कोड खोलते हैं।</em>
</li><br/>
<li>
<b>गतिशील प्रतीकात्मक निष्पादन के लिए मजबूत आशावादी समाधान</b><br />
<b>वार्ता स्थल</b>: Ivannikov Memorial Workshop, Kazan, Russia, 2022. [<a href="publications/IVMEM2022-strong-optimistic-parygina.pdf">पेपर</a>] [<a href="publications/IVMEM2022-slide-strong-optimistic-parygina.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Parygina D., Vishnyakov A., Fedotov A.<br />
<b>सारांश</b>: <em>गतिशील प्रतीकात्मक निष्पादन (DSE) स्वचालित प्रोग्राम परीक्षण और बग पहचान के लिए एक प्रभावी विधि है। यह हाइब्रिड फ़ज़िंग के दौरान जटिल शाखाओं की खोज द्वारा कोड कवरेज बढ़ाता है। DSE उपकरण किसी निष्पादन पथ के साथ शाखाओं को उलट देते हैं और फ़ज़र को पहले अनुपलब्ध प्रोग्राम भागों की जाँच करने में मदद करते हैं। DSE को अक्सर अति-बाधा और अल्प-बाधा समस्याओं का सामना करना पड़ता है। पहली समस्या महत्वपूर्ण विश्लेषण जटिलता की ओर ले जाती है जबकि दूसरी गलत प्रतीकात्मक निष्पादन का कारण बनती है।
हम मजबूत आशावादी समाधान विधि प्रस्तावित करते हैं जो लक्ष्य शाखा उत्क्रमण के लिए अप्रासंगिक पथ विधेय बाधाओं को समाप्त करती है। हम ऐसी प्रतीकात्मक बाधाओं को समाप्त करते हैं जिन पर लक्ष्य शाखा नियंत्रण-निर्भर नहीं है। इसके अलावा, हम उन प्रतीकात्मक शाखाओं को अलग से संभालते हैं जिनमें नेस्टेड नियंत्रण स्थानांतरण निर्देश होते हैं जो नियंत्रण को मूल शाखा के दायरे से बाहर ले जाते हैं, जैसे return, goto, break, आदि। हम प्रस्तावित विधि को अपने गतिशील प्रतीकात्मक निष्पादन उपकरण Sydr में लागू करते हैं।
हम मजबूत आशावादी रणनीति, आशावादी रणनीति जिसमें केवल अंतिम बाधा नकार शामिल है, और उनके संयोजन का मूल्यांकन करते हैं। परिणाम दर्शाते हैं कि रणनीतियों का संयोजन या तो कोड कवरेज या प्रति मिनट सही ढंग से उलटी शाखाओं की औसत संख्या बढ़ाने में मदद करता है। अन्य विन्यासों के विपरीत, दोनों रणनीतियों को एक साथ लागू करना इष्टतम है।</em>
</li><br/>
<li>
<b>ग्रेबॉक्स प्रोग्राम संश्लेषण: डेटाफ़्लो अस्पष्टता पर हमला करने का एक नया दृष्टिकोण</b><br />
<b>वार्ता स्थल</b>: Blackhat USA, Las Vegas, Nevada, 2021. [<a href="publications/BHUSA2021-David-Greybox-Program-Synthesis.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Robin David<br />
<b>सारांश</b>: <em>यह वार्ता अस्पष्टीकरण के लिए लागू प्रोग्राम संश्लेषण में नवीनतम प्रगति प्रस्तुत करती है। इसका उद्देश्य यह दिखाकर इस विश्लेषण तकनीक को रहस्यमुक्त करना है कि इसे अस्पष्टता पर कैसे कार्यान्वित किया जा सकता है। विशेष रूप से, इस वार्ता के लिए जारी Qsynthesis कार्यान्वयन बाइनरी में पुनः असेंबल किए गए अनुकूलित (अस्पष्टीकृत) निर्देशों में वापस असेंबली निर्देशों को अस्पष्टीकृत करने के लिए एक पूर्ण एंड-टू-एंड वर्कफ़्लो दिखाता है।</em>
</li><br/>
<li>
<b>स्रोत कोड से क्रैश टेस्ट-केस तक सॉफ्टवेयर परीक्षण स्वचालन के माध्यम से</b><br />
<b>वार्ता स्थल</b>: C&ESAR, Rennes, France, 2021. [<a href="publications/CESAR2021_robin-david-paper.pdf">पेपर</a>] [<a href="publications/CESAR2021_robin-david-slide.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Robin David, Jonathan Salwan, Justin Bourroux<br />
<b>सारांश</b>: <em>यह पेपर एक ऐसा दृष्टिकोण प्रस्तुत करता है जो स्रोत कोड से लेकर संकलित प्रोग्राम के गतिशील परीक्षण तक सॉफ्टवेयर परीक्षण प्रक्रिया को स्वचालित करता है। अधिक विशेष रूप से, स्रोत पंक्तियों पर अलर्ट दर्शाने वाली एक स्थिर विश्लेषण रिपोर्ट से, यह गतिशील रूप से और अवसरवादी तरीके से इन पंक्तियों को कवर करने के लिए परीक्षण को सक्षम बनाता है और जाँचता है कि क्या वे क्रैश ट्रिगर कर सकते हैं। परिणाम एक परीक्षण कॉर्पस है जो अलर्ट को कवर करने और यदि वे वास्तविक सकारात्मक हैं तो उन्हें ट्रिगर करने की अनुमति देता है। यह पेपर संकलित बाइनरी में अलर्ट को ट्रैक करने के लिए नियोजित पद्धति, परीक्षण इंजन चयन प्रक्रिया और एम्बेडेड और IoT सिस्टम के लिए TCP/IP स्टैक कार्यान्वयन पर प्राप्त परिणामों पर चर्चा करता है।</em>
</li><br/>
<li>
<b>प्रतीकात्मक सुरक्षा विधेय: कार्यक्रम की कमजोरियों का शिकार करें</b><br />
<b>वार्ता स्थल</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2021. [<a href="publications/ISPOPEN2021-security-predicates-vishnyakov.pdf">पेपर</a>] [<a href="publications/ISPOPEN2021-slide-security-predicates-vishnyakov.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: A.Vishnyakov, V.Logunova, E.Kobrin, D.Kuts, D.Parygina, A.Fedotov<br />
<b>सारांश</b>: <em>गतिशील प्रतीकात्मक निष्पादन (DSE) हाइब्रिड फ़ज़िंग और स्वचालित बग पहचान के दौरान पथ अन्वेषण के लिए एक शक्तिशाली विधि है। हम अपरिभाषित व्यवहार और मेमोरी एक्सेस उल्लंघन त्रुटियों का प्रभावी ढंग से पता लगाने के लिए सुरक्षा विधेय प्रस्तावित करते हैं। प्रारंभ में, हम उन पथों पर प्रोग्राम को प्रतीकात्मक रूप से निष्पादित करते हैं जो कोई त्रुटि ट्रिगर नहीं करते (हाइब्रिड फ़ज़िंग इन पथों का अन्वेषण कर सकती है)। फिर हम कुछ त्रुटि स्थिति को सत्यापित करने के लिए एक प्रतीकात्मक सुरक्षा विधेय बनाते हैं। इस प्रकार, हम शून्य पॉइंटर डिरेफरेंस, शून्य से भाग, सीमा से बाहर पहुँच, या पूर्णांक अतिप्रवाह कमजोरियों को उत्पन्न करने के लिए प्रोग्राम डेटा प्रवाह बदल सकते हैं। स्थिर विश्लेषण के विपरीत, गतिशील प्रतीकात्मक निष्पादन न केवल त्रुटियों की रिपोर्ट करता है बल्कि उन्हें पुन: उत्पन्न करने के लिए नया इनपुट डेटा भी उत्पन्न करता है। इसके अलावा, हम सामान्य C/C++ मानक पुस्तकालय कार्यों के लिए फ़ंक्शन सिमैंटिक्स मॉडलिंग प्रस्तुत करते हैं। हमारा लक्ष्य एकल प्रतीकात्मक सूत्र के साथ फ़ंक्शन के अंदर नियंत्रण प्रवाह को मॉडल करना है। यह बग पहचान में सहायता करता है, पथ अन्वेषण को गति देता है, और पथ विधेय में अधिबाधाओं को दूर करता है। हम प्रस्तावित तकनीकों को अपने गतिशील प्रतीकात्मक निष्पादन उपकरण Sydr में लागू करते हैं। इस प्रकार, हम Sydr से शक्तिशाली विधियों जैसे पथ विधेय स्लाइसिंग का उपयोग करते हैं जो अप्रासंगिक बाधाओं को समाप्त करता है।
हम गतिशील बग पहचान उपकरणों की सटीकता मापने के लिए Juliet Dynamic प्रस्तुत करते हैं। परीक्षण प्रणाली यह भी सत्यापित करती है कि उत्पन्न इनपुट सैनिटाइज़र को ट्रिगर करते हैं। हम Juliet परीक्षण सूट से 11 CWE के लिए Sydr सटीकता का मूल्यांकन करते हैं। Sydr 95.59% समग्र सटीकता दिखाता है। हम परिणामों की पुनरुत्पादनशीलता को सुविधाजनक बनाने के लिए Sydr मूल्यांकन आर्टिफैक्ट्स को सार्वजनिक रूप से उपलब्ध कराते हैं।</em>
</li><br/>
<li>
<b>गतिशील प्रतीकात्मक निष्पादन में प्रतीकात्मक पॉइंटर तर्क की ओर</b><br />
<b>वार्ता स्थल</b>: Ivannikov Memorial Workshop, Nizhny Novgorod, Russia, 2021. [<a href="publications/IVMEM2021-symbolic-pointers-kuts.pdf">पेपर</a>] [<a href="publications/IVMEM2021-slide-symbolic-pointers-kuts.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Daniil Kuts<br />
<b>सारांश</b>: <em>गतिशील प्रतीकात्मक निष्पादन स्वचालित सॉफ्टवेयर परीक्षण के लिए व्यापक रूप से उपयोग की जाने वाली तकनीक है, जिसे निष्पादन पथों की खोज और प्रोग्राम त्रुटियों का पता लगाने के लिए डिज़ाइन किया गया है। हाल ही में एक हाइब्रिड दृष्टिकोण व्यापक हो गया है, जहाँ प्रतीकात्मक निष्पादन का मुख्य लक्ष्य फ़ज़र को प्रोग्राम कवरेज बढ़ाने में मदद करना है। प्रतीकात्मक निष्पादक जितनी अधिक शाखाओं को उलट सकता है, वह फ़ज़र के लिए उतना ही उपयोगी होता है। एक प्रोग्राम नियंत्रण प्रवाह अक्सर मेमोरी मानों पर निर्भर करता है, जो उपयोगकर्ता इनपुट से एड्रेस इंडेक्स की गणना करके प्राप्त किए जाते हैं। हालाँकि, अधिकांश DSE उपकरण ऐसी निर्भरताओं का समर्थन नहीं करते, इसलिए वे कुछ वांछित प्रोग्राम शाखाओं से चूक जाते हैं। हम अपने गतिशील प्रतीकात्मक निष्पादन उपकरण Sydr में मेमोरी रीड पर प्रतीकात्मक एड्रेस तर्क लागू करते हैं। संभावित मेमोरी एक्सेस क्षेत्रों को या तो मेमोरी एड्रेस प्रतीकात्मक अभिव्यक्तियों का विश्लेषण करके, या SMT-सॉल्वर के साथ बाइनरी खोज द्वारा निर्धारित किया जाता है। हम मेमोरी एक्सेस को मॉडल करने के लिए एक उन्नत रेखीयकरण तकनीक प्रस्तावित करते हैं। विभिन्न मेमोरी मॉडलिंग विधियों की तुलना प्रोग्रामों के सेट पर की जाती है। हमारा मूल्यांकन दर्शाता है कि प्रतीकात्मक एड्रेस हैंडलिंग नई प्रतीकात्मक शाखाओं की खोज करने और प्रोग्राम कवरेज बढ़ाने की अनुमति देती है।</em>
</li><br/>
<li>
<b>QSynth: बाइनरी कोड अस्पष्टीकरण के लिए प्रोग्राम संश्लेषण-आधारित दृष्टिकोण</b><br />
<b>वार्ता स्थल</b>: BAR, San Diego, California, 2020. [<a href="publications/BAR2020-qsynth-robin-david.pdf">पेपर</a>]<br />
<b>लेखक</b>: Robin David, Luigi Coniglio, Mariano Ceccato<br />
<b>सारांश</b>: <em>हम DSE और प्रोग्राम संश्लेषण दोनों का लाभ उठाने वाला एक सामान्य दृष्टिकोण प्रस्तुत करते हैं जो मिक्स्ड-बूलियन-अरिथमेटिक, डेटा-एन्कोडिंग या वर्चुअलाइज़ेशन के साथ अस्पष्ट किए गए प्रोग्रामों को सफलतापूर्वक संश्लेषित करने में सक्षम है। प्रस्तावित संश्लेषण एल्गोरिदम एक ऑफलाइन गणना संश्लेषण प्राइमिटिव है जो टॉप-डाउन ब्रेथ-फर्स्ट सर्च द्वारा निर्देशित है। हम एक अत्याधुनिक अस्पष्टीकर्ता के विरुद्ध इसकी प्रभावशीलता और इसकी स्केलेबिलिटी दिखाते हैं क्योंकि यह संश्लेषण पर आधारित अन्य समान दृष्टिकोणों से बेहतर प्रदर्शन करता है। हम मिश्रित अस्पष्टता (विभिन्न तकनीकों का संयोजन) की उपस्थिति में भी इसकी प्रभावशीलता दिखाते हैं। यह चल रहा कार्य कुछ प्रकार की अस्पष्टताओं को लक्षित करने में संश्लेषण की प्रभावशीलता को उजागर करता है और अधिक मजबूत एल्गोरिदम और सरलीकरण रणनीतियों के लिए मार्ग खोलता है।</em>
</li><br/>
<li>
<b>Sydr: अत्याधुनिक गतिशील प्रतीकात्मक निष्पादन</b><br />
<b>वार्ता स्थल</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2020. [<a href="publications/ISPRAS2020-sydr.pdf">पेपर</a>] [<a href="publications/ISPOPEN2020-slide-sydr-vishnyakov.pdf">स्लाइड</a>] [<a href="https://www.ispras.ru/conf/2020/video/compiler-technology-11-december.mp4#t=6021">वीडियो</a>]<br />
<b>लेखक</b>: A.Vishnyakov, A.Fedotov, D.Kuts, A.Novikov, D.Parygina, E.Kobrin, V.Logunova, P.Belecky, S.Kurmangaleev<br />
<b>सारांश</b>: <em>गतिशील प्रतीकात्मक निष्पादन (DSE) के कंप्यूटर सुरक्षा (फ़ज़िंग, भेद्यता खोज, रिवर्स-इंजीनियरिंग, आदि) में अत्यधिक अनुप्रयोग हैं। हम गतिशील प्रतीकात्मक निष्पादन के लिए कई प्रदर्शन और सटीकता सुधार प्रस्तावित करते हैं। गैर-प्रतीकात्मक निर्देशों को छोड़ने से पथ विधेय को 1.2–3.5 गुना तेजी से बनाने की अनुमति मिलती है। प्रतीकात्मक इंजन प्रतीकात्मक निष्पादन के दौरान सूत्रों को सरल बनाता है। पथ विधेय स्लाइसिंग सॉल्वर क्वेरी से अप्रासंगिक संयोजकों को समाप्त करती है। हम प्रत्येक जंप टेबल (switch स्टेटमेंट) को कई शाखाओं के रूप में संभालते हैं और मल्टी-थ्रेडेड प्रोग्रामों के प्रतीकात्मक निष्पादन के लिए विधि का वर्णन करते हैं। प्रस्तावित समाधान Sydr टूल में लागू किए गए। Sydr पथ विधेय में शाखाओं का उत्क्रमण करता है। Sydr DynamoRIO गतिशील बाइनरी इंस्ट्रुमेंटेशन टूल को Triton प्रतीकात्मक इंजन के साथ जोड़ता है।</em>
</li><br/>
<li>
<b>प्रतीकात्मक अस्पष्टीकरण: वर्चुअलाइज़्ड कोड से वापस मूल कोड तक</b><br />
<b>वार्ता स्थल</b>: DIMVA, Paris-Saclay, France, 2018. [<a href="publications/DIMVA2018-deobfuscation-salwan-bardin-potet.pdf">पेपर</a>] [<a href="publications/DIMVA2018-slide-deobfuscation-salwan-bardin-potet.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet<br />
<b>सारांश</b>: <em>पिछले दशक में सॉफ्टवेयर संरक्षण ने एक महत्वपूर्ण स्थान ले लिया है ताकि वैध सॉफ्टवेयर को रिवर्स इंजीनियरिंग या छेड़छाड़ से बचाया जा सके। वर्चुअलाइज़ेशन को ऐसे हमलों के विरुद्ध सबसे अच्छी सुरक्षा में से एक माना जाता है। हम प्रतीकात्मक पथ अन्वेषण, टेंट (taint) और पुनर्संकलन पर आधारित एक सामान्य दृष्टिकोण प्रस्तुत करते हैं जो एक वर्चुअलाइज़्ड कोड से एक डिवर्चुअलाइज़्ड कोड को पुनर्प्राप्त करने की अनुमति देता है जो मूल कोड के समानार्थक है और आकार में करीब है। हम डिओबफस्केटेड परिणामों की शुद्धता और सटीकता के संदर्भ में प्रासंगिकता का मूल्यांकन करने के लिए मानदंड और मीट्रिक परिभाषित करते हैं। अंत में, हम एक ओपन-सोर्स सेटअप प्रस्तावित करते हैं जो वर्चुअलाइज़ेशन के कई रूपों के विरुद्ध प्रस्तावित दृष्टिकोण का मूल्यांकन करने की अनुमति देता है।</em>
</li><br/>
<li>
<b>VM-आधारित सॉफ्टवेयर सुरक्षा का अस्पष्टीकरण</b><br />
<b>वार्ता स्थल</b>: SSTIC, Rennes, France, 2017. [<a href="publications/SSTIC2017-French-Article-desobfuscation_binaire_reconstruction_de_fonctions_virtualisees-salwan_potet_bardin.pdf">फ्रेंच पेपर</a>] [<a href="publications/SSTIC2017_Deobfuscation_of_VM_based_software_protection.pdf">अंग्रेज़ी स्लाइड</a>] [<a href="https://static.sstic.org/videos2017/SSTIC_2017-06-07_P08.mp4">फ्रेंच वीडियो</a>]<br />
<b>लेखक</b>: Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet<br />
<b>सारांश</b>: <em>इस प्रस्तुति में हम एक ऐसा दृष्टिकोण वर्णित करते हैं जिसमें वर्चुअल मशीन-आधारित सॉफ्टवेयर सुरक्षाओं का स्वचालित रूप से विश्लेषण किया जाता है और बिना ऐसी सुरक्षाओं के बाइनरी का एक नया संस्करण पुनः संकलित किया जाता है। यह स्वचालित दृष्टिकोण एक टेंट विश्लेषण और कुछ कंक्रिटाइज़ेशन नीतियों द्वारा निर्देशित प्रतीकात्मक निष्पादन पर निर्भर करता है, फिर LLVM संक्रमण का उपयोग करके बाइनरी पुनर्लेखन पर निर्भर करता है।</em>
</li><br/>
<li>
<b>वर्चुअल मशीन-आधारित सॉफ्टवेयर सुरक्षाओं को रिवर्स करने में Triton कैसे मदद कर सकता है</b><br />
<b>वार्ता स्थल</b>: CSAW SOS, NYC, New York, 2016. [<a href="publications/CSAW2016-SOS-Virtual-Machine-Deobfuscation-RThomas_JSalwan.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Jonathan Salwan, Romain Thomas<br />
<b>सारांश</b>: <em>वार्ता का पहला भाग Triton फ्रेमवर्क का परिचय होगा ताकि इसके घटकों को उजागर किया जा सके और यह समझाया जा सके कि वे एक साथ कैसे काम करते हैं। फिर, दूसरे भाग में प्रदर्शन शामिल होंगे कि टेंट विश्लेषण, प्रतीकात्मक निष्पादन, SMT सरलीकरण और LLVM-IR ऑप्टिमाइज़ेशन का उपयोग करके वर्चुअल मशीन-आधारित सुरक्षाओं को रिवर्स करना कैसे संभव है।</em>
</li><br/>
<li>
<b>गतिशील बाइनरी विश्लेषण और अस्पष्ट कोड</b><br />
<b>वार्ता स्थल</b>: St'Hack, Bordeaux, France, 2016. [<a href="publications/StHack2016_Dynamic_Binary_Analysis_and_Obfuscated_Codes_RThomas_JSalwan.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Jonathan Salwan, Romain Thomas<br />
<b>सारांश</b>: <em>इस प्रस्तुति में हम चर्चा करेंगे कि कैसे एक DBA (गतिशील बाइनरी विश्लेषण) एक रिवर्स इंजीनियर को अस्पष्ट कोड को रिवर्स करने में मदद कर सकता है। हम पहले कुछ बुनियादी अस्पष्टता तकनीकों का परिचय देंगे और फिर इस बात को उजागर करेंगे कि कैसे कुछ चीजों को तोड़ना संभव है (हमारे ओपन-सोर्स DBA फ्रेमवर्क - Triton का उपयोग करके) जैसे अपारदर्शी विधेय का पता लगाना, CFG का पुनर्निर्माण करना, मूल एल्गोरिदम ढूंढना, संवेदनशील डेटा को अलग करना और भी बहुत कुछ... फिर, हम एक डेमो और हमारे भविष्य के काम के बारे में कुछ शब्दों के साथ समाप्त करेंगे।</em>
</li><br/>
<li>
<b>अस्पष्ट बाइनरीज़ के विश्लेषण में Triton कैसे मदद कर सकता है</b><br />
<b>प्रकाशन</b>: MISC पत्रिका 82, 2015. [<a href="publications/MISC-82_French_Paper_How_Triton_may_help_to_analyse_obfuscated_binaries_RThomas_JSalwan.pdf">फ्रेंच लेख</a>]<br />
<b>लेखक</b>: Jonathan Salwan, Romain Thomas<br />
<b>सारांश</b>: <em>बाइनरी अस्पष्टता का उपयोग सॉफ्टवेयर की बौद्धिक संपदा की रक्षा के लिए किया जाता है। विभिन्न प्रकार की अस्पष्टताएँ मौजूद हैं, लेकिन मोटे तौर पर, यह एक बाइनरी संरचना को दूसरी बाइनरी संरचना में परिवर्तित करती है जबकि समान शब्दार्थ को संरक्षित करती है। अस्पष्टता का उद्देश्य यह सुनिश्चित करना है कि मूल जानकारी बेकार जानकारी में "डूब" जाए जो रिवर्स इंजीनियरिंग को कठिन बना देगी। इस लेख में हम दिखाएंगे कि कैसे हम Triton फ्रेमवर्क का उपयोग करके एक अस्पष्ट प्रोग्राम का विश्लेषण कर सकते हैं और कुछ अस्पष्टताओं को तोड़ सकते हैं।</em>
</li><br/>
<li>
<b>Triton: एक कंकोलिक निष्पादन ढाँचा</b><br />
<b>वार्ता स्थल</b>: SSTIC, Rennes, France, 2015. [<a href="publications/SSTIC2015_French_Paper_Triton_Framework_dexecution_Concolique_FSaudel_JSalwan.pdf">फ्रेंच पेपर</a>] [<a href="publications/SSTIC2015_English_slide_detailed_version_Triton_Concolic_Execution_FrameWork_FSaudel_JSalwan.pdf">विस्तृत अंग्रेज़ी स्लाइड</a>] <br />
<b>लेखक</b>: Jonathan Salwan, Florent Saudel<br />
<b>सारांश</b>: <em>यह वार्ता Triton के रिलीज़ के बारे में है, जो Pin पर आधारित एक कंकोलिक निष्पादन ढाँचा है। यह एक टेंट इंजन, एक गतिशील प्रतीकात्मक निष्पादन इंजन, एक स्नैपशॉट इंजन, x64 निर्देशों का SMT2 में अनुवाद, बाधाओं को हल करने के लिए एक Z3 इंटरफ़ेस और Python बाइंडिंग जैसे घटक प्रदान करता है। इन घटकों के आधार पर, Triton भेद्यता अनुसंधान या रिवर्स-इंजीनियरिंग सहायता के लिए उपकरण बनाने की संभावना प्रदान करता है।</em>
</li><br/>
<li>
<b>बाइनरी इंस्ट्रुमेंटेशन का उपयोग करके गतिशील व्यवहार विश्लेषण</b><br />
<b>वार्ता स्थल</b>: St'Hack, Bordeaux, France, 2015. [<a href="publications/StHack2015_Dynamic_Behavior_Analysis_using_Binary_Instrumentation_Jonathan_Salwan.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Jonathan Salwan<br />
<b>सारांश</b>: <em>यह वार्ता SecurityDay में हमारी वार्ता के भाग 2 की तरह मानी जा सकती है। पिछले भाग में, हमने बात की थी कि DSE (गतिशील प्रतीकात्मक निष्पादन) दृष्टिकोण का उपयोग करके मेमोरी में एक लक्षित फ़ंक्शन को कवर करना कैसे संभव था। किसी फ़ंक्शन (या उसकी अवस्थाओं) को कवर करने का मतलब सभी भेद्यताएँ खोजना नहीं है, कुछ भेद्यताएँ प्रोग्राम को क्रैश नहीं करती हैं। इसलिए हमें विशिष्ट बग खोजने के लिए विशिष्ट विश्लेषण लागू करना चाहिए। ये विश्लेषण बाइनरी इंस्ट्रुमेंटेशन और प्रोग्राम के रनटाइम व्यवहार विश्लेषण पर आधारित हैं। इस वार्ता में, हम देखेंगे कि निम्नलिखित प्रकार के बग ढूंढना कैसे संभव है: off-by-one, stack/heap overflow, use-after-free, format string और {write, read}-what-where।</em>
</li><br/>
<li>
<b>गतिशील प्रतीकात्मक निष्पादन दृष्टिकोण का उपयोग करके एक फ़ंक्शन को कवर करना</b><br />
<b>वार्ता स्थल</b>: Security Day, Lille, France, 2015. [<a href="publications/SecurityDay2015_dynamic_symbolic_execution_Jonathan_Salwan.pdf">स्लाइड</a>]<br />
<b>लेखक</b>: Jonathan Salwan<br />
<b>सारांश</b>: <em>यह वार्ता बाइनरी विश्लेषण और इंस्ट्रुमेंटेशन के बारे में है। हम देखेंगे कि कैसे एक विशिष्ट फ़ंक्शन को लक्षित करना, फ़ंक्शन से पहले संदर्भ मेमोरी/रजिस्टर का स्नैपशॉट लेना, इंस्ट्रुमेंटेशन को एक मध्यवर्ती प्रतिनिधित्व में अनुवाद करना, इस IR पर आधारित एक टेंट विश्लेषण लागू करना, गतिशील प्रतीकात्मक निष्पादन (DSE) के लिए सूत्र बनाना/रखना, एक विशिष्ट पथ से गुजरने के लिए एक कंक्रीट मान उत्पन्न करना, संदर्भ मेमोरी/रजिस्टर को पुनर्स्थापित करना और दूसरे पथ से गुज़रने के लिए एक और कंक्रीट मान उत्पन्न करना, फिर इस ऑपरेशन को तब तक दोहराना संभव है जब तक लक्षित फ़ंक्शन कवर न हो जाए।</em>
</li>
</ul>
## ट्राइटन को उद्धृत करें```latex
@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},
}