
CPPLUMBER est un outil d'analyse statique qui aide à détecter et à garder une trace des informations de code source C et C ++ qui divulguent dans des fichiers exécutables compilés.
Le projet est écrit en rouille et dépend de Libclang, il est donc multiplateforme et peut être utilisé sur des projets qui utilisent les dernières normes C et C ++.
Imaginez que vous avez un fichier de fichier file1.c que vous avez compilé en a.out et que vous voulez savoir si un littéral de chaîne s'est retrouvé dans a.out , vous pouvez simplement faire:
$ 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!
La documentation complète de l'utilisateur est disponible ici (et aussi ici en tant que Markdown).
Rust Version 1.63.0 ou plus est nécessaire pour construire le projet.
git clone https://github.com/ergrelet/cpplumber.git
cd cpplumber
cargo build --release
Si vous avez installé de la rouille, vous pouvez facilement installer Cpplumber avec cargo :
cargo install --git https://github.com/ergrelet/cpplumber --tag 0.1.0
Après cela, vous pouvez invoquer cpplumber de n'importe où via la ligne de commande.
Gardez à l'esprit que vous devez faire installer les dépendances requises pour que cpplumber ait fonctionné correctement. Consultez la documentation utilisateur pour plus de détails.