아모코
| 상태: | 개발 중 |
| 버전: | 2.9 (사전 3.0) |
| 의사: | http://amoco.readthedocs.io/en/latest/index.html |
설명
Amoco는 바이너리의 상징적 분석 전용 파이썬 패키지입니다.
기능 :
- 디코딩 지침을위한 일반적인 프레임 워크로, 새로운 아키텍처에 대한 지원을 구현하는 데 필요한 시간을 줄이기 위해 개발되었습니다. 예를 들어 대부분의 IA32 명령어 (범용)의 디코더는 800 줄 미만의 파이썬에 적합합니다. 전체 SPARCV8 RISC 디코더 (또는 ARM Thumb-1 세트)는 350 줄 미만으로 적합합니다. ARMV8 명령어 세트 디코더는 650 줄 미만입니다.
- 모든 명령의 의미를 설명하고 명령어 블록의 기능적 표현을 계산할 수있는 상징적 대수 모듈.
- 구체적 또는 상징적 값을 투명하게 처리 할 수있는 추상 메모리 모델 및 기타 시스템 의존적 기능을 제공하는 일반적인 실행 모델.
- 선형 스윕, 재귀 횡단 또는 경로 표지와 같은 일반적인 분해 기술을 구현하는 다양한 클래스는 SAT/SMT 솔버에 의존하여 제어 흐름 그래프를 발견하거나 DARE와 같은 기술을 구현하기 위해 경로/SMT 솔버에 의존하는 경로 표현과 같은 더 정교한 기술을 구현합니다 (Directed Autment Random Exploration).
- 다양한 일반 도우미 와 아치 의존적 예쁜 프린터가 맞춤형 룩앤필 구성을 허용합니다 (AT & T vs. Intel Syntax, Absolute vs. Relative Offsets, Decimal 또는 Hex Rightiates 등).
Amoco는 여전히 진행 중 입니다. 개발 지점에서 병합되거나보다 철저하게 구현 될 수있는 기능 목록은 TODO를 참조하십시오.
사용자 문서 및 API는 http://amoco.readthedocs.io/en/latest/index.html에서 찾을 수 있습니다

TODO
Amoco의 일부 구성 요소는 여전히 방출 지점으로 밀려나거나 추가 개발 중입니다. 더 정확하게 :
- x86 FPU 지침 시맨틱이 구현되지 않았으며
- Arm Simd, VFP, Neon, Trustzone, Jazelle 명령 세트는 구현되지 않았으며,
- 일부 솔버 기반 분해 전략은 아직 병합되지 않았습니다.
- IDB 가져 오기/내보내기 기능은 구현되지 않았습니다.
불완전하고 구현되지 않은 부품을 이행하기위한 기여를 환영합니다.
개발자 노트
기본 QT 스타일 시트는 뛰어난 QDARKSTYLESHEET에서 영감을 얻었으며 생성 된 RC_ICONS.py 모듈에서 제공하는 QRESOURCE API를 통해 대부분의 아이콘을 사용합니다.
<pyenv>/lib/python3. <x>/site -packages/pyside6/rcc -g python icons.qrc> rc_icons.py
특허
라이센스를 참조하십시오.
changelog
- v2.9.11
- 기본 UI 용어 엔진을 Pygments에서 Rich로 변경하십시오
- Emudata ORM 객체를 추가하여 에뮬레이터 상태를 저장하십시오
- Emul UI에 저장/복원 명령을 추가하십시오
- CallStack 로직을 구현하십시오
- Emul UI에 CallStack 프레임을 추가하십시오
- Emul UI에 디버그 명령을 추가하십시오
- Structs Pretty Printing의 StructView 클래스를 추가하십시오
- 수정 x86 mmu_cache 로직 (플러시 및 미스)
- CodeQL에서 Ruff로 기본 작업을 변경하십시오
- Ruff Checks를 기반으로 한 Refactor 코드
- v2.9.10
- x86 : 실제 모드 실행에 대한 지원을 추가하십시오
- x86 : 세분화/페이징에 대한 전체 지원을 추가하십시오
- BIOS 펌웨어 분석을 위해 Baremetal-X86 시스템을 추가하십시오
- iOS 'stubs를 정의하기 위해 새 Arch.io 모듈을 병합하십시오
- cas.blobs 모듈을 병합하십시오
- 빠른 버전의 Rep Stos/Lods/Scas/Movs를 추가하십시오
- Emul 클래스에서 TracePoint 메소드를 추가하십시오
- PE 자원에 대한 지원을 추가하십시오
- AMOCO 앱로드/EMUL 명령을 향상시킵니다
- EMUL UI에있을 때까지 세트, 디스플레이, Nexti를 추가하십시오
- v2.9.9
- PPC32 (E200) 아키텍처를 추가하십시오
- Coff Executable 형식에 대한 지원을 추가하십시오
- GDB 추적 파일에 Parser를 추가하십시오
- structs 서브 포장을 향상시킵니다
- v2.9.8
- Pyside6 (QT6)로 업데이트
- OLE2 형식을 추가하십시오
- 선택한 포인터 크기를 허용하도록 structs 서브 포장 업데이트
- AVR 아키텍처의 부분 업데이트
- v2.9.7
- 파이썬 <3.8 지원
- 비트 필드 지원 및 선택한 포인터 크기에 대한 필드의 오프셋 계산을위한 스트러크 패키지 향상 (32 또는 64 비트)
- v2.9.6
- QT GUI ImageView를 병합하십시오
- Entropy & Infoview를 사용하여 QT GUI BINFMTVIEW/HEXVIEW를 향상시킵니다
- 특정 mach-o보기를 추가하십시오
- QT UI Dark 모드에 대한 지원을 향상시킵니다
- Tricore 아키텍처를 추가하십시오
- W65C02 아키텍처를 추가하십시오
- WASM 아키텍처를 추가하십시오
- WASM 바이너리 형식 파서를 추가하십시오
- System.Structs 모듈을 패키지로 이동하십시오
- v2.9.5
- qt gui binfmtview/hexview를 병합하십시오
- 다양한 팔 지침의 디코더와 의미론을 수정하십시오
- 구조보기와 특정 엘프 및 PE보기를 추가하십시오
- QT UI Dark Mode에 대한 지원을 추가하십시오
- MIPS 로더를 추가하십시오
- 스트러크에 비트 필드 지지대를 추가하십시오
- v2.9.4
- MIPS_LE/SPARC/RISCV 용 Linux32 로더를 추가하십시오
- Win32/Win64 시스템 인터페이스를 업데이트하십시오
- 비 인터 로킹 파이프 라인에 대한 매퍼 지원을 추가하십시오
- MIPS R3000로드/스토어 지연 파이프 라인 효과를 수정하십시오
- Archview 클래스를 추가하십시오
- RISCV64 아키텍처 추가 (RISCV.RV64I)
- 사양에 대한 전제 조건 테스트를 추가하십시오
- 충돌을 피하기 위해 모든 아치 사양을 업데이트하십시오
- 다양한 아치 형식을 개선/수정하십시오
- x86 파서를 수정하십시오
- v2.9.3
- DBGUI EMUL 및 SRV 명령을 병합/업데이트하십시오
- 병합/업데이트 에뮬레이터 뷰
- PSX 시스템을 추가하십시오
- MIPS 아키텍처 추가 (R3000 만 해당)
- 구성 변경에 대한 지원을 향상시킵니다
- Ext/Stub 인터페이스를 재 작업하십시오
- SPARC Formatter 고정
- PE32+ DataDirectories 구문 분석 수정
- v2.9.2
- DBGUI와 병합을 준비하십시오
- 파이썬 2.7 지원
- 하위 포장/모듈 가져 오기 및 로깅을 재 작업합니다
- 다양한 코드 소독
- Blackified 출처
- v2.9.1
- Mach-O 로더 및 System.OSX Skeleton을 추가하십시오
- 에뮬레이터 모듈을 향상시킵니다
- 서버 및 기본 클라이언트 CMDCLI UI를 추가하십시오
- 다양한 오류/경고를 수정하십시오
- v2.9.0
- 에뮬레이터 모듈의 골격 추가 (Emul Class)
- 시스템 모듈을 하위 포장으로 재구성합니다
- 시스템, OS, 작업 및 정의 클래스를 추가하십시오
- AVR 아키텍처를 추가하십시오
- 수정 된 블록 클래스 =>지도 속성 CFG.Node 클래스로 이동
- System.Memory 모듈에서 메모리 클래스를 이동했습니다
- 'SA'서브 포장에서 CFG 분석 클래스를 이동했습니다
- 디버그 로그를 개선하십시오
- Amoco.structs 모듈로 PE/ELF 파서를 향상시킵니다
- ELF 클래스에 CheckSec 메소드를 추가하십시오
- ARMV7 의미 및 형식을 수정하십시오
- v2.6.3
- 난쟁이 아키텍처를 추가하십시오
- 엘프 로더를 업데이트하고 향상시킵니다
- 시프트+및 OPS에 대한 표현식 단순화를 향상시킵니다
- 가변 길이 구조 필드 클래스 "varfield"병합
- v2.6.2
- 스트러크 "슬로프"에 대한 지원 수정
- structs의 자체 정의 정렬을 허용합니다
- v2.6.1
- 기본적으로 기본 구조 크기/aligment를 사용하십시오
- v2.6.0
- V850 (E2S) 아키텍처를 추가하십시오
- SH2-A 아키텍처를 추가하십시오
- I.MX6 HAB 구조 분석에 대한 지원을 추가하십시오
- AVR 아키텍처를 병합하십시오
- 시스템/structs 클래스를 추가하십시오
- Amoco Tree에서 '크롤링'수출 (libclang c-to-structs)
- EBPF 지침 시맨틱을 추가하십시오
- (오래된) BPF 지침 사양에 대한 지원을 추가하십시오
- 16 진수/SREC 이진 형식에 대한 지원을 추가하십시오
- MemoryMap 'Merge'메소드를 추가하십시오
- CoreExec (에뮬레이터)에서 'step_instruction'메소드 추가
- UFS 구조에 대한 지원을 추가하십시오
- UI의 신호 디스패처 병합
- SetUptools 지원을 향상시킵니다
- Tox를 제거하고 Travis에만 의존하십시오
- ARMV7 지침 시맨틱 및 코드 도우미를 향상시킵니다
- ARMV7 명령어 사양 및 형식을 향상시킵니다
- 사양 트리 디버그 레벨 로깅을 추가하십시오
- Bigendian 변수 길이 명령어가있는 아치의 디코더를 수정하십시오
- 확장 된 페치의 지표로 디코더 효율성을 향상시킵니다
- SPARC, MSP430 명령 포맷터에 대한 Pygments 지원을 추가하십시오
- 표현이 넓어집니다
- 구성 모듈을 향상시킵니다
- v2.5.3
- 문제 #77의 완전한 수정 (전형적인 x64 광기)
- v2.5.2
- x64 아치의 LEA 교육 시맨틱과 관련된 문제 #77 (GitHub)의 부분 수정.
- v2.5.1
- RISC-V 아키텍처를 추가하십시오
- EBPF 아키텍처를 추가하십시오
- 지원되는 경우 대부분의 연산자에게 유니 코드 기호가있는 유니 코드 출력을 사용하십시오.
- RISCV 아키텍처가 필요로하는 UNSINSTED (LTU) 및 더 큰 정평적으로 디자인 된 (GEU) 연산자 추가
- comp 표현식에 대한 단순화 방법을 수정하십시오
- 'bitslice'옵션 매개 변수로 단순화 방법을 향상시킵니다
- 매퍼 메모리 인터페이스를 향상시킵니다
- smt model_to_mapper 메소드를 수정하십시오
- CFG 'DOT'형식 (기본) 출력을 추가하십시오
- ELF 및 PE 클래스에 'GetFileOffset'메소드를 추가하십시오
- Global Endianness 플래그를 제거하십시오
- GNU AS 및 Clang과 호환되는 x86/x64 형식 업데이트
- x86/x64 추가 지침 Semantics (Movnti, Wbinvd, Div, ...)
- 일부 x86/x64 희귀 지침 사양을 수정하십시오 (PMOVMSKB, ...)
- v2.5.0
- Python3 지원 (> = 3.5)
- 여러 CPU 아치로드 허용 (문제 #21 및 #64 수정)
- README 및 SPHINX DOCS를 업데이트하십시오
- v2.4.6
- Sphinx 문서 추가 (RST 파일 및 문서)
- 주요 클래스에 대한 기능 메소드를 추가하십시오
- 엘프 예쁜 인쇄를 개선하십시오
- ZODB 대신 SQLALCHEMY를 사용하도록 DB 모듈을 변경했습니다
- 모든 객체를 양도 가능하게 만듭니다 (가장 높은 프로토콜 포함)
- 새로운 X86 & X64 Formatters를 추가하십시오
- 많은 x64 사양과 의미론을 수정하십시오
- 성능 개선
- 단순화 MEM (VEC) 및 SLC (VEC) 향상
- '**'운영자에 대해 SLC.Simplify를 수정하십시오
- v2.4.5
- x86/x64 내부 '모드'선택기를 추가하십시오
- 레이블에 '랩'표현식을 추가하십시오
- 'grep'방법으로 MemoryZone/Map을 향상시킵니다
- 메모리 존을 개선하여 일부 주소로 "이동"할 수 있습니다
- X86 AT & T Formatter를 개선하십시오
- X64 디코더 테스트를 추가하십시오
- X64 RIP 관계 주소 지정 모드를 수정하십시오
- 많은 x64 사양을 수정하십시오
- X64 Packed-Instructions Semantics를 추가하십시오
- 다양한 x86 SSE 지침을 수정하십시오
- 다양한 X86 문제를 수정하십시오 (FISTTP/SETCC/PUSH IMM8/MOVQ)
- v2.4.4
- SSE 명령 의미를 추가하십시오
- 블록/func/xfunc 항목 클래스가 포함 된 ui.graphics qt 패키지 추가
- 초기 ui.graphics gtk 패키지를 추가하십시오
- ui.views.blockview 클래스에서 vltable을 이동하십시오
- 다양한 x86/64 디코딩/포맷/시맨틱을 수정하십시오
- v2.4.3
- ui.graphics 패키지 추가 (빈)
- 블록/func/xfunc을 지원하는 UI.Views 모듈을 추가하십시오
- ui.render.vltable 클래스를 예쁜 인쇄 테이블에 추가하십시오
- PP 토큰에 액세스하기 위해 지시 포피터 클래스를 개선하십시오
- 클리너 ITERCFG 및 LBACKWARD 알고리즘
- '확장 된'VEC 표현식을 나타내는 VECW 표현 클래스를 추가하십시오
- VEC 표현의 메모리 쓰기를 향상시킵니다
- func.makemap ()의 확대 및 fixpoint 향상
- 'type'속성 추가 (STD/PC/플래그/스택/기타)
- x86 아치의 레지스터 유형을 정의하십시오
- 일부 x86/64 디코딩/포맷/시맨틱을 수정하십시오
- Travis 구성을 업데이트하고 Pytest 대 토큰을 수정하십시오.
- v2.4.2
- Pygments Prett Printing Methods (UI.Render 모듈)에 대한 지원을 병합
- x86 hilighted syntax formatter 추가 (Arch.x86.formats)
- Expression의 Pretty Printing Interface (exp.pp (), exp.toks ())
- 기본 구성 클래스 폴백 제거 (configparser는 표준)
- Pytest 패키지로 포팅 된 일부 샘플 및 테스트를 병합하십시오
- setuptools를 사용하고 tox.ini 및 travis-ci config를 추가하십시오
- 일부 x86/x64 시맨틱을 수정하십시오
- SPARC V8 형식을 개선하십시오
- SPARC Coprocessor 레지스터를 추가하십시오
- README 업데이트
- v2.4.1
- lbackward 분석 및 func.makemap () 구현을 추가하십시오
- 표현식 세트를 나타 내기 위해 VEC 표현 클래스 추가
- Mapper 병합 및 확대 기능을 추가하십시오
- exp.to_smtlib ()에서 smt 솔버 인스턴스를 전달할 수 있습니다.
- x86 기반 시스템 클래스에 Funchelpers 방법을 추가하십시오
- 세션/DB 클래스 및 피클 특정 방법을 추가하십시오
- 로그 클래스에 "진행"메소드를 추가하여 피드백을 제공하십시오
- Setup.py에 필요한 외부 패키지를 추가하십시오
- 일부 x86/x64 시맨틱을 수정하십시오
- SPARC V8 형식을 개선하십시오
- README 업데이트
- v2.4.0
- Z3 솔버 인터페이스 병합, smt.py 및 smtlib () exp 메소드 참조
- FBACKWARD 분석 및 CODE FUNC 클래스를 병합하십시오.
- 표현 개선 : 별도의 외교 및 이진 작전, "정상화"표현식
- Memory () 메소드 및 별칭 저항성 구성 연산자로 Mapper를 향상시킵니다
- MemoryZone 클래스 향상 : MemoryError를 올리는 대신 상단 표현 부품을 반환합니다.
- Shellcode와 유사한 입력에 RawExec 클래스 추가
- ELF/PE 클래스에서 문자열 입력을 지원합니다.
- 다양한 x86/x64 버그를 수정하십시오
- ENG 레지스터의 크기 조정을 방지합니다
- Win64 로더를 추가하십시오
- conf.에서 로그 레벨과 선택적 파일을 조정하십시오
- README 업데이트
- v2.3.5
- X64 Arch + Full x86/64 SSE 디코더를 추가하십시오
- Hotfix x86/x64 {88}/{8a} mov 명령의 반전
- 다양한 x86 디코더 및 의미론을 수정하십시오
- 코드 화장품
- v2.3.4
- ARMV7/THUMB SIX SEMANTICS를 병합하십시오
- X86 FPU 디코더를 추가하십시오
- 메모리 맵에서 함수를 추가하십시오
- 맵 경계에서 Core Read_instruction을 수정하십시오
- PE 가져 오기 구문 분석 및 TLS 테이블 빌더를 수정하십시오
- 더 빠른 일반 디코더
- 핫픽스 다양한 x86 디코더
- 일부 x86 SSE 디코더를 추가하십시오
- v2.3.3
- MSP430 및 PIC18 마이크로 컨트롤러 지원
- SPARC Rett, UDIV/SDIV 및 형식을 수정하십시오
- X86 JCXZ 명령어 디코딩을 수정하십시오
- v2.3.2
- 병합 Z80/GB 아키텍처, FIX SPARC보고 된 문제
- SSE2 디코딩의 예 추가 (고정)
- v2.3.1
- 라이센스 파일을 추가하십시오
- SPARC 아키텍처를 수정하십시오
- 주소가 deref가 아닌 경우 PTR 표현을 피하십시오
- EQN_HELPERS 단순화 규칙을 수정하십시오
- README 업데이트
- 새로운 PE 클래스 (Cost.Exe에서 테스트) + 여러 입력 점에 대한 지원.