Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
efcf-framework — EF/CF - अत्यंत तेज़ स्मार्ट कॉन्ट्रैक्ट फ़ज़िंग | Kitploit
उपकरण/GitHubGitHub/uni-due-syssec/efcf-framework
भेद्यता विश्लेषणशोषणफज़िंगबाइनरी विश्लेषण
GitHubuni-due-syssec/efcf-framework

efcf-framework

EF/CF - अत्यंत तेज़ स्मार्ट कॉन्ट्रैक्ट फ़ज़िंग

रिपॉजिटरी देखें
7013153 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

EF/CF - अत्यंत तेज़ (एथेरियम स्मार्ट) कॉन्ट्रैक्ट फ़ज़र

EF/CF स्मार्ट कॉन्ट्रैक्ट फ़ज़िंग के लिए एक नया दृष्टिकोण है: नए कस्टम-निर्मित फ़ज़र के बजाय, यह C/C++ कोड के मौजूदा फ़ज़िंग इंफ्रास्ट्रक्चर को स्मार्ट कॉन्ट्रैक्ट्स पर पुनः उपयोग करता है। वर्तमान में, AFL++ मुख्य रूप से समर्थित फ़ज़र है, हालांकि libfuzzer और honggfuzz के लिए कुछ बहुत ही प्रारंभिक समर्थन भी है।

मौजूदा फ़ज़िंग इंफ्रास्ट्रक्चर का उपयोग क्यों करें?

  • गति। हम तेज़ फ़ज़ कर सकते हैं। हमें नियमित रूप से लगभग 20k execs/sec/core मिलते हैं।
  • नेटिव कोड फ़ज़र अच्छी तरह से इंजीनियर और अनुकूलित होते हैं।
  • उचित कवरेज-मार्गदर्शन, कतार-प्रबंधन, नियतात्मक परीक्षण केस रीप्ले, आदि।

रास्ते में हमें किन समस्याओं का सामना करना पड़ता है?

  • हमें फ़ज़र को संरचना सिखाने की आवश्यकता है: अर्थात् एक लेन-देन क्या है और स्मार्ट कॉन्ट्रैक्ट का ABI क्या है। इसके लिए हम एक कस्टम म्यूटेटर का उपयोग करते हैं: ./src/ethmutator/
  • गति बढ़ाने और उपयोगी कवरेज फीडबैक पाने के लिए, हम EVM बाइटकोड को एक कस्टम ट्रांसपाइलर का उपयोग करके C++ में अनुवादित करते हैं ./src/evm2cpp/

यह रिपॉजिटरी EF/CF प्रोजेक्ट का प्राथमिक प्रवेश बिंदु है। इसमें सभी प्रासंगिक कोड ./src/ में उप-प्रोजेक्ट्स के रूप में और कई सुविधाजनक स्क्रिप्ट्स शामिल हैं: स्थापना के लिए, फ़ज़िंग अभियान शुरू करने के लिए, और विभिन्न डेटासेट जो फ़ज़र का परीक्षण करने (और अन्य उपकरणों से तुलना करने) के लिए हैं।

  • ./src/ - EF/CF को बनाने और चलाने के लिए आवश्यक सभी स्रोत शामिल हैं; पुनरुत्पादन के लिए सभी प्रत्यक्ष निर्भरताएँ git सबमॉड्यूल्स के रूप में जोड़ी गई हैं।
  • ./data/ - मूल्यांकन के दौरान उपयोग किए गए डेटासेट शामिल हैं
  • ./scripts - प्रयोग, स्थापना आदि चलाने के लिए स्क्रिप्ट शामिल हैं
  • ./docker - कंटेनर-आधारित वर्कफ़्लो के लिए Dockerfile
    • मानक Ubuntu है, लेकिन आप चाहें तो Fedora या Arch Linux आधारित कंटेनर भी ले सकते हैं।
    • ./docker/tools/ में उन उपकरणों के लिए dockerfiles हैं जिनके विरुद्ध हमने EF/CF का मूल्यांकन किया। हमने अपने पेपर में मूल्यांकित संस्करणों को dockerfiles में स्थिर करने की पूरी कोशिश की।
  • ./EXPERIMENTS.md - एक मार्गदर्शिका शामिल है जो हमारे पेपर के प्रयोगों को पुनः प्रस्तुत करने के लिए।
  • ./examples - EF/CF द्वारा उत्पादित उदाहरण आउटपुट शामिल हैं

EF/CF पेपर

हम EF/CF की वास्तुकला, कार्यान्वयन का वर्णन करते हैं, और अपने मूल्यांकन परिणामों का सारांश अपने पेपर में प्रस्तुत करते हैं: arxiv.org प्रीप्रिंट

शैक्षणिक कार्य में उद्धरण

शैक्षणिक कार्य में EF/CF का उल्लेख करते समय कृपया निम्नलिखित bibtex प्रविष्टि का उपयोग करें उद्धरण के लिए:```bibtex @InProceedings{efcf2023, author = "Michael Rodler and David Paaßen and Wenting Li and Lukas Bernhard and Thorsten Holz and Ghassan Karame and Lucas Davi", title = "EF/CF: High Performance Smart Contract Fuzzing for Exploit Generation", booktitle = "{IEEE} European Symposium on Security and Privacy ({EuroS&P})", publisher = "{IEEE}", year = "2023", }

## Quickstart

अनुशंसित तरीका EF/CF को एक इंटरैक्टिव डॉकर कंटेनर के रूप में चलाना है।

1. शेल के साथ कंटेनर में प्रवेश करें   ```
   docker run --rm -it ghcr.io/uni-due-syssec/efcf-framework

या क्लोन की गई रिपॉजिटरी से कंटेनर बनाएँ ``` make gitmodules # to fetch the git submodules make container-enter

1. एक solidity कॉन्ट्रैक्ट को संकलित करें और फिर पहले क्रैश/बग का पता चलने तक
फ़ज़ करें:   ```
efcfuzz --until-crash --out ./baby_bank_results/ --source ./data/examples/baby_bank.sol
  1. पहचाने गए क्रैश का निरीक्षण करें ``` cd /tmp/baby_bank_results/ ./r.sh crashes_min/default_id:000000*

स्थापना / सेटअप

Git Submodules

गिट नहीं है? अगर आप tarball/docker release का उपयोग करते हैं, तो इसे अनदेखा करें।

पहले से क्लोन किए गए repositories में नवीनतम submodule commits प्राप्त करने के लिए git submodule update --init चलाएँ। इसे ./src/eEVM में भी चलाना सुनिश्चित करें।``` git submodule update --init; cd src/eEVM/; git submodule update --init; cd ../../

*चेतावनी:* `git clone --recursive $repo` चलाना या `git sumbodule (update|init)` को `--recursive` तर्क देना git को AFL++ रिपॉजिटरी के सबमॉड्यूल्स में recursively जाने के लिए बाध्य करेगा, जो इस प्रोजेक्ट के लिए आवश्यक नहीं हैं। इसलिए कुछ स्थान बचाने के लिए recursive सबमॉड्यूल चेकआउट से बचना बेहतर है।


### कंटेनर

हम कंटेनर-आधारित वर्कफ़्लो के लिए निम्नलिखित सुविधाजनक make टारगेट प्रदान करते हैं:```sh
make container-build  # build default efcf container
make container-enter  # enter default efcf container in current working dir

यदि आप एक स्वच्छ बिल्ड सुनिश्चित करना चाहते हैं, तो आप निम्न कमांड का उपयोग कर सकते हैं```sh make container-build CLEAN_CHECKOUT=1

वैकल्पिक रूप से कंटेनर को निम्नलिखित डॉकर कमांड के साथ बनाया जा सकता है:```sh
docker build \
    -f docker/ubuntu.Dockerfile \
    -t efcf:latest \
    .

ध्यान दें कि Archlinux और Fedora पर आधारित Dockerfile भी है। उन्हें भी काम करना चाहिए लेकिन उनका परीक्षण उतना अच्छी तरह से नहीं किया गया है।

docker image को मैन्युअल रूप से वितरित करने के लिए (जैसे, यदि कुछ स्थानीय परिवर्तन शामिल हैं), उपयोग करें:``` make container-release docker load -i ./efcf*.tar

हम लॉन्च करने के लिए निम्नलिखित docker विकल्पों की अनुशंसा करते हैं:

* `--security-opt seccomp=unconfined` - बेहतर fuzzing प्रदर्शन के लिए
* `--net=host` - स्थानीय ethereum नोड तक आसान पहुँच के लिए
* `--tmpfs "/tmp/efcf/":exec,size=6g` - यदि संभव हो तो EF/CF की अस्थायी फ़ाइलें ramdisk पर रखें (कम डिस्क घिसाव)
* `--privileged` - `afl-system-config` या `efcfuzz --configure-system` चलाने के लिए
* `-v` - EF/CF के आउटपुट डेटा को स्थायी रखने के लिए


### VM / बेयर-मेटल

VM या बेयर-मेटल-आधारित वर्कफ़्लो के लिए:```sh
make system-install   # install efcf to current system (requires root or sudo rights)

ध्यान दें कि बहुत सारी स्क्रिप्टें वैसे भी सापेक्ष निर्देशिका लेआउट पर काम करती हैं, इसलिए यह ज़्यादातर निर्भरताएँ (dependencies) और कुछ उपकरण (tools) इंस्टॉल करता है जो आपके PATH में रखने के लिए उपयोगी हैं। हमने EF/CF को निम्नलिखित Linux वितरणों पर परीक्षण किया है:

  • Ubuntu Jammy (या उससे नया)
  • Fedora ($ > 35 $)
  • Archlinux

(वितरण (Distro) ज़्यादा मायने नहीं रखता, हमने LLVM 13 और 14 का परीक्षण किया है और 14 को पसंदीदा विकल्प माना है। LLVM 11 या 12 भी शायद अभी भी काम करें, लेकिन हमेशा की तरह - जितना नया उतना बेहतर। महत्वपूर्ण बात यह है कि एक ऐसा LLVM होना चाहिए जो AFL++ के हमारे फोर्क (fork) के साथ संगत हो।)

Mac OS / M1 पर

हमने EF/CF का Mac OS पर मूल रूप से (natively) परीक्षण नहीं किया है। संभवतः चीज़ें काम नहीं करेंगी (जैसे, Mac OS पर afl-clang-lto काम नहीं करता प्रतीत होता है)। सबसे अच्छा विकल्प docker का उपयोग करना है।```sh

make sure that the submodules are initialized

make gitmodules

pull the linux/amd64 base image

docker pull ubuntu:jammy --platform linux/amd64

build the ef/cf image

docker build -t efcf:latest -f docker/ubuntu.Dockerfile --platform linux/amd64 .

launch the EF/CF container

docker run --tmpfs "/tmp/efcf/":exec,size=8g --platform linux/amd64 --rm -it -v $(pwd):$(pwd) -w $(pwd) efcf:latest

हमने docker desktop v4.21.1 का उपयोग करके परीक्षण किया और बुनियादी EF/CF उपयोग काम करता है। हालाँकि, निम्नलिखित पर विचार करें:
* यदि आपको बिल्ड के दौरान segfaults दिखें: Mac OS पर docker द्वारा उपयोग की जाने वाली VM की मेमोरी सीमा बढ़ाने का प्रयास करें।
* docker में rosetta का उपयोग करके acceleration सक्षम करने का प्रयास करें - उम्मीद है कि यह थोड़ा तेज़ होगा।


### विकास सेटअप
टूल डाउनलोड करें