19 रिपॉजिटरी
Generation of visual graphs representing the logical execution paths of functions through basic blocks and edges.
Distinct from Control Flow Logic Models: Focuses on the automated generation of graphs from binary code rather than manual visual modeling of logic.
Explore 19 awesome GitHub repositories matching software engineering & architecture · Control-Flow Graph Generation. Refine with filters or upvote what's useful.
ILSpy is a .NET decompiler and binary analyzer designed to convert compiled .NET assemblies back into readable C# source code. It functions as a metadata explorer and a common intermediate language viewer, enabling the analysis of compiled code and the execution of reverse engineering workflows. The project distinguishes itself through specialized translation capabilities, such as converting compiled binary XML (BAML) back into human-readable XAML for user interface analysis. It also provides tools for inspecting native machine code and extracting metadata from program database (PDB) files.
Decomposes method bodies into basic blocks and edges to visualize the logical execution paths of a function.
Prepack is a build-time transformation tool and static analysis engine designed to optimize JavaScript source code. By executing code during the build process, it evaluates program logic and state to precompute results, effectively simplifying complex operations before the application is deployed. The tool functions as a bundle optimizer that integrates into existing development pipelines to refine application logic. It employs abstract interpretation and symbolic execution to track program behavior across various paths, allowing it to perform constant folding, eliminate unreachable code, and
Generates control flow graphs to identify and eliminate unreachable code paths.
Angr is a binary analysis framework and static analysis tool used for reverse engineering compiled binaries. It serves as a binary decompiler and a lifting platform that translates machine code into a common intermediate representation to enable cross-architecture analysis. The framework integrates a symbolic execution engine and constraint solvers to determine the inputs required to reach specific program states. It also employs untrusted code sandboxing to isolate guest code from the host environment during analysis. Its capabilities cover control flow and data flow analysis, including the
Automates the generation of control-flow graphs by mapping jumps and branches between basic blocks in binaries.
RetDec is a reverse engineering framework and static binary analysis tool. Its primary purpose is to function as an LLVM-based machine code decompiler that translates binary machine code from multiple architectures into high-level C source code. The system employs a multi-stage lifting pipeline to recover program logic, using an intermediate representation to apply optimizations before emitting source code. It distinguishes itself through the ability to identify compilers and packers, perform executable unpacking, and reconstruct class hierarchies and original program structures. The framewo
Generates call and control-flow graphs to visualize logical execution paths from binary code.
Retdec is an LLVM-based machine code decompiler and static binary analysis tool designed for binary reverse engineering. It translates binary executable code into high-level representations to facilitate the reconstruction of program logic from compiled machine code. The system utilizes a retargetable frontend architecture and a multi-stage lifting pipeline to convert raw bytes into a common intermediate language. It differentiates custom program logic from known library code through signature-based identification and provides utilities for binary symbol demangling to restore human-readable n
Generates visual call graphs and control-flow graphs representing the logical execution paths of functions.
Binaryen is a WebAssembly compiler toolchain and optimizer designed to transform, validate, and shrink binary modules. It provides a comprehensive intermediate representation framework that converts binary code into a single-assignment form to enable advanced program analysis and code transformation. The project includes a specialized transformation engine that applies iterative optimization passes to increase execution speed and reduce binary size. Additionally, it functions as a transpiler that translates WebAssembly binary modules into executable JavaScript for environments that lack nativ
Converts arbitrary graphs of basic blocks and branches into valid structured execution paths for binary emission.
This project is a collection of official toolsets and server implementations designed for the parsing, formatting, and semantic analysis of the Go programming language. It includes a language server that provides real-time code intelligence and automated editing capabilities to editors via the Language Server Protocol. The toolset provides a suite of utilities for source code formatting and static analysis. This includes automated standardization of code layout, import organization, and the generation of string representation methods for enumerated types. The project covers broad static anal
Generates directed graphs representing all possible execution paths to perform deep static analysis and bug detection.
de4dot is a .NET deobfuscator, unpacker, and assembly analysis tool. It is designed to remove obfuscation layers, restore metadata, and simplify bytecode control flow to transform protected binaries back into human-readable code. The project features specialized systems for decrypting strings and constants using both static and dynamic analysis. It identifies specific protection tools through pattern-based detection and strips anti-analysis protections, such as tamper detection and anti-debugging code. The tool provides a suite of reverse engineering capabilities, including binary wrapper un
Simplifies bytecode control flow by removing proxy methods and inlining split functions.
Cppcheck C और C++ सोर्स कोड के लिए एक स्टेटिक एनालिसिस टूल और लिंटर है जिसे प्रोग्राम को निष्पादित किए बिना प्रोग्रामिंग त्रुटियों, मेमोरी लीक और सुरक्षा उल्लंघनों का पता लगाने के लिए डिज़ाइन किया गया है। यह प्रोग्राम में समवर्ती मुद्दों, टाइप कास्ट त्रुटियों और सुरक्षित कोडिंग मानकों के अनुपालन की पहचान करने के लिए एक बग डिटेक्शन इंजन और गुणवत्ता आश्वासन टूल के रूप में कार्य करता है। यह प्रोजेक्ट फ़ाइलों का चयन करने और त्रुटियों की समीक्षा करने के लिए एक ग्राफिकल यूज़र इंटरफेस प्रदान करता है, साथ ही नामकरण सम्मेलनों और कोडिंग मानकों को लागू करने के लिए एक लिंटर भी प्रदान करता है। यह विशिष्ट कोडिंग पैटर्न की पहचान करने के लिए रेगुलर एक्सप्रेशन का उपयोग करके कस्टम विश्लेषण नियमों के निर्माण का समर्थन करता है। टूल में बड़े कोडबेस को प्रबंधित करने के लिए इंक्रीमेंटल एनालिसिस, चेतावनी दमन (warning suppression) और फ़ाइल बहिष्करण की क्षमताएं शामिल हैं। इसमें HTML रिपोर्ट जनरेशन और विकास के दौरान त्रुटि पहचान प्रदान करने के लिए VS Code जैसे एडिटर्स के साथ एकीकरण भी शामिल है।
Models execution paths using control-flow graphs to detect concurrency issues and unreachable code.
Builds per-function control flow graphs from the IR to enable path-sensitive analysis and vulnerability detection.
Fernflower is a Java bytecode decompiler and reverse engineering tool. It transforms compiled Java class files back into human-readable Java source code to reconstruct original program logic and variable names. The tool functions as a command line bytecode processor capable of batch processing Java archives and class files. It specifically handles obfuscated code analysis by renaming ambiguous identifiers and resolving naming conflicts to make the resulting source code easier to follow. The system employs static analysis to convert bytecode to source, utilizing debug information extraction t
Reconstructs structured loops and conditionals from arbitrary control-flow graphs extracted from bytecode.
python-uncompyle6 is a Python bytecode decompiler and reverse engineering tool designed to convert compiled bytecode files back into human-readable source code. It functions as a source code recoverer and bytecode disassembler, allowing for the analysis of internal program logic and the reconstruction of original language constructs. The tool provides cross-version support, enabling the analysis and recovery of source code from bytecode created across multiple different versions of the Python interpreter. This allows it to operate as a cross-version bytecode analyzer that can interpret varied
Reconstructs structured if-else statements and loop hierarchies by analyzing bytecode branch instructions and logical blocks.
Diaphora एक बाइनरी डिफिंग टूल और सिमिलरिटी इंजन है जिसे संकलित बाइनरी की तुलना करने और बदले गए या मेल खाने वाले कोड अनुभागों की पहचान करने के लिए डिज़ाइन किया गया है। यह एक रिवर्स इंजीनियरिंग प्लगइन के रूप में कार्य करता है जो फ़ंक्शंस के बीच संबंधों को मैप करता है और असेंबलर विश्लेषण और ग्राफ़ सिद्धांत का उपयोग करके संकलन इकाइयों का पता लगाता है। यह प्रोजेक्ट भेद्यता पैच विश्लेषण में माहिर है, जो उपयोगकर्ताओं को बाइनरी के विभिन्न संस्करणों की तुलना करके सुरक्षा सुधारों का पता लगाने की अनुमति देता है। यह बाइनरी के बीच सिंबल नाम और टिप्पणियों जैसे विश्लेषण मेटाडेटा को सिंक्रनाइज़ करता है और डीकंपाइल किए गए स्यूडो-कोड की तुलना करके पैच उत्पन्न करता है। इंजन फ़ंक्शंस के बीच समानता अनुपात की गणना करने के लिए कंट्रोल फ्लो ग्राफ़ और ह्यूरिस्टिक मिलान का उपयोग करता है। इसकी व्यापक क्षमताओं में कॉल ग्राफ़ को मैप करना, ऑब्जेक्ट फ़ाइल सीमाओं की पहचान करना और बड़े पैमाने पर क्रॉस-रेफरेंसिंग की सुविधा के लिए रिलेशनल डेटाबेस के माध्यम से विश्लेषण स्थिति का प्रबंधन करना शामिल है।
Generates control-flow graphs from binary code to calculate similarity ratios between functions.
Fernflower is a Java bytecode decompiler designed to convert compiled Java class files back into human-readable source code. It functions as a bytecode analysis tool that recovers original program logic and structure from compiled binaries. The project includes capabilities for obfuscated identifier resolution to rename ambiguous member elements, ensuring clear identifiers in the resulting source. These features support the analysis of obfuscated code, legacy code recovery, and Java malware analysis for security auditing. The system utilizes a structural analysis pipeline that includes contr
Reconstructs high-level loop and conditional logic from linear bytecode by analyzing jump instructions.
SpotBugs Java एप्लिकेशन के लिए एक स्टेटिक एनालिसिस टूल और बाइटकोड एनालाइज़र है। यह कोड को निष्पादित किए बिना बग्स, सुरक्षा कमजोरियों और परफॉरमेंस समस्याओं की पहचान करने के लिए संकलित क्लास फ़ाइलों को स्कैन करता है। सिस्टम तार्किक त्रुटियों और API दुरुपयोग का पता लगाने के लिए एक बग डिटेक्टर और स्टेटिक एप्लिकेशन सुरक्षा परीक्षण टूल दोनों के रूप में कार्य करता है। यह प्रोजेक्ट एक प्लगइन-आधारित डिटेक्टर आर्किटेक्चर के माध्यम से खुद को अलग करता है जो कस्टम डिटेक्शन नियम जोड़ने के लिए बाहरी लाइब्रेरी के एकीकरण की अनुमति देता है। यह SQL इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग और पाथ ट्रैवर्सल जैसी कमजोरियों के लिए विशेष सुरक्षा ऑडिटिंग प्रदान करता है, साथ ही विश्लेषण सटीकता को परिष्कृत करने और गलत सकारात्मक (false positives) को कम करने के लिए एक मॉड्यूलर सिस्टम प्रदान करता है। यह टूल कॉनकरेंसी सिंक्रोनाइज़ेशन त्रुटियों, नल पॉइंटर डीरेफरेंस, संसाधन लीक और टाइप कास्टिंग त्रुटियों सहित डिटेक्शन क्षेत्रों की एक विस्तृत श्रृंखला को कवर करता है। यह डेड कोड, परफॉरमेंस अक्षमताओं और सीरियलाइज़ेशन मुहावरों के उल्लंघन की भी पहचान करता है। ये क्षमताएं कमांड-लाइन इंटरफ़ेस, ग्राफिकल यूजर इंटरफेस और एकीकृत विकास वातावरण (IDE) के भीतर सीधे एकीकरण के माध्यम से सुलभ हैं। SpotBugs को क्वालिटी गेट्स लागू करने और HTML या XML प्रारूपों में विश्लेषण रिपोर्ट उत्पन्न करने के लिए बिल्ड पाइपलाइनों में एकीकृत किया जा सकता है।
Constructs a representation of all possible execution paths to identify unreachable code and infinite loops.
ConfuserEx is a security toolset for .NET applications that functions as a code obfuscator, binary encryptor, and application protector. Its primary purpose is to prevent reverse engineering by hiding sensitive application logic and data. The project employs specific hardening techniques including symbol renaming to hinder human readability and control-flow mutation to confuse decompilers. It further protects binaries by encrypting constants and resources to stop static analysis and memory dumping, while blocking the use of debuggers and profilers to prevent runtime analysis. Additional capa
Alters the execution path of methods to confuse decompilers and hide original program logic.
Robot is a functional and immutable finite state machine library for managing declarative application states and transitions. It utilizes an immutable state transition engine where next states and side effects are computed through pure functions operating on immutable data structures without any side-effect mutations. States and allowed transitions are mapped in a declarative state table definition, making the overall state machine logic readable and inspectable. The library connects finite state machines directly to component rendering engines through component reactive bindings, ensuring th
Parses state definitions into graphical node and edge diagrams to visualize application logic and flows easily.
SVF is an open-source static program analysis framework and points-to analysis library that tracks memory references, variable aliases, and data dependencies across whole programs. The platform translates compiled intermediate code formats into unified internal representations, constructing constraint graphs, call graphs, and control-flow graphs to model interprocedural execution behavior and memory state. The framework incorporates specialized engines for flow-sensitive, flow-insensitive, and context-sensitive pointer analysis alongside sparse value-flow graph generation. It features memory
A compiler-based tool that constructs sparse value-flow representations and control flow graphs to detect bugs, memory leaks, and information flows.
Deobfuscator is a static analysis and manipulation framework designed to inspect and modify compiled Java class files and bytecode instructions. It functions as a deobfuscator that simplifies and reverses obfuscated Java applications, alongside operating as a security runtime environment that isolates and executes untrusted or potentially malicious Java bytecode safely. The project processes class files through a sequence of custom transformation passes using visitor-based instruction parsing and a static class analysis engine that maps out class hierarchies and cross-references without dynam
Reconstructs tangled jump instructions and synthetic loops back into structured conditional blocks for easier human analysis.