Triton 은 동적 이진 분석 라이브러리입니다. 프로그램 분석 도구를 구축하거나 리버스 엔지니어링을 자동화하거나 소프트웨어 검증을 수행하거나 코드를 모방 할 수있는 내부 구성 요소를 제공합니다.
- 동적 상징적 실행
- 동적 오염 분석
- X86 , X86-64 , ARM32 , AARCH64 및 RISC-V 32/64 ISA 시맨틱의 AST 표현
- 표현 합성
- SMT 단순화 통과
- Z3 및 뒤로 LLVM 으로 들어 올립니다
- Z3 및 Bitwuzla 에 대한 SMT 솔버 인터페이스
- C ++ 및 Python API
Triton 은 일종의 시간제 프로젝트이므로, 완전히 신뢰할 수 없다면 우리를 비난하지 마십시오 . 열린 문제 또는 풀 요청은 항상 트롤링보다 낫습니다 =). 그러나 Twitter @QB_Triton의 개발을 따라갈 수 있습니다.
빠른 시작
- 설치
- 파이썬 API
- C ++ API
- 파이썬 예제
- 그들은 이미 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' 설치하다
Triton은 다음의 종속성에 의존합니다.
* 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
리눅스와 마코
$ git clone https://github.com/JonathanSalwan/Triton
$ cd Triton
$ mkdir build ; cd build
$ cmake ..
$ make -j3
$ sudo make install
기본적으로 LLVM 및 Bitwuzla는 컴파일되지 않습니다. Triton의 전체 힘을 즐기고 싶다면 CMAKE 컴파일은 다음과 같습니다.
$ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH= $( llvm-config --prefix ) -DBITWUZLA_INTERFACE=ON ..
MacOS M1 참고 :
컴파일 오류가 발생하는 경우 :
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
특정 Python 버전을 위해 PYTHON_EXECUTABLE , PYTHON_LIBRARIES 및 PYTHON_INCLUDE_DIRS 지정하십시오.
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/
.. 이 스 니펫에서 얻을 수있는이 정보는 다음과 같습니다.
from sysconfig import get_paths
info = get_paths ()
print ( info )
창
cmake를 사용하여 libtriton의 .sln 파일을 생성 할 수 있습니다.
> 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" ..
그러나 사전 컴파일 된 라이브러리를 직접 다운로드하려면 Appveyor의 인공물을 확인하십시오. Appveyor의 인공물을 사용하는 경우 Visual Studio 2012를 위해 Visual C ++ 재분배 가능한 패키지를 설치해야 할 것입니다.
VCPKG에서 설치
VCPKG의 Triton Port는 Microsoft 팀원 및 커뮤니티 기고자가 최신 상태로 유지됩니다. vcpkg의 URL은 https://github.com/microsoft/vcpkg입니다. VCPKG 종속성 관리자를 사용하여 Triton을 다운로드하여 설치할 수 있습니다.
$ 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 저장소에서 문제를 만들거나 요청을 가져 오십시오.
기고자
- Alberto Garcia Illera- 크루즈 자동화
- Alexey Vishnyakov -ISP RAS
- 검은 색 바이너리 -N/A.
- Christian Heitman -Quarkslab
- Daniil Kuts -ISP RAS
- Jessy Campos -N/A.
- Matteo F. -N/A.
- Pierrick Brunet -Quarkslab
- 픽셀릭 -N/A.
- Romain Thomas -Quarkslab
- 그리고 더 많은
그들은 이미 Triton을 사용했습니다
도구
- Exrop : 자동 로프 체인 생성.
- PIMP : Concolic Execution 및 Total Control을위한 Triton 기반 R2 플러그인.
- PONCE : IDA 2016 플러그인 콘테스트 수상자! 상징적 실행을 한 번 클릭하십시오!
- Qsynthesis : Greybox Synthesizer는 어셈블리 지침의 탈환을위한 장비입니다.
- Tritondse : 로딩 및 탐사 기능이있는 Triton 기반 DSE 라이브러리.
- 타이탄 : 타이탄은 Triton을 사용하는 VMProtect Devirtualizer입니다.
논문과 회의
- Sydr-Fuzz : 보안 개발 수명주기를위한 연속 하이브리드 퍼징 및 동적 분석
대화 : Ivannikov ISP RAS Open Conference, Moscow, Russia, 2022. [종이] [슬라이드]
저자 : Vishnyakov A., Kuts D., Logunova V., Parygina D., Kobrin E., Savidov G., Fedotov A.
초록 : 오늘날 지속적인 테스트를위한 자동화 된 동적 분석 프레임 워크는 소프트웨어 안전을 보장하고 SDL (Security Development Lifecycle) 요구 사항을 충족시키기 위해 수요가 높습니다. 최첨단 하이브리드 퍼지 기술의 보안 버그 사냥 효율은 널리 사용 된 커버리지 유도 퍼지를 능가합니다. 하이브리드 퍼징을 기반으로 자동화 된 버그 감지의 생산성을 활용하기 위해 향상된 동적 분석 파이프 라인을 제안합니다. 우리는 하이브리드 퍼징 오케스트레이터로 구동되는 연속 퍼징 도구 세트 시드 퍼지에서 제안 된 파이프 라인을 구현하여 DSE 도구 시드를 Libfuzzer 및 AFL ++와 통합합니다. Sydr-Fuzz는 또한 보안 술어 검사기, 충돌 트라이닝 도구 CASR 및 코퍼스 최소화 및 커버리지 수집을위한 유틸리티를 통합합니다. 대체 최첨단 솔루션에 대한 하이브리드 퍼즐의 벤치마킹은 고급 하이브리드 퍼저와 동일한 수준으로 유지하면서 적용 범위 유도 퍼지보다 우수성을 보여줍니다. 또한 OSS-Sydr-Fuzz 프로젝트 내에서 85 개의 새로운 실제 소프트웨어 결함을 발견하여 접근 방식의 관련성을 승인합니다. 마지막으로, 우리는 기존 충돌의 검사를 용이하게하기 위해 커뮤니티에 CASR 소스 코드를 열었습니다.
- 역동적 인 상징적 실행을위한 강력한 낙관적 해결
Talk : Ivannikov Memorial Workshop, Kazan, Russia, 2022. [종이] [슬라이드]
저자 : Parygina D., Vishnyakov A., Fedotov A.
초록 : DSE (Dynamic Symbolic Execution)는 자동화 된 프로그램 테스트 및 버그 탐지를위한 효과적인 방법입니다. 하이브리드 퍼징 동안 복잡한 지점 탐색에 의한 코드 커버리지가 증가하고 있습니다. DSE 도구는 일부 실행 경로를 따라 분기를 뒤집고 퍼즐이 이전에 사용할 수없는 프로그램 부품을 검사하도록 도와줍니다. DSE는 종종 과도한 제약 문제에 직면합니다. 첫 번째는 상당한 분석 합병증으로 이어지고 두 번째는 부정확 한 상징적 실행을 유발합니다. 우리는 대상 분기 역전에 대한 관련없는 경로 술어 제약을 제거하는 강력한 낙관적 해결 방법을 제안합니다. 우리는 대상 분기가 의존하지 않는 이러한 상징적 제약을 제거합니다. 또한, 우리는 부모 브랜치 범위를 넘어 통제권을 전달하는 제어 전송 지침 (예 : 리턴, goto, break 등)을 별도로 처리합니다. 동적 상징적 실행 도구 시드에서 제안 된 방법을 구현합니다. 우리는 강력한 낙관적 전략, 마지막 제약 부정만을 포함하는 낙관적 전략 및 그 조합을 평가합니다. 결과는 전략 조합이 코드 커버리지 또는 1 분당 올바르게 반전 된 분기의 평균 수를 늘리는 데 도움이된다는 것을 보여줍니다. 다른 구성과 대조적으로 두 전략을 함께 적용하는 것이 최적입니다.
- 그레이 박스 프로그램 합성 : 데이터 흐름 난독 화 공격에 대한 새로운 접근 방식
대화 : Blackhat USA, 라스 베이거스, 네바다, 2021. [슬라이드]
저자 : 로빈 데이비드
초록 : 이 대화는 Deobfuscation에 적용되는 프로그램 합성의 최신 발전을 제시합니다. 그것은 난독 화에 어떻게 행동 할 수 있는지 보여 줌으로써이 분석 기술을 해제하는 것을 목표로합니다. 특히이 토크를 위해 출시 된 구현 Qsynthesis는 최적화 된 (Deobfuscated) 지침으로 어셈블리 지침을 다시 삭제하기위한 완전한 엔드 투 엔드 워크 플로를 보여줍니다.
- 소스 코드에서 소프트웨어 테스트 자동화를 통해 충돌 테스트 케이스까지
대화 : C & Esar, Rennes, France, 2021. [종이] [슬라이드]
저자 : Robin David, Jonathan Salwan, Justin Bourroux
초록 : 이 백서는 소스 코드에서 컴파일 된 프로그램의 동적 테스트로 소프트웨어 테스트 프로세스를 자동화하는 접근 방식을 제시합니다. 보다 구체적으로, 소스 라인의 경고를 나타내는 정적 분석 보고서에서 테스트를 통해 이러한 라인을 동적으로 그리고 기회 적으로 커버하여 충돌을 유발할 수 있는지 여부를 확인할 수 있습니다. 결과는 테스트 코퍼스로 경고를 덮고 진정한 긍정적 인 경우 경보를 유발할 수 있습니다. 이 논문은 컴파일 된 바이너리, 테스트 엔진 선택 프로세스 및 임베디드 및 IoT 시스템에 대한 TCP/IP 스택 구현에서 얻은 결과를 추적하는 데 사용 된 방법론에 대해 논의합니다.
- 기호 보안 사전 : 사냥 프로그램 약점
대화 : Ivannikov ISP RAS Open Conference, Moscow, Russia, 2021. [종이] [슬라이드]
저자 : A.Vishnyakov, V.Logunova, E.Kobrin, D.Kuts, D.Parygina, A.Fedotov
초록 : DSE (Dynamic Symbolic Execution)는 하이브리드 퍼징 및 자동 버그 감지 중 경로 탐색을위한 강력한 방법입니다. 우리는 보안이 정의되지 않은 동작 및 메모리 액세스 위반 오류를 효과적으로 감지 할 것을 제안합니다. 처음에, 우리는 오류를 유발하지 않는 경로에서 프로그램을 상징적으로 실행합니다 (하이브리드 퍼징은 이러한 경로를 탐색 할 수 있음). 그런 다음 일부 오류 조건을 확인하기 위해 상징적 보안 술어를 구성합니다. 따라서 프로그램 데이터 흐름을 변경하여 NULL 포인터 단위, 구분을 0으로, 외부 접근성 또는 정수 오버플로 약점을 수반 할 수 있습니다. 정적 분석과 달리 동적 상징적 실행은 오류를보고 할뿐만 아니라 새로운 입력 데이터를 생성하여이를 재생산합니다. 또한 공통 C/C ++ 표준 라이브러리 기능에 대한 기능 시맨틱 모델링을 소개합니다. 우리는 단일 상징적 공식으로 함수 내부의 제어 흐름을 모델링하는 것을 목표로합니다. 이것은 버그 감지를 지원하고, 경로 탐색 속도를 높이고, 경로 술어에서 과도한 제약을 극복합니다. 우리는 동적 상징적 실행 도구 시드에서 제안 된 기술을 구현합니다. 따라서, 우리는 관련없는 제약을 제거하는 경로 미식 슬라이싱과 같은 시드의 강력한 방법을 사용합니다. 동적 버그 감지 도구 정확도를 측정하기 위해 Juliet Dynamic을 제시합니다. 테스트 시스템은 또한 생성 된 입력 소독제 트리거 소독제를 확인합니다. 우리는 줄리엣 테스트 스위트 (Juliet Test Suite)의 11 cwes에 대한 시드 정확도를 평가합니다. Sydr는 95.59%의 전체 정확도를 보여줍니다. 우리는 SYDR 평가 아티팩트를 공개적으로 이용할 수 있도록 결과 재현성을 촉진합니다.
- 동적 상징적 실행의 상징적 포인터 추론
대화 : Ivannikov Memorial Workshop, Nizhny Novgorod, Russia, 2021. [종이] [슬라이드]
저자 : Daniil Kuts
초록 : 동적 상징적 실행은 실행 경로 탐색 및 프로그램 오류 감지를 위해 설계된 자동화 된 소프트웨어 테스트에 널리 사용되는 기술입니다. 상징적 실행의 주요 목표는 퍼지가 프로그램 범위를 높이는 데 도움이 될 때 하이브리드 접근 방식이 최근 널리 퍼져 있습니다. 더 많은 지점 상징적 집행 인이 반전 될수록 퍼저에 더 유용합니다. 프로그램 제어 흐름은 종종 사용자 입력에서 주소 인덱스를 계산하여 얻은 메모리 값에 따라 다릅니다. 그러나 대부분의 DSE 도구는 그러한 종속성을 지원하지 않으므로 원하는 프로그램 지점을 놓치고 있습니다. 우리는 동적 상징적 실행 도구 시드에서 메모리 판독에 대한 기호 주소를 구현합니다. 가능한 메모리 액세스 영역은 메모리 주소 기호 표현식을 분석하거나 SMT-Solver를 사용한 이진 검색에 의해 결정됩니다. 메모리 액세스를 모델링하기 위해 향상된 선형화 기술을 제안합니다. 프로그램 세트에서 다른 메모리 모델링 방법을 비교합니다. 우리의 평가는 기호 주소 처리가 새로운 상징적 지점을 발견하고 프로그램 범위를 늘릴 수 있음을 보여줍니다.
- Qsynth : 이진 코드 deobfusccation을위한 프로그램 합성 기반 접근법
Talk at : Bar, San Diego, California, 2020. [종이]
저자 : Robin David, Luigi Coniglio, Mariano Ceccato
초록 : 우리는 혼합-부리-문화, 데이터 코딩 또는 가상화로 난독 화 된 프로그램을 성공적으로 합성하기 위해 DSE 및 프로그램 합성을 활용하는 일반적인 접근법을 제시합니다. 제안 된 합성 알고리즘은 하향식 호흡 우선 검색으로 인한 오프라인 열거 합성 원시 안내입니다. 우리는 최첨단 난독 진단제에 대한 효과와 합성에 기초하여 다른 유사한 접근법을 대체함에 따라 확장 성을 보여줍니다. 우리는 또한 복합 난독 화 (다양한 기술의 조합)의 존재 하에서 그 효과를 보여줍니다. 이 진행중인 연구는 특정 종류의 난독 화를 목표로하는 합성의 효과를 밝히고보다 강력한 알고리즘과 단순화 전략으로가는 길을 열어줍니다.
- Sydr : 최첨단 동적 상징적 실행
대화 : Ivannikov ISP RAS Open Conference, Moscow, Russia, 2020. [종이] [슬라이드] [비디오]
저자 : A.Vishnyakov, A.Fedotov, D.Kuts, A.Novikov, D.Parygina, E.Kobrin, V.Logunova, P.Belecky, S.Kurmangaleev
초록 : DSE (Dynamic Symbolic Execution)는 컴퓨터 보안 (퍼지, 취약성 검색, 리버스 엔지니어링 등)에서 엄청난 양의 응용 프로그램을 가지고 있습니다. 동적 상징적 실행을위한 몇 가지 성능과 정확성 개선을 제안합니다. 비 심의 지침을 건너 뛰면 경로 술어를 1.2--3.5 배 더 빠르게 구축 할 수 있습니다. 상징적 엔진은 기호 실행 중에 공식을 단순화합니다. 경로 미식 슬라이스는 솔버 쿼리에서 관련없는 관계를 제거합니다. 우리는 각 점프 테이블 (스위치 문)을 여러 분기로 처리하고 다중 스레드 프로그램의 상징적 실행 방법을 설명합니다. 제안 된 솔루션은 SYDR 도구로 구현되었습니다. 시드는 경로 술어에서 가지의 역전을 수행합니다. Sydr는 Dynamorio Dynamic Binary Instrumentation Tool과 Triton Symbolic Engine을 결합합니다.
- 기호 Deobfuscation : 가상화 된 코드에서 원본까지
대화 : Dimva, Paris-Saclay, France, 2018. [종이] [슬라이드]
저자 : Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet
초록 : 소프트웨어 보호는 지난 10 년 동안 역 엔지니어링 또는 변조로부터 합법적 인 소프트웨어를 보호하기 위해 중요한 자리를 차지했습니다. 가상화는 그러한 공격에 대한 최고의 방어 중 하나로 간주됩니다. 우리는 상징적 경로 탐색, 오염 및 재 컴파일을 기반으로 일반적인 접근법을 제시하여 가상화 된 코드에서 원래 코드와 동일하고 크기가 가까운 디바르 킹 코드를 복구 할 수 있습니다. 우리는 정확성과 정밀도 측면에서 deobfuscated 결과의 관련성을 평가하기 위해 기준과 지표를 정의합니다. 마지막으로 우리는 여러 형태의 가상화에 대한 제안 된 접근법을 평가할 수있는 오픈 소스 설정을 제안합니다.
- VM 기반 소프트웨어 보호의 탈수 방지
대화 : SSTIC, RENNES, FRANCE, 2017. [프랑스 신문] [영어 슬라이드] [프랑스 비디오]
저자 : Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet
초록 : 이 프레젠테이션에서 우리는 가상 머신 기반 소프트웨어 보호를 자동으로 분석하고 그러한 보호없이 새로운 버전의 이진을 다시 컴파일하는 접근법을 설명합니다. 이 자동화 된 접근 방식은 오염 분석 및 일부 구체화 정책에 의한 상징적 실행 안내서, LLVM 전환을 사용한 이진 재 작성에 의존합니다.
- Triton이 가상 머신 기반 소프트웨어 보호를 역전시키는 방법
대화 : CSAW SOS, NYC, New York, 2016. [슬라이드]
저자 : Jonathan Salwan, Romain Thomas
초록 : 토크의 첫 번째 부분은 Triton 프레임 워크에 대한 소개가 될 것이며 구성 요소를 노출시키고 어떻게 작동하는지 설명 할 것입니다. 그런 다음 두 번째 부분에는 오염 분석, 상징적 실행, SMT 단순화 및 LLVM-IR 최적화를 사용하여 가상 머신 기반 보호를 역전시킬 수있는 방법에 대한 데모가 포함됩니다.
- 동적 이진 분석 및 난독 화 코드
대화 : St'hack, Bordeaux, France, 2016. [슬라이드]
저자 : Jonathan Salwan, Romain Thomas
초록 : 이 프레젠테이션에서 우리는 DBA (Dynamic Binary Analysis)가 역 엔지니어가 난독 화 된 코드를 역전시키는 데 어떻게 도움이 될 수 있는지에 대해 이야기 할 것입니다. 우리는 먼저 몇 가지 기본 난독 화 기술을 소개 한 다음 불투명 한 곤경을 감지하고 CFG를 재구성하고, 원래 알고리즘을 찾고, 상당한 데이터를 분리하는 등 몇 가지 물건 (오픈 소스 DBA 프레임 워크 -Triton 사용)을 깨뜨릴 수있는 방법을 노출시킬 것입니다.
- Triton이 난독 화 된 이진을 분석하는 데 도움이되는 방법
출판물 : Misc Magazine 82, 2015. [프랑스 기사]
저자 : Jonathan Salwan, Romain Thomas
초록 : 이진 난독 화는 소프트웨어의 지적 재산을 보호하는 데 사용됩니다. 다른 종류의 난목은 존재하지만 대략적으로 이진 구조를 동일한 시맨틱을 보존함으로써 다른 이진 구조로 변형시킵니다. 난독 화의 목적은 리버스 엔지니어링을 더 어렵게 만드는 쓸모없는 정보에서 원래 정보가 "익사"하는 것입니다. 이 기사에서는 BUSCATED 프로그램을 분석하고 Triton Framework를 사용하여 일부 난독화물을 깨뜨릴 수있는 방법을 보여줍니다.
- Triton : Concolic Execution 프레임 워크
대화 : Sstic, Rennes, France, 2015. [프랑스 신문] [자세한 영어 슬라이드]
저자 : Jonathan Salwan, Florent Saudel
초록 : 이 대화는 PIN을 기반으로 한 콩릭 실행 프레임 워크 인 Triton의 출시에 관한 것입니다. 오 테인트 엔진, 동적 상징적 실행 엔진, 스냅 샷 엔진, X64 명령어 SMT2로의 변환, 제약 조건 및 파이썬 바인딩을 해결하기위한 Z3 인터페이스와 같은 구성 요소를 제공합니다. 이러한 구성 요소를 기반으로 Triton은 취약성 연구 또는 리버스 엔지니어링 지원을위한 도구를 구축 할 수 있습니다.
- 이진 계측을 사용한 동적 행동 분석
대화 : St'hack, Bordeaux, France, 2015. [슬라이드]
저자 : Jonathan Salwan
초록 : 이 대화는 Securityday에서 우리의 대화의 2 부처럼 간주 될 수 있습니다. 이전 부분에서, 우리는 DSE (Dynamic Symbolic Execution) 접근법을 사용하여 메모리에서 타겟팅 된 함수를 어떻게 다룰 수 있는지에 대해 이야기했습니다. 함수 (또는 그 상태)를 다루는 것은 모든 취약점을 찾는 것을 의미하지 않으며 일부 취약점은 프로그램에 충돌하지 않습니다. 그렇기 때문에 특정 버그를 찾기 위해 특정 분석을 구현해야합니다. 이 분석은 이진 계측 및 프로그램의 런타임 동작 분석을 기반으로합니다. 이 대화에서 우리는 다음과 같은 종류의 버그를 찾을 수있는 방법을 볼 수 있습니다 : 오프 바이, 스택 / 힙 오버플로, 사용이없고, 형식 문자열 및 {쓰기, 읽기}-where-
- 동적 상징적 실행 접근법을 사용하여 함수를 다룹니다
Talk : Security Day, Lille, France, 2015. [슬라이드]
저자 : Jonathan Salwan
초록 : 이 대화는 이진 분석 및 계측에 관한 것입니다. 우리는 특정 함수를 대상으로하고, 함수 전에 컨텍스트 메모리/레지스터를 스냅 샷을 찍고, 기기를 중간 표현으로 번역하고,이 IR을 기반으로 오염 된 분석을 적용하고, 동적 상징적 실행 (DSE)을 위해 공식을 구축/유지하고 특정 경로를 통과하기 위해 구체적인 가치를 생성하고 컨텍스트/레지스터를 복원 할 때까지 다른 경로를 생성 할 때까지 구체적인 값을 생성합니다.
트리톤을 인용하십시오
@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},
}