Go to file
Rot127 0a67596f70
Add test with ASAN enabled. (#2313)
* Add test with ASAN enabled.

* Fix leaks in cstool and cs.c

* Add work around so ASAN binaries don't DEADSIGNAL due to too many randomized address bits.

* Add ASAN build arguments to cstest

* Fix leaks in cstest

* Use cstest binary build by the main build.

* Add clonging step for cmocka when cstest is build

* Skip Python tests for ASAN

* Remove make build from CI

* Fix leaks in cstest.

- Rewrite split to remove leaks and improve runtime by 6%
- Add free()

* Fix cmocka external project to stable branch.

* Revert "Fix leaks in cstest."

This reverts commit bf8ee125b0c58f9c794eb081a69c80f8a71825cd.

* Fix memleaks in cstest

* Document adding of ASAN job to release guide

* Add CAPSTONE_BUILD_CSTEST to build docs

* Fix double free

* Add more detail tests to CI and fix them

* Initialize variables

* Fix typo

* Update cstest build docs

* Revert "Remove make build from CI"

This reverts commit 84f7360c6da6183cd41bec0fef3e1d0a2ee49ddf.

* Make cstest only run for cmake builds.

* Add cstest job for make build.

* Add CAPSTONE_DIET build test.

* Compile the compatibility header test with ASAN if enabled.

* Fix DIET build by excluding not used code.

* Missing "

* Build static library with ASAN and DIET if enabled.

* Revert "Add CAPSTONE_DIET build test."

This reverts commit 71e1469dee53bfdb6b275dd1be19f6eb21a0c023.
2024-06-10 10:01:00 +08:00
.github Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
.reuse [Auto-Sync] LLVM 18 update (#2296) 2024-04-22 11:55:44 +08:00
LICENSES [Auto-Sync] LLVM 18 update (#2296) 2024-04-22 11:55:44 +08:00
arch Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
bindings Remove python2 leftovers (#2378) 2024-06-09 17:29:50 +08:00
contrib Constify backends (#1549) 2019-12-23 20:30:57 +08:00
cstool Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
docs Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
include AArch64 compatibility header (#2321) 2024-05-31 20:07:03 +08:00
msvc Raise minimum requirement to VS2017 (#2228) 2024-01-07 19:10:59 +08:00
packages merge next to master 2018-07-20 12:36:50 +08:00
suite Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
tests Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
windows Fix user data alignment in MEMBLOCK (#1471) 2019-05-09 10:24:47 +08:00
windowsce fix typos (#2344) 2024-04-30 10:37:53 +08:00
xcode fix typos (#2346) 2024-05-12 21:17:20 +08:00
.appveyor.yml rename appveyor.yml to .appveyor.yml 2016-03-15 00:01:10 +08:00
.clang-format Add `.clang-format` and format 2023-05-30 11:09:37 +08:00
.editorconfig Add OCaml to EditorConfig 2022-07-23 10:46:03 +02:00
.gitattributes Fix language statistics by considering *.inc files to be C files. (#1078) 2018-01-14 20:42:20 +08:00
.gitignore Add a clang-tidy checks and warnings (#2312) 2024-04-26 15:11:46 +08:00
.gitmodules Architecture updater (auto-sync) - Updating ARM (#1949) 2023-07-19 17:56:27 +08:00
.travis.yml Fuzzit integration (#1520) 2019-07-25 09:06:52 +08:00
CMakeLists.txt Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
CMakePresets.json Merge cmake.yml into CITest.yml 2022-04-11 09:35:10 +02:00
COMPILE.TXT fix typos (#2344) 2024-04-30 10:37:53 +08:00
COMPILE_CMAKE.TXT Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
COMPILE_MSVC.TXT fix typos (#2344) 2024-04-30 10:37:53 +08:00
CREDITS.TXT Add HPPA(PA-RISC) architecture (#2265) 2024-03-26 13:58:56 +08:00
ChangeLog fix typos (#2346) 2024-05-12 21:17:20 +08:00
HACK.TXT Add HPPA(PA-RISC) architecture (#2265) 2024-03-26 13:58:56 +08:00
LEB128.h sync with LLVM 7.0.1. X86 is first 2019-02-26 15:19:51 +08:00
MCDisassembler.h sync with LLVM 7.0.1. X86 is first 2019-02-26 15:19:51 +08:00
MCFixedLenDisassembler.h RISCV support ISRV32/ISRV64 (#1401) 2019-03-09 08:41:12 +08:00
MCInst.c fix typos (#2344) 2024-04-30 10:37:53 +08:00
MCInst.h fix typos (#2346) 2024-05-12 21:17:20 +08:00
MCInstPrinter.c Architecture updater (auto-sync) - Updating AArch64 (#2026) 2023-11-15 12:12:14 +08:00
MCInstPrinter.h fix typos (#2346) 2024-05-12 21:17:20 +08:00
MCInstrDesc.c Add `.clang-format` and format 2023-05-30 11:09:37 +08:00
MCInstrDesc.h Architecture updater (auto-sync) - Updating ARM (#1949) 2023-07-19 17:56:27 +08:00
MCRegisterInfo.c In x86: Fixed backward compatibility with C90 (#1969) 2023-03-10 08:37:47 +08:00
MCRegisterInfo.h arm64: sync with LLVM 7.0.1 2019-04-10 14:17:08 +08:00
Makefile Add HPPA(PA-RISC) architecture (#2265) 2024-03-26 13:58:56 +08:00
Mapping.c Mapping - return NULL if compiled with DIET (#2370) 2024-05-31 19:49:41 +08:00
Mapping.h Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
MathExtras.h Add HPPA(PA-RISC) architecture (#2265) 2024-03-26 13:58:56 +08:00
README.md README: Mention Alpha and HPPA (#2357) 2024-05-14 09:57:19 +08:00
RELEASE_NOTES empty RELEASE_NOTES for v4.1 2018-12-19 07:50:18 +07:00
SPONSORS.TXT Add webassembly arch (#1359) 2019-02-01 23:03:47 +08:00
SStream.c Architecture updater (auto-sync) - Updating PPC (#2013) 2023-09-05 12:24:59 +08:00
SStream.h Architecture updater (auto-sync) - Updating PPC (#2013) 2023-09-05 12:24:59 +08:00
capstone-config.cmake.in allow absolute CMAKE_INSTALL_*DIR (#2134) 2023-08-09 23:05:06 +08:00
capstone.pc.in Fix pkgconfig file to make #include <capstone/capstone.h> work (#2307) 2024-05-03 01:07:00 +08:00
cmake.sh Add HPPA(PA-RISC) architecture (#2265) 2024-03-26 13:58:56 +08:00
cmake_uninstall.cmake.in allow absolute CMAKE_INSTALL_*DIR (#2134) 2023-08-09 23:05:06 +08:00
config.mk fix typos (#2344) 2024-04-30 10:37:53 +08:00
cs.c Add test with ASAN enabled. (#2313) 2024-06-10 10:01:00 +08:00
cs_priv.h Architecture updater (auto-sync) - Updating PPC (#2013) 2023-09-05 12:24:59 +08:00
cs_simple_types.h Make helper functions static to prevent multiple defintions. (#2266) 2024-02-15 15:51:46 +08:00
functions.mk Fix if indent 2023-05-19 19:50:46 +01:00
make.sh LIBDIRARCH does not propagate to Makefile (#2214) 2024-01-03 17:30:49 +09:00
nmake.bat Add HPPA(PA-RISC) architecture (#2265) 2024-03-26 13:58:56 +08:00
pkgconfig.mk 5.0-post1 2023-07-05 23:30:22 +08:00
run-clang-tidy.sh Clang tidy quality of life (#2348) 2024-05-08 22:24:01 +08:00
utils.c fix typos (#2344) 2024-04-30 10:37:53 +08:00
utils.h [ARM] Add alias support (#2209) 2023-12-02 15:18:58 +08:00

README.md

Capstone Engine

Build status pypi package pypi downloads oss-fuzz Status

[!TIP] Welcome to join our community group!

Capstone is a disassembly framework with the target of becoming the ultimate disasm engine for binary analysis and reversing in the security community.

Created by Nguyen Anh Quynh, then developed and maintained by a small community, Capstone offers some unparalleled features:

  • Support multiple hardware architectures: ARM, AArch64, Alpha, BPF, Ethereum VM, HP PA-RISC (HPPA), M68K, M680X, Mips, MOS65XX, PPC, RISC-V(rv32G/rv64G), SH, Sparc, SystemZ, TMS320C64X, TriCore, Webassembly, XCore and X86 (16, 32, 64).

  • Having clean/simple/lightweight/intuitive architecture-neutral API.

  • Provide details on disassembled instruction (called “decomposer” by others).

  • Provide semantics of the disassembled instruction, such as list of implicit registers read & written.

  • Implemented in pure C language, with lightweight bindings for Swift, D, Clojure, F#, Common Lisp, Visual Basic, PHP, PowerShell, Emacs, Haskell, Perl, Python, Ruby, C#, NodeJS, Java, GO, C++, OCaml, Lua, Rust, Delphi, Free Pascal & Vala ready either in main code, or provided externally by the community).

  • Native support for all popular platforms: Windows, Mac OSX, iOS, Android, Linux, *BSD, Solaris, etc.

  • Thread-safe by design.

  • Special support for embedding into firmware or OS kernel.

  • High performance & suitable for malware analysis (capable of handling various X86 malware tricks).

  • Distributed under the open source BSD license.

Further information is available at https://www.capstone-engine.org

Compile

See COMPILE.TXT file for how to compile and install Capstone.

Documentation

See docs/README for how to customize & program your own tools with Capstone.

Hack

See HACK.TXT file for the structure of the source code.

Fuzz

See suite/fuzz/README.md for more information.

License

This project is released under the BSD license. If you redistribute the binary or source code of Capstone, please attach file LICENSE.TXT with your products.