빠르고 가벼운 x86/x86-64 분해 및 코드 생성 라이브러리.
다음 예제 프로그램은 Zydis를 사용하여 주어진 메모리 버퍼를 분해하고 출력을 콘솔에 인쇄합니다.
Zydis/예제/disassemblesimple.c
214536a에서 38 ~ 63 행
위의 예제 프로그램은 다음 출력을 생성합니다.
007FFFFFFF400000 push rcx
007FFFFFFF400001 lea eax , [ rbp - 0x01 ]
007FFFFFFF400004 push rax
007FFFFFFF400005 push qword ptr [ rbp + 0x0C ]
007FFFFFFF400008 push qword ptr [ rbp + 0x08 ]
007FFFFFFF40000B call [ 0x008000007588A5B1 ]
007FFFFFFF400011 test eax , eax
007FFFFFFF400013 js 0x007FFFFFFF42DB15zydis/examples/encodemov.c
B37076E의 39 ~ 62 행
위의 예제 프로그램은 다음 출력을 생성합니다.
48 C7 C0 37 13 00 00
이 저장소의 예제 디렉토리에서 더 많은 예제를 찾을 수 있습니다.
시스템에서 Zydis를 사용할 수있는 방법에는 여러 가지가 있습니다. 다음 하위 섹션은 일반적으로 사용되는 옵션을 나열합니다.
플랫폼 : Windows, MacOS, Linux, BSDS
CMAKE를 사용하여 모든 지원되는 플랫폼에서 Zydis를 구축 할 수 있습니다. CMAKE를 설치하는 방법에 대한 지침은 여기에서 찾을 수 있습니다.
git clone --recursive ' https://github.com/zyantific/zydis.git '
cd zydis
cmake -B build
cmake --build build -j4플랫폼 : Windows
CMAKE 빌드 로직 외에도 Visual Studio 2022 프로젝트를 수동으로 유지 관리합니다.
플랫폼 : Windows
CMAKE는 거의 모든 V 버전에 대한 Visual Studio 프로젝트를 생성하도록 지시받을 수 있습니다. CMAKE GUI를 사용하여 이러한 프로젝트 파일을 생성하는 방법을 설명하는 비디오 안내서는 여기에서 확인할 수 있습니다. 비디오에서 MacOS의 명백한 사용으로 혼란스러워하지 마십시오. Windows는 단순히 가상 컴퓨터에서 실행됩니다.
플랫폼 : 작동하는 C11 컴파일러가있는 모든 플랫폼
Zydis의 자동 생성 된 단일 헤더 및 단일 소스 파일 변형을 제공합니다. 프로젝트 에서이 변형의 Zydis를 사용하려면이 두 파일을 프로젝트에 복사하는 것입니다. 합병 빌드는 릴리스 페이지에서 zydis-amalgamated.tar.gz 로 찾을 수 있습니다.
이 파일은 amalgamate.py 스크립트로 생성됩니다.
플랫폼 : Windows, MacOS, Linux, FreeBSD
사전 제작 된 헤더, 공유 라이브러리 및 실행 파일은 다양한 패키지 관리자를 통해 제공됩니다.
| 저장소 | 명령을 설치하십시오 |
|---|---|
| 아치 리눅스 | pacman -S zydis |
| 데비안 | apt-get install libzydis-dev zydis-tools |
| 홈브류 | brew install zydis |
| 닉스 | nix-shell -p zydis |
| 우분투 | apt-get install libzydis-dev zydis-tools |
| VCPKG | vcpkg install zydis |
자체 CMAKE 기반 프로젝트에서 Zydis를 사용하는 방법에 대한 예는이 리포지토리에서 찾을 수 있습니다.
ZydisInfo 도구 ZydisInfo 명령 줄 도구는 Zydis가 명령에 대해 제공하는 모든 정보를 검사하는 데 사용될 수 있습니다.

선택한 언어에 대한 공식적인 바인딩이 있습니다.
인코더의 ASMJIT 스타일 어셈블러 프론트 엔드를 찾고 있다면 Zasm을 확인하십시오. Zasm은 또한 디코더 및 포맷터 인터페이스 주변에 관용 C ++ 래퍼를 제공합니다.
버전은 시맨틱 버전화 체계를 따릅니다. 모든 안정성 보증은 API에만 적용됩니다. ABI 안정성은 패치 버전간에 만 제공됩니다.
master 다음으로 발표되지 않은 Zydis 버전의 블리 딩 에지 코드를 보유합니다. 증가 된 버그 및 문제가 예상되어야하며 API 안정성은 태그가 지정된 커밋 외부에서 보장되지 않습니다.-beta , -rc 등이 있습니다. 접미사maintenance/v4 는 V4의 최신 릴리스 코드를 가리 킵니다.maintenance/v3 는 V3의 최신 릴리스 코드를 가리 킵니다.maintenance/v2 는 V2의 마지막 레거시 릴리스 코드를 가리 킵니다.-fPIC 공유 라이브러리 빌드 /usr/bin/ld: ./libfoo.a(foo.c.o): relocation R_X86_64_PC32 against symbol `bar' can not be used when making a shared object; recompile with -fPIC
어떤 상황에서 (예 : Zydis를 CMAKE를 사용하여 정적 라이브러리로 구축 한 다음 MakeFiles를 사용하여 수동으로 공유 라이브러리에 연결할 때) CMAKE는 재배치 정보를 방출 해야하는 것을 감지하지 못할 수 있습니다. 이것은 -DCMAKE_POSITION_INDEPENDENT_CODE=ON cmake 호출로 전달하여 강요 할 수 있습니다.
우리는 Zydis에 대한 컨설팅 서비스 및 전문 비즈니스 지원을 제공합니다. 사용자 정의 확장이 필요한 경우 Zydis를 제품에 통합하는 데 도움이 필요하거나 단순히 계약서 보장 업데이트 및 처리 시간을 원한다면 기꺼이 도와 드리겠습니다! [email protected]으로 문의하십시오.
기부금은 Flobernd의 계정을 사용하여 수집 및 배포됩니다.
Zydis는 MIT 라이센스에 따라 라이센스가 부여됩니다.