Spainmistupv/JavaSlicer
A program slicer for Java, based on the system dependence graph (SDG).
🔪 JavaSlicer — Công cụ cắt bỏ chương trình Java dựa trên đồ thị phụ thuộc hệ thống
Một bộ công cụ phân tích tĩnh giúp bạn tìm ra những phần của mã nguồn thực sự ảnh hưởng đến giá trị của một biến cụ thể.
JavaSlicer là một program slicer (công cụ cắt bỏ chương trình) cho ngôn ngữ Java, được phát triển dựa trên đồ thị phụ thuộc hệ thống (System Dependence Graph - SDG). Kỹ thuật program slicing giúp trích xuất tập hợp các câu lệnh liên quan đến giá trị của một biến tại một câu lệnh cụ thể (gọi là slicing criterion). Tập hợp này được gọi là một slice, và có thể ứng dụng trong gỡ lỗi, song song hóa chương trình, phát hiện mã trùng lặp, v.v. Dự án bao gồm hai module chính.
✨ Điểm nổi bật
- sdg-core: Thư viện lõi để tạo slice từ mã nguồn Java thông qua đồ thị SDG, trong đó các câu lệnh được biểu diễn dưới dạng nút và các phụ thuộc giữa chúng dưới dạng cạnh.
- sdg-cli: Công cụ dòng lệnh cho phép người dùng nhập một chương trình Java và tiêu chí cắt, sau đó xuất ra slice tương ứng.
- Hỗ trợ tiêu chí cắt linh hoạt: Dùng cờ
-c {file}#{line}:{var}để chỉ định tệp, dòng và biến cần cắt. - Đóng gói đầy đủ phụ thuộc: Tạo file JAR chứa tất cả thư viện cần thiết bằng Maven.
- Hỗ trợ thư viện bên ngoài: Có thể thêm thư viện thông qua cờ
-ihoặc đưa vào classpath để phân tích sâu hơn. - Xuất đồ thị SDG: Hỗ trợ sinh ảnh đồ thị dưới định dạng
dothoặc PDF để dễ hình dung. - Tích hợp JavaParser: Tự động phân tích cú pháp và giải quyết lời gọi phương thức trong JRE và thư viện người dùng.
- Giới hạn tính năng: Hiện chưa hỗ trợ các tính năng đa luồng như thread, bộ nhớ chia sẻ, phương thức đồng bộ.
💡 Vì sao đáng chú ý
JavaSlicer khác biệt từ các công cụ phân tích khác bằng cách sử dụng đồ thị phụ thuộc hệ thống (SDG) như nền tảng trung gian, cho phép truy xuất chính xác các mối quan hệ phụ thuộc dữ liệu và điều khiển giữa các câu lệnh. Điều này giúp kết quả cắt bỏ được chính xác và có hệ thống hơn so với cách tiếp cận cắt bỏ dựa trên cây cú pháp truyền thống. Dự án phù hợp với các nhà phân tích phần mềm, kỹ sư bảo mật hoặc bất kỳ ai cần hiểu sâu về luồng dữ liệu và cấu trúc phụ thuộc trong mã nguồn Java lớn.
#ProgramSlicing #StaticAnalysis #SDG #Java #OpenSource #TiniX
Similar Projects
Discover other similar projects and AI models.
Reverse engineer anything with agents, from app behavior down to native binaries.
Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. By default it supports the Google Java Style Guide and Sun Code Conventions, but is highly configurable. It can be invoked with an ANT task and a command line program.
Ghidra MCP Server — 200+ MCP tools for AI-powered reverse engineering. GUI plugin + headless server, lazy tool loading, convention enforcement, batch operations, Ghidra Server integration, and Docker deployment.
Slicer4J is an accurate, low-overhead dynamic slicer for Java programs.