{"id":37238796,"url":"https://github.com/user1342/Just-Another-Differ","last_synced_at":"2026-01-22T10:01:21.343Z","repository":{"id":215523259,"uuid":"739150162","full_name":"user1342/Just-Another-Differ","owner":"user1342","description":"🔎 Function Change Differ  |  A diffing tool for binary files when comparing obfuscated and changed function contents between versions 🛠️","archived":false,"fork":false,"pushed_at":"2024-04-13T06:36:24.000Z","size":397,"stargazers_count":9,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-13T20:45:00.776Z","etag":null,"topics":["binary-analysis","binary-diffing","ghidra","obfuscation","versioning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/user1342.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-04T22:18:48.000Z","updated_at":"2025-10-07T09:11:32.000Z","dependencies_parsed_at":"2024-01-05T00:16:10.440Z","dependency_job_id":"7f865ef7-56c7-4892-8ab7-cdfa42e86be6","html_url":"https://github.com/user1342/Just-Another-Differ","commit_stats":null,"previous_names":["user1342/just-another-differ"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/user1342/Just-Another-Differ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/user1342%2FJust-Another-Differ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/user1342%2FJust-Another-Differ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/user1342%2FJust-Another-Differ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/user1342%2FJust-Another-Differ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/user1342","download_url":"https://codeload.github.com/user1342/Just-Another-Differ/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/user1342%2FJust-Another-Differ/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28661007,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binary-analysis","binary-diffing","ghidra","obfuscation","versioning"],"created_at":"2026-01-15T06:00:38.747Z","updated_at":"2026-01-22T10:01:21.337Z","avatar_url":"https://github.com/user1342.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg width=100% src=\"main_cover.gif\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e 🔎 A diffing tool for binary files when comparing obfuscated and changed binary names between versions 🛠️ \u003c/b\u003e \u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n![GitHub contributors](https://img.shields.io/github/contributors/user1342/Just-Another-Differ)\n![GitHub Repo stars](https://img.shields.io/github/stars/user1342/Just-Another-Differ?style=social)\n![GitHub watchers](https://img.shields.io/github/watchers/user1342/Just-Another-Differ?style=social)\n![GitHub last commit](https://img.shields.io/github/last-commit/user1342/Just-Another-Differ)\n\u003cbr\u003e\n\n\u003c/div\u003e\n\nJust Another Differ (JAD) is a command-line tool for comparing two binary files. It uses fuzzy string matching and Ghidra's decompilation to analyze function similarities between binaries. A great example of using JAD is when reviewing a newer version of a binary that has stripped or obfuscated function names compared to an older version which does not - JAD will produce a map of the functions in the new binary that are the closest in similarity to the old binary.\n\n* **🔬 Function Diffing:** JAD will produce an output map of function similarities between two binaries.\n* **🌐 Outputs:** JAD can produce a JSON, HTML, or stdout output for the mapping it produces.\n* **🛠️ Ghidra Enabled:** JAD uses Ghidra headless to enable decompilation of functions!\n\nJAD was inspired by anouther tool I created with the same purpose for Android APKs, see [Obfu-DE-Scate](https://github.com/user1342/Obfu-DE-Scate)! 📱\n\n# ⚙️ Setup\n\n## Dependancies\n\nJAD requires [Ghidra](https://ghidra-sre.org/) to be installed, and for ```analyzeHeadless``` to be on your path. If\nit is not on your path JAD will request on run where the binary is located. To install all other dependencies use\nthe ```requirements.txt``` file, with:\n\n```\npip install -r requirements.txt\n```\n\n## Running\nJAD must be provided with both a base binary (```--binary-one/-b1```) and a comparison binary (```--binary-two/-b2```). In addition to this if an output option can be chosen between ```--json-output``` for a JSON file map or ```--html-output``` for a HTML file. If no output is chosen JAD will display the map to the terminal.\n\nJAD usage can be seen below:\n\n```bash\nusage: JAD.py [-h] --binary-one BINARY_ONE --binary-two BINARY_TWO\n              [--json-output JSON_OUTPUT | --html-output HTML_OUTPUT]\n```\n\n## Example\nThe below output was produced when running JAD against two differently compilled stripped versions of the 7z binary found in the [linux-static-binaries](https://github.com/polaco1782/linux-static-binaries) repository.\n\n```bash\nJAD.py -b1 \"\\armv7l-eabihf\\7zr\" -b2 \"\\armv8-aarch64\\7zr\" --html-output out.html\n```\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=50% src=\"screenshot.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003c/div\u003e\n\nIn a similar fashion, the below is an example of using the JSON output flag:\n```bash\nJAD.py -b1 \"\\armv7l-eabihf\\7zr\" -b2 \"\\armv8-aarch64\\7zr\" --json-output out.json\n```\n\n```\n{\n    \"FUN_000100f4\": {\n        \"binary_two_name\": \"FUN_0047c3b0\",\n        \"confidence\": 86\n    },\n    \"FUN_00010100\": {\n        \"binary_two_name\": \"FUN_00400168\",\n        \"confidence\": 76\n    },\n    \"FUN_00010124\": {\n        \"binary_two_name\": \"FUN_00400304\",\n        \"confidence\": 75\n    },\n    \"FUN_0001014c\": {\n...\n```\n\n# 🙏 Contributions\n\nJAD is an open-source project and welcomes contributions from the community. If you would like to contribute to\nJAD, please follow these guidelines:\n\n- Fork the repository to your own GitHub account.\n- Create a new branch with a descriptive name for your contribution.\n- Make your changes and test them thoroughly.\n- Submit a pull request to the main repository, including a detailed description of your changes and any relevant\n  documentation.\n- Wait for feedback from the maintainers and address any comments or suggestions (if any).\n- Once your changes have been reviewed and approved, they will be merged into the main repository.\n\n# ⚖️ Code of Conduct\n\nJAD follows the Contributor Covenant Code of Conduct. Please make\nsure [to review](https://www.contributor-covenant.org/version/2/1/code_of_conduct/code_of_conduct.md). and adhere to\nthis code of conduct when contributing to JAD.\n\n# 🐛 Bug Reports and Feature Requests\n\nIf you encounter a bug or have a suggestion for a new feature, please open an issue in the GitHub repository. Please\nprovide as much detail as possible, including steps to reproduce the issue or a clear description of the proposed\nfeature. Your feedback is valuable and will help improve JAD for everyone.\n\n# 📜 License\n\n[GNU General Public License v3.0](https://choosealicense.com/licenses/gpl-3.0/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuser1342%2FJust-Another-Differ","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuser1342%2FJust-Another-Differ","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuser1342%2FJust-Another-Differ/lists"}