Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
slither — Statischer Analyzer für Solidity und Vyper | Kitploit
Tools/GitHubGitHub/crytic/slither
Statische AnalyseSchwachstellenanalyseCode-Analyse
GitHubcrytic/slither

slither

Statischer Analyzer für Solidity und Vyper

Repository anzeigenWebseite
6.3k1.1k54vor 4 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
# [Slither, der statische Analysator für Smart Contracts](https://crytic.github.io/slither/slither.html)

<img src="https://assets.kitploit.com/production/public/readmes/2943/62b8c109c585043091c50668ec219aa530aa6d589d7cda02181bf209249f5205.png" alt="Logo des Slither Static-Analyse-Frameworks" width="500" />

[![Build-Status](https://img.shields.io/github/actions/workflow/status/crytic/slither/ci.yml?branch=master)](https://github.com/crytic/slither/actions?query=workflow%3ACI)
![PyPI](https://img.shields.io/pypi/v/slither-analyzer?logo=python&logoColor=white&label=slither-analyzer)
[![Slither – Read the Docs](https://img.shields.io/badge/Slither-Read_the_Docs-2ea44f)](https://crytic.github.io/slither/slither.html)
[![Slither – Wiki](https://img.shields.io/badge/Slither-Wiki-2ea44f)](https://github.com/crytic/slither/wiki/SlithIR)

> Tritt dem Empire Hacking Slack bei
>
> [![Slack-Status](https://slack.empirehacking.nyc/badge.svg)](https://slack.empirehacking.nyc/)
> > _- Diskussionen und Support_

**Slither** ist ein in Python3 geschriebenes statisches Analyse-Framework für Solidity und Vyper. Es führt eine Reihe von Schwachstellendetektoren aus, gibt visuelle Informationen über Vertragsdetails aus und bietet eine API, um benutzerdefinierte Analysen einfach zu schreiben. Slither ermöglicht Entwicklern, Schwachstellen zu finden, ihr Codeverständnis zu verbessern und schnell individuelle Analysen zu prototypisieren.

* [Funktionen](#features)
* [Verwendung](#usage)
* [Installation](#how-to-install)
  * [Mit uv (empfohlen)](#using-uv-recommended)
  * [Mit Pip](#using-pip)
  * [Mit Git](#using-git-development)
  * [Mit Docker](#using-docker)
  * [Integration](#integration)
* [Detektoren](#detectors)
* [Printer](#printers)
  * [Schnellüberblick-Printer](#quick-review-printers)
  * [Detaillierte Analyse-Printer](#in-depth-review-printers)
* [Werkzeuge](#tools)
* [API-Dokumentation](#api-documentation)
* [Hilfe](#getting-help)
* [FAQ](#faq)
* [Lizenz](#license)
* [Veröffentlichungen](#publications)
  * [Veröffentlichungen von Trail of Bits](#trail-of-bits-publication)
  * [Externe Veröffentlichungen](#external-publications)

## Funktionen

* Erkennt verwundbaren Solidity-Code mit niedriger Falsch-Positiv-Rate (siehe die Liste der [Trophäen](https://github.com/crytic/slither/blob/master/trophies.md))
* Identifiziert die Stelle im Quellcode, an der der Fehler auftritt
* Einfache Integration in Continuous Integration und Hardhat/Foundry-Builds
* Integrierte 'Printer' melden schnell wichtige Vertragsinformationen
* Detektor-API zum Schreiben benutzerdefinierter Analysen in Python
* Fähigkeit, Verträge zu analysieren, die mit Solidity >= 0.4 geschrieben wurden
* Zwischendarstellung ([SlithIR](https://github.com/crytic/slither/wiki/SlithIR)) ermöglicht einfache, hochpräzise Analysen
* Analysiert korrekt 99,9% aller öffentlichen Solidity-Codes
* Durchschnittliche Ausführungszeit von weniger als 1 Sekunde pro Vertrag
* Integration in die Code-Scannung von GitHub in [CI](https://github.com/marketplace/actions/slither-action)
* Unterstützung für Vyper-Smart Contracts

## Verwendung

Führe Slither auf einer Hardhat/Foundry/Dapp/Brownie-Anwendung aus:```console
slither .
```
Dies ist die bevorzugte Option, wenn Ihr Projekt Abhängigkeiten hat, da Slither auf dem zugrunde liegenden Kompilierungs-Framework basiert, um Quellcode zu kompilieren.

Sie können Slither jedoch auch auf einer einzelnen Datei ausführen, die keine Abhängigkeiten importiert:```console
slither tests/uninitialized.sol
```
## Wie installieren

> **Hinweis**
> Slither benötigt Python 3.10+.
Falls Sie **keines** der [unterstützten Compilierungs-Frameworks](https://github.com/crytic/crytic-compile) verwenden, benötigen Sie [solc](https://github.com/ethereum/solidity/), den Solidity-Compiler. Wir empfehlen [solc-select](https://github.com/crytic/solc-select) für den bequemen Wechsel zwischen solc-Versionen.

### Verwendung von uv (empfohlen)

[uv](https://github.com/astral-sh/uv) ist ein schneller Python-Paketmanager, der 10-100x schneller ist als pip.```console
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install slither as a tool
uv tool install slither-analyzer

# Or run slither without installation
uvx --from slither-analyzer slither <target>
```
Zum Aktualisieren:```console
uv tool upgrade slither-analyzer
```
### Mit Pip verwenden```console
python3 -m pip install slither-analyzer
```
Aktualisieren:```console
python3 -m pip install --upgrade slither-analyzer
```
### Brew verwenden```console
brew install slither-analyzer
```
### Mit Git (Entwicklung)```bash
git clone https://github.com/crytic/slither.git && cd slither

# Install as editable for development
uv tool install -e .

# Or use uv run for testing without installation
uv run slither <target>
```
The `-e` flag installiert im bearbeitbaren Modus, was bedeutet, dass Änderungen am Quellcode sofort übernommen werden, ohne dass eine Neuinstallation erforderlich ist.

### Docker verwenden

Verwenden Sie das Docker-Image [`eth-security-toolbox`](https://github.com/crytic/eth-security-toolbox/). Es enthält alle unsere Sicherheitstools und jede Hauptversion von Solidity in einem einzigen Image. `/home/share` wird im Container auf `/share` gemountet.```bash
docker pull trailofbits/eth-security-toolbox
```
Um ein Verzeichnis im Container freizugeben:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
```
### Integration

* Für die GitHub action Integration verwenden Sie [slither-action](https://github.com/marketplace/actions/slither-action).
* Für die pre-commit Integration verwenden Sie (ersetzen Sie `$GIT_TAG` durch das tatsächliche Tag)  ```YAML
  - repo: https://github.com/crytic/slither
    rev: $GIT_TAG
    hooks:
      - id: slither
  ```
* Um einen Markdown-Bericht zu erstellen, verwenden Sie `slither [target] --checklist`.
* Um einen Markdown mit GitHub-Quellcode-Hervorhebung zu generieren, verwenden Sie `slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/` (ersetzen Sie `ORG`, `REPO`, `COMMIT`)

## Detektoren

Nr. | Detektor | Was er erkennt | Auswirkung | Vertrauen
--- | --- | --- | --- | ---
1 | `abiencoderv2-array` | [Storage-abiencoderv2-Array](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-abiencoderv2-array) | Hoch | Hoch
2 | `arbitrary-send-erc20` | [transferFrom verwendet beliebiges `from`](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom) | Hoch | Hoch
3 | `array-by-reference` | [Ändern eines Storage-Arrays durch Wert](https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value) | Hoch | Hoch
4 | `encode-packed-collision` | [ABI encodePacked-Kollision](https://github.com/crytic/slither/wiki/Detector-Documentation#abi-encodePacked-collision) | Hoch | Hoch
5 | `incorrect-shift` | [Die Reihenfolge der Parameter in einer Shift-Anweisung ist falsch.](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-shift-in-assembly) | Hoch | Hoch
6 | `multiple-constructors` | [Mehrere Konstruktorschemata](https://github.com/crytic/slither/wiki/Detector-Documentation#multiple-constructor-schemes) | Hoch | Hoch
7 | `name-reused` | [Wiederverwendung des Vertragsnamens](https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused) | Hoch | Hoch
8 | `protected-vars` | [Erkannte ungeschützte Variablen](https://github.com/crytic/slither/wiki/Detector-Documentation#protected-variables) | Hoch | Hoch
9 | `public-mappings-nested` | [Öffentliche Mappings mit verschachtelten Variablen](https://github.com/crytic/slither/wiki/Detector-Documentation#public-mappings-with-nested-variables) | Hoch | Hoch
10 | `rtlo` | [Steuerzeichen zur Rechts-nach-Links-Überschreibung wird verwendet](https://github.com/crytic/slither/wiki/Detector-Documentation#right-to-left-override-character) | Hoch | Hoch
11 | `shadowing-state` | [State-Variablen-Überschattung](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing) | Hoch | Hoch
12 | `suicidal` | [Funktionen, die es jedem erlauben, den Vertrag zu zerstören](https://github.com/crytic/slither/wiki/Detector-Documentation#suicidal) | Hoch | Hoch
13 | `uninitialized-state` | [Nicht initialisierte State-Variablen](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables) | Hoch | Hoch
14 | `uninitialized-storage` | [Nicht initialisierte Storage-Variablen](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-storage-variables) | Hoch | Hoch
15 | `unprotected-upgrade` | [Ungeschützter upgradebarer Vertrag](https://github.com/crytic/slither/wiki/Detector-Documentation#unprotected-upgradeable-contract) | Hoch | Hoch
16 | `arbitrary-send-erc20-permit` | [transferFrom verwendet beliebiges from mit Permit](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom-used-with-permit) | Hoch | Mittel
17 | `arbitrary-send-eth` | [Funktionen, die Ether an beliebige Ziele senden](https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations) | Hoch | Mittel
18 | `controlled-array-length` | [Zuweisung einer verfälschten Array-Länge](https://github.com/crytic/slither/wiki/Detector-Documentation#array-length-assignment) | Hoch | Mittel
19 | `controlled-delegatecall` | [Kontrolliertes delegatecall-Ziel](https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall) | Hoch | Mittel
20 | `delegatecall-loop` | [Payable-Funktionen, die `delegatecall` innerhalb einer Schleife verwenden](https://github.com/crytic/slither/wiki/Detector-Documentation/#payable-functions-using-delegatecall-inside-a-loop) | Hoch | Mittel
21 | `incorrect-exp` | [Falsche Potenzierung](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation) | Hoch | Mittel
22 | `incorrect-return` | [Wenn ein `return` fälschlicherweise im Assembly-Modus verwendet wird.](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-return-in-assembly) | Hoch | Mittel
23 | `msg-value-loop` | [msg.value innerhalb einer Schleife](https://github.com/crytic/slither/wiki/Detector-Documentation/#msgvalue-inside-a-loop) | Hoch | Mittel
24 | `reentrancy-eth` | [Reentrancy-Schwachstellen (Diebstahl von Ether)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities) | Hoch | Mittel
25 | `reentrancy-balance` | [Reentrancy-Schwachstellen, die zu veralteten Saldenprüfungen führen](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | Hoch | Mittel
26 | `return-leave` | [Wenn ein `return` anstelle eines `leave` verwendet wird.](https://github.com/crytic/slither/wiki/Detector-Documentation#return-instead-of-leave-in-assembly) | Hoch | Mittel
27 | `storage-array` | [Compiler-Fehler bei signierten Storage-Integer-Arrays](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-signed-integer-array) | Hoch | Mittel
28 | `unchecked-transfer` | [Ungeprüfter Token-Transfer](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer) | Hoch | Mittel
29 | `weak-prng` | [Schwacher PRNG](https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG) | Hoch | Mittel
30 | `domain-separator-collision` | [Erkennt ERC20-Token, die eine Funktion haben, deren Signatur mit EIP-2612s DOMAIN_SEPARATOR() kollidiert](https://github.com/crytic/slither/wiki/Detector-Documentation#domain-separator-collision) | Mittel | Hoch
31 | `enum-conversion` | [Erkennt gefährliche Enum-Konvertierung](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-enum-conversion) | Mittel | Hoch
32 | `erc20-interface` | [Falsche ERC20-Schnittstellen](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface) | Mittel | Hoch
33 | `erc721-interface` | [Falsche ERC721-Schnittstellen](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc721-interface) | Mittel | Hoch
34 | `incorrect-equality` | [Gefährliche strikte Gleichheiten](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities) | Mittel | Hoch
35 | `locked-ether` | [Verträge, die Ether sperren](https://github.com/crytic/slither/wiki/Detector-Documentation#contracts-that-lock-ether) | Mittel | Hoch
36 | `mapping-deletion` | [Löschen eines Mappings, das eine Struktur enthält](https://github.com/crytic/slither/wiki/Detector-Documentation#deletion-on-mapping-containing-a-structure) | Mittel | Hoch
37 | `pyth-deprecated-functions` | [Erkennt veraltete Pyth-Funktionen](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-deprecated-functions) | Mittel | Hoch
38 | `pyth-unchecked-confidence` | [Erkennt, wenn das Konfidenzniveau eines Pyth-Preises nicht überprüft wird](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-unchecked-confidence-level) | Mittel | Hoch
39 | `pyth-unchecked-publishtime` | [Erkennt, wenn die publishTime eines Pyth-Preises nicht überprüft wird](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-unchecked-publishtime) | Mittel | Hoch
40 | `shadowing-abstract` | [State-Variablen-Überschattung durch abstrakte Verträge](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing-from-abstract-contracts) | Mittel | Hoch
41 | `tautological-compare` | [Vergleicht eine Variable mit sich selbst, was je nach Vergleich immer true oder false zurückgibt](https://github.com/crytic/slither/wiki/Detector-Documentation#tautological-compare) | Mittel | Hoch
42 | `tautology` | [Tautologie oder Widerspruch](https://github.com/crytic/slither/wiki/Detector-Documentation#tautology-or-contradiction) | Mittel | Hoch
43 | `write-after-write` | [Unbenutzter Schreibzugriff](https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write) | Mittel | Hoch
44 | `boolean-cst` | [Missbrauch einer Boolean-Konstante](https://github.com/crytic/slither/wiki/Detector-Documentation#misuse-of-a-boolean-constant) | Mittel | Mittel
45 | `chronicle-unchecked-price` | [Erkennt, wenn Chronicle-Preis nicht überprüft wird.](https://github.com/crytic/slither/wiki/Detector-Documentation#chronicle-unchecked-price) | Mittel | Mittel
46 | `constant-function-asm` | [Konstante Funktionen mit Assembly-Code](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-using-assembly-code) | Mittel | Mittel
47 | `constant-function-state` | [Konstante Funktionen, die den State ändern](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-changing-the-state) | Mittel | Mittel
48 | `divide-before-multiply` | [Ungenauigkeit der Reihenfolge arithmetischer Operationen](https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply) | Mittel | Mittel
49 | `gelato-unprotected-randomness` | [Aufruf von `_requestRandomness` innerhalb einer ungeschützten Funktion](https://github.com/crytic/slither/wiki/Detector-Documentation#gelato-unprotected-randomness) | Mittel | Mittel
50 | `out-of-order-retryable` | [Nicht sequenzielle wiederholbare Transaktionen](https://github.com/crytic/slither/wiki/Detector-Documentation#out-of-order-retryable-transactions) | Mittel | Mittel
51 | `reentrancy-no-eth` | [Reentrancy-Schwachstellen (kein Diebstahl von Ether)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1) | Mittel | Mittel
52 | `reused-constructor` | [Wiederverwendeter Basis-Konstruktor](https://github.com/crytic/slither/wiki/Detector-Documentation#reused-base-constructors) | Mittel | Mittel
53 | `tx-origin` | [Gefährliche Verwendung von `tx.origin`](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin) | Mittel | Mittel
54 | `unchecked-lowlevel` | [Ungeprüfte Low-Level-Aufrufe](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-low-level-calls) | Mittel | Mittel
55 | `unchecked-send` | [Ungeprüfter send](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-send) | Mittel | Mittel
56 | `uninitialized-local` | [Nicht initialisierte lokale Variablen](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables) | Mittel | Mittel
57 | `unused-return` | [Unbenutzte Rückgabewerte](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return) | Mittel | Mittel
58 | `chainlink-feed-registry` | [Erkennt, wenn Chainlink-Feed-Registry verwendet wird](https://github.com/crytic/slither/wiki/Detector-Documentation#chainlink-feed-registry-usage) | Niedrig | Hoch
59 | `incorrect-modifier` | [Modifier, die den Standardwert zurückgeben können](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier) | Niedrig | Hoch
60 | `optimism-deprecation` | [Erkennt, wenn veralteter Optimism-Predeploy oder -Funktion verwendet wird.](https://github.com/crytic/slither/wiki/Detector-Documentation#optimism-deprecated-predeploy-or-function) | Niedrig | Hoch
61 | `shadowing-builtin` | [Überschattung eingebauter Symbole](https://github.com/crytic/slither/wiki/Detector-Documentation#builtin-symbol-shadowing) | Niedrig | Hoch
62 | `shadowing-local` | [Überschattung lokaler Variablen](https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing) | Niedrig | Hoch
63 | `uninitialized-fptr-cst` | [Aufrufe nicht initialisierter Funktionszeiger in Konstruktoren](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-function-pointers-in-constructors) | Niedrig | Hoch
64 | `variable-scope` | [Lokale Variablen vor ihrer Deklaration verwendet](https://github.com/crytic/slither/wiki/Detector-Documentation#pre-declaration-usage-of-local-variables) | Niedrig | Hoch
65 | `void-cst` | [Konstruktor aufgerufen, aber nicht implementiert](https://github.com/crytic/slither/wiki/Detector-Documentation#void-constructor) | Niedrig | Hoch
66 | `calls-loop` | [Mehrere Aufrufe in einer Schleife](https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop) | Niedrig | Mittel
67 | `events-access` | [Fehlende Ereignisse bei Zugriffskontrolle](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control) | Niedrig | Mittel
68 | `events-maths` | [Fehlende Ereignisse bei Arithmetik](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic) | Niedrig | Mittel
69 | `incorrect-unary` | [Gefährliche unäre Ausdrücke](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-unary-expressions) | Niedrig | Mittel
70 | `missing-zero-check` | [Fehlende Validierung der Nulladresse](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation) | Niedrig | Mittel
71 | `reentrancy-benign` | [Gutartige Reentrancy-Schwachstellen](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2) | Niedrig | Mittel
72 | `reentrancy-events` | [Reentrancy-Schwachstellen, die zu nicht sequenziellen Ereignissen führen](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3) | Niedrig | Mittel
73 | `return-bomb` | [Ein Low-Level-Callee könnte unerwartet das gesamte Gas des Aufrufers verbrauchen.](https://github.com/crytic/slither/wiki/Detector-Documentation#return-bomb) | Niedrig | Mittel
74 | `timestamp` | [Gefährliche Verwendung von `block.timestamp`](https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp) | Niedrig | Mittel
75 | `assembly` | [Assembly-Verwendung](https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage) | Informativ | Hoch
76 | `assert-state-change` | [Assert-Statusänderung](https://github.com/crytic/slither/wiki/Detector-Documentation#assert-state-change) | Informativ | Hoch
77 | `boolean-equal` | [Vergleich mit einer Boolean-Konstante](https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality) | Informativ | Hoch
78 | `cyclomatic-complexity` | [Erkennt Funktionen mit hoher (> 11) zyklomatischer Komplexität](https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity) | Informativ | Hoch
79 | `deprecated-standards` | [Veraltete Solidity-Standards](https://github.com/crytic/slither/wiki/Detector-Documentation#deprecated-standards) | Informativ | Hoch
80 | `erc20-indexed` | [Nicht indizierte ERC20-Ereignisparameter](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters) | Informativ | Hoch
81 | `function-init-state` | [Funktion, die State-Variablen initialisiert](https://github.com/crytic/slither/wiki/Detector-Documentation#function-initializing-state) | Informativ | Hoch
82 | `incorrect-using-for` | [Erkennt die Verwendung von using-for-Anweisungen, wenn keine Funktion aus einer bestimmten Bibliothek zu einem bestimmten Typ passt](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-usage-of-using-for-statement) | Informativ | Hoch
83 | `low-level-calls` | [Low-Level-Aufrufe](https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls) | Informativ | Hoch
84 | `missing-inheritance` | [Fehlende Vererbung](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance) | Informativ | Hoch
85 | `naming-convention` | [Einhaltung der Solidity-Namenskonventionen](https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions) | Informativ | Hoch
86 | `pragma` | [Wenn verschiedene Pragma-Direktiven verwendet werden](https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used) | Informativ | Hoch
87 | `redundant-statements` | [Redundante Anweisungen](https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements) | Informativ | Hoch
88 | `solc-version` | [Falsche Solidity-Version](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity) | Informativ | Hoch
89 | `unimplemented-functions` | [Nicht implementierte Funktionen](https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions) | Informativ | Hoch
90 | `unindexed-event-address` | [Ereignisse mit Adressparametern, aber ohne indizierte Parameter](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-event-address-parameters) | Informativ | Hoch
91 | `unused-state` | [Unbenutzte State-Variablen](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable) | Informativ | Hoch
92 | `costly-loop` | [Kostspielige Operationen in einer Schleife](https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop) | Informativ | Mittel
93 | `dead-code` | [Funktionen, die nicht verwendet werden](https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code) | Informativ | Mittel
94 | `reentrancy-unlimited-gas` | [Reentrancy-Schwachstellen durch send und transfer](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | Informativ | Mittel
95 | `too-many-digits` | [Einhaltung bewährter Praktiken für numerische Notation](https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits) | Informativ | Mittel
96 | `cache-array-length` | [Erkennt `for`-Schleifen, die das `length`-Mitglied eines Storage-Arrays in ihrer Schleifenbedingung verwenden und es nicht verändern.](https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length) | Optimierung | Hoch
97 | `constable-states` | [State-Variablen, die als konstant deklariert werden könnten](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant) | Optimierung | Hoch
98 | `external-function` | [Öffentliche Funktion, die als external deklariert werden könnte](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) | Optimierung | Hoch
99 | `immutable-states` | [State-Variablen, die als immutable deklariert werden könnten](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable) | Optimierung | Hoch
100 | `var-read-using-this` | [Vertrag liest seine eigene Variable mittels `this`](https://github.com/crytic/slither/wiki/Detector-Documentation#public-variable-read-in-external-context) | Optimierung | Hoch

Weitere Informationen finden Sie unter

* Die [Detektor-Dokumentation](https://github.com/crytic/slither/wiki/Detector-Documentation) für Details zu jedem Detektor
* Die [Erkennungsauswahl](https://github.com/crytic/slither/wiki/Usage#detector-selection) zur Ausführung nur ausgewählter Detektoren. Standardmäßig werden alle Detektoren ausgeführt.
* Der [Triage-Modus](https://github.com/crytic/slither/wiki/Usage#triage-mode) zur Filterung einzelner Ergebnisse

## Printer

### Schnellüberblick-Printer

* `human-summary`: [Gibt eine menschenlesbare Zusammenfassung der Verträge aus](https://github.com/trailofbits/slither/wiki/Printer-documentation#human-summary)
* `inheritance-graph`: [Exportiert den Vererbungsgraphen jedes Vertrags in eine DOT-Datei](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph)
* `contract-summary`: [Gibt eine Zusammenfassung der Verträge aus](https://github.com/trailofbits/slither/wiki/Printer-documentation#contract-summary)
* `loc`: [Zählt die Gesamtzahl der Codezeilen (LOC), Quellcodezeilen (SLOC) und Kommentarzeilen (CLOC) in Quelldateien (SRC), Abhängigkeiten (DEP) und Testdateien (TEST).](https://github.com/trailofbits/slither/wiki/Printer-documentation#loc)
* `entry-points`: [Gibt alle zustandsändernden Einstiegspunktfunktionen und deren Variablen der Verträge aus](https://github.com/trailofbits/slither/wiki/Printer-documentation#entry-points)

### Detailprüfungs-Printer* `call-graph`: [Exportiere den Call-Graphen der Verträge in eine dot-Datei](https://github.com/crytic/slither/wiki/Printer-documentation#call-graph)
* `cfg`: [Exportiere das CFG jeder Funktion](https://github.com/crytic/slither/wiki/Printer-documentation#cfg)
* `function-summary`: [Drucke eine Zusammenfassung der Funktionen](https://github.com/crytic/slither/wiki/Printer-documentation#function-summary)
* `vars-and-auth`: [Drucke die geschriebenen Zustandsvariablen und die Autorisierung der Funktionen](https://github.com/crytic/slither/wiki/Printer-documentation#variables-written-and-authorization)
* `not-pausable`: [Drucke Funktionen, die den Modifikator `whenNotPaused` nicht verwenden](https://github.com/crytic/slither/wiki/Printer-documentation#when-not-paused).

Um einen Drucker auszuführen, verwende `--print` und eine kommagetrennte Liste von Druckern.

Siehe die [Printer-Dokumentation](https://github.com/crytic/slither/wiki/Printer-documentation) für die vollständigen Listen.

## Tools

* `slither-check-upgradeability`: [Überprüfe die auf `delegatecall` basierende Upgradeability](https://github.com/crytic/slither/blob/master/docs/src/tools/Upgradeability-Checks.md)
* `slither-prop`: [Automatische Unit-Tests und Eigenschaftsgenerierung](https://github.com/crytic/slither/blob/master/docs/src/tools/Property-generation.md)
* `slither-flat`: [Glätten einer Codebasis](https://github.com/crytic/slither/blob/master/docs/src/tools/Contract-Flattening.md)
* `slither-check-erc`: [Überprüfe die ERC-Konformität](https://github.com/crytic/slither/blob/master/docs/src/tools/ERC-Conformance.md)
* `slither-read-storage`: [Lese Speicherwerte aus Verträgen](https://github.com/crytic/slither/blob/master/docs/src/tools/ReadStorage.md)
* `slither-interface`: [Generiere ein Interface für einen Vertrag](https://github.com/crytic/slither/blob/master/docs/src/tools/Interface.md)

Siehe die [Tool-Dokumentation](https://github.com/crytic/slither/blob/master/docs/src/tools/README.md) für weitere Tools.

[Kontaktiere uns](https://www.trailofbits.com/contact/), um Hilfe beim Erstellen benutzerdefinierter Tools zu erhalten.

## API-Dokumentation

Die Dokumentation zu Slithers Interna ist [hier](https://crytic.github.io/slither/slither.html) verfügbar.

## Hilfe erhalten

Besuche gerne unseren [Slack-Kanal](https://empireslacking.herokuapp.com) (#ethereum) für Hilfe bei der Nutzung oder Erweiterung von Slither.

* Die [Printer-Dokumentation](https://github.com/crytic/slither/wiki/Printer-documentation) beschreibt die Informationen, die Slither für jeden Vertrag visualisieren kann.

* Die [Detector-Dokumentation](https://github.com/crytic/slither/wiki/Adding-a-new-detector) beschreibt, wie man eine neue Schwachstellenanalyse schreibt.

* Die [API-Dokumentation](https://github.com/crytic/slither/wiki/Python-API) beschreibt die Methoden und Objekte, die für benutzerdefinierte Analysen verfügbar sind.

* Die [SlithIR-Dokumentation](https://github.com/crytic/slither/wiki/SlithIR) beschreibt die Zwischendarstellung SlithIR.

## FAQ

Wie schließe ich Mocks oder Tests aus?

* Siehe unsere Dokumentation zur [Pfadfilterung](https://github.com/crytic/slither/wiki/Usage#path-filtering).

Wie behebe ich "unknown file" oder Kompilierungsprobleme?

* Da Slither den solc AST benötigt, müssen alle Abhängigkeiten verfügbar sein.
Wenn ein Vertrag Abhängigkeiten hat, wird `slither contract.sol` fehlschlagen.
Verwende stattdessen `slither .` im übergeordneten Verzeichnis von `contracts/` (du solltest `contracts/` sehen, wenn du `ls` ausführst).
Wenn du einen `node_modules/`-Ordner hast, muss er sich im selben Verzeichnis wie `contracts/` befinden. Um zu überprüfen, ob dieses Problem mit Slither zusammenhängt, führe den Kompilierungsbefehl für das von dir verwendete Framework aus, z.B. `npx hardhat compile`. Das muss erfolgreich funktionieren; andernfalls kann Slithers Kompilierungs-Engine, crytic-compile, den AST nicht generieren.

## Lizenz

Slither ist unter der AGPLv3-Lizenz lizenziert und wird unter dieser vertrieben. [Kontaktiere uns](mailto:[email protected]), wenn du eine Ausnahme von den Bedingungen suchst.

## Veröffentlichungen

### Veröffentlichung von Trail of Bits

* [Slither: A Static Analysis Framework For Smart Contracts](https://arxiv.org/abs/1908.09878), Josselin Feist, Gustavo Grieco, Alex Groce - WETSEB '19

### Externe Veröffentlichungen

Titel | Nutzung | Autoren | Konferenz/Zeitschrift | Code
--- | --- | --- | --- | ---
[ReJection: A AST-Based Reentrancy Vulnerability Detection Method](https://www.researchgate.net/publication/339354823_ReJection_A_AST-Based_Reentrancy_Vulnerability_Detection_Method) | AST-basierte Analyse auf Basis von Slither | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 | -
[MPro: Combining Static and Symbolic Analysis for Scalable Testing of Smart Contract](https://arxiv.org/pdf/1911.00570.pdf) | Nutzung von Datenabhängigkeiten durch Slither | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | [MPro](https://github.com/QuanZhang-William/M-Pro)
[ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart Contracts](https://wcventure.github.io/FuzzingPaper/Paper/SANER20_ETHPLOIT.pdf) | Nutzung von Datenabhängigkeiten durch Slither | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | -
[Verification of Ethereum Smart Contracts: A Model Checking Approach](http://www.ijmlc.org/vol10/977-AM0059.pdf) | Symbolische Ausführung auf Basis von Slithers CFG | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | -
[Smart Contract Repair](https://arxiv.org/pdf/1912.05823.pdf) | Verlass auf Slithers Schwachstellendetektoren | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | [SCRepair](https://github.com/xiaoly8/SCRepair/)
[Demystifying Loops in Smart Contracts](https://www.microsoft.com/en-us/research/uploads/prod/2020/08/loops_solidity__camera_ready-5f3fec3f15c69.pdf) | Nutzung von Datenabhängigkeiten durch Slither | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | -
[Trace-Based Dynamic Gas Estimation of Loops in Smart Contracts](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9268144) | Verwendung von Slithers CFG zur Erkennung von Schleifen | Chunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang Hu | IEEE Open J. Comput. Soc. 1 (2020) | -
```

---

[Read more](https://github.com/crytic/slither)
Tool herunterladen