
Cpplumber - это статический инструмент анализа, который помогает обнаруживать и отслеживать информацию о исходном коде C и C ++, которая протекает в скомпилированные исполняемые файлы.
Проект написан в Rust и зависит от LibClang, поэтому он кроссплатформенный и может использоваться в проектах, которые используют последние стандарты C и C ++.
Представьте, что у вас есть исходный файл file1.c , который вы собрали в a.out , и вы хотите узнать, оказался ли какой -то строковой литерал в a.out , вы можете просто сделать:
$ cpplumber --bin a.out file1.c
[2022-09-24T19:57:14Z INFO cpplumber] Gathering source files...
[2022-09-24T19:57:14Z INFO cpplumber] Filtering suppressed files...
[2022-09-24T19:57:14Z INFO cpplumber] Extracting artifacts from source files...
[2022-09-24T19:57:15Z INFO cpplumber] Filtering suppressed artifacts...
[2022-09-24T19:57:15Z INFO cpplumber] Looking for leaks in 'a.out'...
"My_Super_Secret_API_Key" (string literal) leaked at offset 0x14f20 in "/full/path/to/a.out" [declared at /full/path/to/file1.c:5]
Error: Leaks detected!
Полная пользовательская документация доступна здесь (а также здесь как отметка).
Rust Version 1.63.0 или больше необходима для создания проекта.
git clone https://github.com/ergrelet/cpplumber.git
cd cpplumber
cargo build --release
Если у вас установлена ржавчина, вы можете легко установить CPPLUMBER с cargo :
cargo install --git https://github.com/ergrelet/cpplumber --tag 0.1.0
После этого вы можете вызвать cpplumber из любого места через командную линию.
Имейте в виду, что вам необходимо установить необходимые зависимости для правильного запуска cpplumber . Проверьте пользовательскую документацию для получения более подробной информации.