
RetDec एक पुनर्लक्ष्यीकरणीय मशीन-कोड डीकम्पाइलर है जो LLVM पर आधारित है।
चेतावनी
RetDec परियोजना वर्तमान में संसाधनों की कमी के कारण सीमित रखरखाव मोड में है:
- पुल अनुरोधों का स्वागत है। यदि संभव हो तो बिना देरी के उन्हें प्राथमिकता दी जाती है।
- मुद्दों पर एक तिमाही तक की देरी से प्रतिक्रिया दी जाती है। मुद्दों को सक्रिय रूप से हल नहीं किया जाता जब तक कि वे बुनियादी परियोजना रखरखाव से संबंधित न हों।
- बुनियादी परियोजना रखरखाव जारी है।
- केवल बहुत सीमित विकास किया जा रहा है।
RetDec LLVM पर आधारित एक पुनर्लक्ष्यीय मशीन-कोड डिकंपाइलर है।
डिकंपाइलर किसी विशेष लक्ष्य आर्किटेक्चर, ऑपरेटिंग सिस्टम या निष्पादनीय फ़ाइल प्रारूप तक सीमित नहीं है:
विशेषताएं:
अधिक जानकारी के लिए, हमारी जाँच करें
RetDec प्राप्त करने और स्थापित करने के दो तरीके हैं:
retdec/share/retdec/README.md फ़ाइल के उपयोग अनुभाग में दिए गए निर्देशों का पालन करें।हम वर्तमान में विंडोज (7 या बाद का), Linux, macOS, और (प्रयोगात्मक रूप से) FreeBSD का समर्थन करते हैं। RetDec के स्थापित संस्करण को लगभग 5 से 6 GB खाली डिस्क स्थान की आवश्यकता होती है।
कृपया सुनिश्चित करें कि आप उपयोग किए गए RetDec संस्करण के अनुरूप निर्देश पढ़ रहे हैं। यदि अनिश्चित हों, तो स्थापना में retdec/share/retdec/README.md फ़ाइल देखें।
RetDec स्थापित करने के बाद, Microsoft Visual C++ Redistributable for Visual Studio 2017 स्थापित करें।
निम्नलिखित प्रोग्राम स्थापित करें:
test.exe नामक बाइनरी फ़ाइल को डीकंपाइल करने के लिए, चलाएं
$RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
अधिक जानकारी के लिए, --help के साथ retdec-decompiler.exe चलाएं।
RetDec स्थापित करने के बाद, अपने वितरण के पैकेज प्रबंधक के माध्यम से निम्नलिखित पैकेज स्थापित करें:
test.exe नामक बाइनरी फ़ाइल को डीकंपाइल करने के लिए, चलाएं
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
अधिक जानकारी के लिए, --help के साथ retdec-decompiler चलाएं।
RetDec स्थापित करने के बाद, निम्नलिखित पैकेज स्थापित करें:
test.exe नामक बाइनरी फ़ाइल को डीकंपाइल करने के लिए, चलाएं
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
अधिक जानकारी के लिए, --help के साथ retdec-decompiler चलाएं।
FreeBSD के लिए वर्तमान में कोई पूर्व-निर्मित "पोर्ट्स" पैकेज नहीं हैं। आपको डिकंपाइलर स्वयं बनाना और स्थापित करना होगा। प्रक्रिया नीचे वर्णित है।
test.exe नामक बाइनरी फ़ाइल को डीकंपाइल करने के लिए, चलाएं
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
अधिक जानकारी के लिए, --help के साथ retdec-decompiler चलाएं।
आप अपने प्रोजेक्ट्स में विभिन्न RetDec लाइब्रेरीज़ का आसानी से उपयोग कर सकते हैं - यदि वे CMake के साथ बनाए गए हों। RetDec इंस्टॉलेशन में सभी आवश्यक हेडर, लाइब्रेरीज़ और CMake स्क्रिप्ट शामिल हैं।
यदि आपने RetDec को अपने सिस्टम के मानक स्थापना स्थान (जैसे /usr, /usr/local) में स्थापित किया है, तो इसके घटकों का उपयोग करने के लिए आपको बस इतना करना है:```cmake
find_package(retdec 5.0 REQUIRED
COMPONENTS
[...]
)
target_link_libraries(your-project
PUBLIC
retdec::
[...]
)
यदि आपने RetDec को ऐसे स्थान पर स्थापित नहीं किया है जहाँ इसे स्वचालित रूप से खोजा जा सके, तो `find_package()` का उपयोग करने से पहले आपको CMake को इसे खोजने में मदद करनी होगी। सामान्यतः ऐसा करने के दो तरीके हैं (केवल एक चुनें और उपयोग करें):
1. RetDec स्थापना निर्देशिका को [`CMAKE_PREFIX_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html) में जोड़ें:
```cmake
list(APPEND CMAKE_PREFIX_PATH ${RETDEC_INSTALL_DIR})
```
2. स्थापित RetDec CMake स्क्रिप्ट का पथ `retdec_DIR` पर सेट करें:
```cmake
set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
```
उपलब्ध RetDec घटकों की सूची के लिए [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) विकी पृष्ठ देखें, या उनका उपयोग करने के तरीके पर डेमो के लिए [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) देखें।
## निर्माण और स्थापना
यह खंड RetDec के स्थानीय निर्माण और स्थापना का वर्णन करता है। Docker के लिए निर्देश अगले खंड में दिए गए हैं।
### आवश्यकताएँ
#### लिनक्स
* C++17 का समर्थन करने वाला C++ कंपाइलर और मानक C++ लाइब्रेरी (जैसे GCC >= 7)
* [CMake](https://cmake.org/) (संस्करण >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (संस्करण >= 1.1.1)
* [Python](https://www.python.org/) (संस्करण >= 3.4)
* [autotools](https://en.wikipedia.org/wiki/GNU_Build_System) ([autoconf](https://www.gnu.org/software/autoconf/autoconf.html), [automake](https://www.gnu.org/software/automake/), और [libtool](https://www.gnu.org/software/libtool/))
* [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
* [m4](https://www.gnu.org/software/m4/m4.html)
* [zlib](http://zlib.net/)
* वैकल्पिक: API दस्तावेज़ीकरण उत्पन्न करने के लिए [Doxygen](http://www.stack.nl/~dimitri/doxygen/) और [Graphviz](http://www.graphviz.org/)
Debian-आधारित वितरणों (जैसे Ubuntu) पर, आवश्यक पैकेज `apt-get` के साथ स्थापित किए जा सकते हैं:```sh
sudo apt-get install build-essential cmake git openssl libssl-dev python3 autoconf automake libtool pkg-config m4 zlib1g-dev upx doxygen graphviz
RPM-आधारित वितरणों (जैसे Fedora) पर, आवश्यक पैकेज dnf के साथ स्थापित किए जा सकते हैं:```sh
sudo dnf install gcc gcc-c++ cmake make git openssl openssl-devel python3 autoconf automake libtool pkg-config m4 zlib-devel upx doxygen graphviz
आर्क लिनक्स पर, आवश्यक पैकेजों को `pacman` के साथ स्थापित किया जा सकता है:```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz
पैकेजों को अधिमानतः Homebrew के माध्यम से स्थापित किया जाना चाहिए।
पैकेजों को FreeBSD के प्री-कंपाइल्ड पैकेज रिपॉजिटरी से pkg कमांड का उपयोग करके या ports डेटाबेस विधि का उपयोग करके स्क्रैच से बनाकर स्थापित किया जाना चाहिए।
pkg install cmake python37 git autotools
याportsnap fetchportsnap extractcmake होगा:
whereis cmakecd /usr/ports/devel/cmakemake install cleanनोट: यद्यपि RetDec अब सिस्टम-व्यापी स्थापना का समर्थन करता है (#94), जब तक आप अपने वितरण के पैकेज मैनेजर का उपयोग करके इसे स्थापित नहीं करते, हम RetDec को एक निर्दिष्ट निर्देशिका में स्थानीय रूप से स्थापित करने की अनुशंसा करते हैं। इसका कारण यह है कि अनइंस्टॉलेशन आसान होगा क्योंकि आपको केवल एक निर्देशिका हटानी होगी। स्थानीय स्थापना करने के लिए, cmake को -DCMAKE_INSTALL_PREFIX=<path> पैरामीटर के साथ चलाएं, जहां <path> वह निर्देशिका है जिसमें RetDec स्थापित किया जाएगा (जैसे Linux और macOS पर $HOME/projects/retdec-install, और Windows पर C:\projects\retdec-install)।
git clone https://github.com/avast/retdeccd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N समानांतर बिल्ड के लिए उपयोग किए जाने वाले प्रक्रियाओं की संख्या है, आमतौर पर कोर की संख्या + 1 सबसे तेज़ संकलन समय देता है)make installcmd.exe)cd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path> -G<generator>cmake --build . --config Release -- -mआपको cmake को निम्नलिखित पैरामीटर पास करने होंगे:
-DCMAKE_INSTALL_PREFIX=<path> स्थापना पथ को <path> पर सेट करने के लिए। यदि आप Windows पर बैकस्लैश का उपयोग कर रहे हैं तो पथ को उद्धृत करें (जैसे -DCMAKE_INSTALL_PREFIX="C:\retdec")।-G<generator> 32-बिट बिल्ड के लिए -G"Visual Studio 15 2017" या Visual Studio 2017 का उपयोग करके 64-बिट बिल्ड के लिए -G"Visual Studio 15 2017 Win64" है। Visual Studio के बाद के संस्करणों का उपयोग किया जा सकता है।आप cmake को निम्नलिखित अतिरिक्त पैरामीटर पास कर सकते हैं:
-DRETDEC_DOC=ON API दस्तावेज़ीकरण के साथ बिल्ड करने के लिए (Doxygen और Graphviz की आवश्यकता है, डिफ़ॉल्ट रूप से अक्षम)।-DRETDEC_TESTS=ON परीक्षणों के साथ बिल्ड करने के लिए (डिफ़ॉल्ट रूप से अक्षम)।-DRETDEC_DEV_TOOLS=ON विकास उपकरणों के साथ बिल्ड करने के लिए (डिफ़ॉल्ट रूप से अक्षम)।-DRETDEC_COMPILE_YARA=OFF स्थापना चरण पर YARA नियम संकलन को अक्षम करने के लिए (डिफ़ॉल्ट रूप से सक्षम)।-DCMAKE_BUILD_TYPE=Debug डिबगिंग जानकारी के साथ बिल्ड करने के लिए, जो विकास के दौरान उपयोगी है। डिफ़ॉल्ट रूप से, प्रोजेक्ट Release मोड में बनाया जाता है। Windows पर इसका कोई प्रभाव नहीं है, लेकिन cmake --build . को --config Debug पैरामीटर के साथ चलाकर भी यही प्राप्त किया जा सकता है।-D<dep>_LOCAL_DIR=<path> जहां <dep> {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD} में से है (जैसे -DCAPSTONE_LOCAL_DIR=<path>), बिल्ड समय पर एक ताज़ा कॉपी डाउनलोड करने के बजाय RetDec निर्भरता के लिए पर स्थानीय रिपॉजिटरी क्लोन का उपयोग करने के लिए। ऐसे कई विकल्प एक साथ उपयोग किए जा सकते हैं।Docker समर्थन समुदाय द्वारा बनाए रखा जाता है। यदि आपके लिए कुछ काम नहीं करता है या आपके पास सुधार के लिए सुझाव हैं, तो एक issue या PR खोलें।
Docker में बिल्ड करने के लिए आवश्यक लाइब्रेरीज़ को स्थानीय रूप से स्थापित करने की आवश्यकता नहीं होती है। पूरे बिल्ड टूलचेन को सेट अप किए बिना RetDec को आज़माने के लिए यह एक अच्छा विकल्प है।
RetDec Docker इमेज बनाने के लिए, चलाएँ:``` docker build -t retdec - < Dockerfile
यह इस रिपॉजिटरी की master branch से इमेज बनाता है।
रिपॉजिटरी की स्थानीय प्रतिलिपि का उपयोग करके इमेज बनाने के लिए, development Dockerfile, `Dockerfile.dev` का उपयोग करें:```
docker build -t retdec:dev . -f Dockerfile.dev
यदि आपका uid 1000 नहीं है, तो सुनिश्चित करें कि आपकी इनपुट बाइनरी फ़ाइलों वाली निर्देशिका RetDec के लिए सुलभ हो:```
chmod 0777 /path/to/local/directory
अब, आप एक कंटेनर के अंदर डीकंपाइलर चला सकते हैं:```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary
नोट: /destination भाग को संशोधित न करें। आपको केवल /path/to/local/directory को बदलने की आवश्यकता है। आउटपुट फ़ाइलें तब /path/to/local/directory में उत्पन्न होंगी।
हम दो तरीकों से master शाखा में नवीनतम कमिट से अद्यतित RetDec पैकेज उत्पन्न करते हैं:
ये बिल्ड मुख्यतः RetDec डेवलपर्स, योगदानकर्ताओं, और उत्पाद के साथ प्रयोग करने वाले अन्य लोगों (जैसे, यह परीक्षण करना कि आधिकारिक रिलीज़ में मौजूद कोई समस्या वर्तमान master में अभी भी मौजूद है या नहीं) के लिए अभिप्रेत हैं।
आप इनका उपयोग अपनी इच्छानुसार कर सकते हैं, लेकिन ध्यान रखें कि इनके आपके सिस्टम पर काम करने की कोई गारंटी नहीं है (विशेषकर Linux संस्करण), और प्रतिगमन की संभावना है। एक स्थिर RetDec संस्करण प्राप्त करने के लिए, या तो नवीनतम आधिकारिक पूर्व-निर्मित पैकेज डाउनलोड करें या नवीनतम RetDec संस्करण टैग का निर्माण करें।
TeamCity
Github Actions
आप macOS, Linux और Windows के लिए बिल्ड नवीनतम RetDec CI वर्कफ़्लो रन में पा सकते हैं।
master शाखा में नवीनतम कमिट के अनुरूप एक अद्यतन Doxygen-जनित सॉफ़्टवेयर संदर्भ के लिए परियोजना दस्तावेज़ीकरण देखें।
.dsm फ़ाइलें) के आउटपुट के लिए Vim सिंटैक्स-हाइलाइटिंग फ़ाइल।कॉपीराइट (c) 2017 Avast Software, MIT लाइसेंस के तहत लाइसेंस प्राप्त। अधिक विवरण के लिए LICENSE फ़ाइल देखें।
RetDec में एक संशोधित PeLib लाइब्रेरी शामिल है। Avast Software द्वारा जोड़े गए नए मॉड्यूल MIT लाइसेंस के तहत लाइसेंस प्राप्त हैं। मूल स्रोत निम्नलिखित लाइसेंस के तहत लाइसेंस प्राप्त हैं:
LICENSE-PELIB फ़ाइल देखें।RetDec तृतीय-पक्ष लाइब्रेरीज़ या अन्य संसाधनों का उपयोग करता है, जो उनके लाइसेंस के साथ LICENSE-THIRD-PARTY फ़ाइल में सूचीबद्ध हैं।
RetDec योगदान दिशानिर्देश देखें।
इस सॉफ़्टवेयर को अनुसंधान निधि TACR (चेक गणराज्य की प्रौद्योगिकी एजेंसी), ALFA कार्यक्रम संख्या TA01010667 द्वारा समर्थित किया गया था।
cmake --build . --config Release --target installcmake द्वारा उत्पन्न retdec.sln को Visual Studio IDE में खोल सकते हैंcd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N समानांतर बिल्ड के लिए उपयोग किए जाने वाले प्रक्रियाओं की संख्या है, आमतौर पर कोर की संख्या + 1 सबसे तेज़ संकलन समय देता है)make installsudo pkg install git cmakegit clone https://github.com/avast/retdeccd retdecmkdir build && cd build# FreeBSD (और अन्य BSDs) को cmake, python3, git, autotools की आवश्यकता होती है। OpenSSL ओएस में पूर्व-स्थापित है लेकिन इसके संस्करण की जाँच करें।
# प्रत्येक पैकेज के लिए बाद के संस्करण उपलब्ध हो सकते हैं।
# देखें कि क्या स्थापित है:
sudo pkg info cmake python37 autotools
# उन्हें स्थापित/अपग्रेड करें:
sudo pkg install cmake python37 autotools
cmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N समानांतर बिल्ड के लिए उपयोग किए जाने वाले प्रक्रियाओं की संख्या है, आमतौर पर कोर की संख्या + 1 सबसे तेज़ संकलन समय देता है)make install<path>-DRETDEC_ENABLE_<component>=ON केवल निर्दिष्ट घटक(ओं) (एक साथ कई ऐसे विकल्पों का उपयोग किया जा सकता है) और उनकी निर्भरताओं को बनाने के लिए। डिफ़ॉल्ट रूप से, सभी घटक बनाए जाते हैं। यदि इस तंत्र के माध्यम से कम से कम एक घटक सक्षम किया जाता है, तो अन्य सभी घटक जो स्पष्ट रूप से सक्षम नहीं थे (और सक्षम घटकों की निर्भरता के रूप में आवश्यक नहीं हैं) नहीं बनाए जाते हैं। सभी उपलब्ध घटक विकल्पों के लिए cmake/options.cmake देखें।
-DRETDEC_ENABLE_ALL=ON का उपयोग किया जा सकता है।-DRETDEC_ENABLE_<component>=ON के बजाय -DRETDEC_ENABLE=<अल्पविराम से अलग किए गए घटक सूची> का उपयोग किया जा सकता है (जैसे -DRETDEC_ENABLE=fileformat,loader,ctypesparser -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON के बराबर है)।