{"id":34751762,"url":"https://github.com/scriptware-software/native-predicate-solver","last_synced_at":"2026-04-07T06:02:10.773Z","repository":{"id":298355804,"uuid":"999575141","full_name":"ScriptWare-Software/native-predicate-solver","owner":"ScriptWare-Software","description":"Native opaque predicate cleaner plugin for Binary Ninja","archived":false,"fork":false,"pushed_at":"2026-04-02T04:36:26.000Z","size":126,"stargazers_count":46,"open_issues_count":0,"forks_count":6,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-02T04:56:46.311Z","etag":null,"topics":["binary-ninja","binary-ninja-plugin","cpp","malware-analysis","obfuscated-code","obfuscation","obfuscation-script","opaque-predicates","reverse-engineering"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ScriptWare-Software.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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-10T13:10:54.000Z","updated_at":"2026-02-09T10:38:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"03a327aa-e751-4b1d-9b3c-d520bf4bf7a4","html_url":"https://github.com/ScriptWare-Software/native-predicate-solver","commit_stats":null,"previous_names":["scriptware-software/native-predicate-solver"],"tags_count":176,"template":false,"template_full_name":null,"purl":"pkg:github/ScriptWare-Software/native-predicate-solver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScriptWare-Software%2Fnative-predicate-solver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScriptWare-Software%2Fnative-predicate-solver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScriptWare-Software%2Fnative-predicate-solver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScriptWare-Software%2Fnative-predicate-solver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ScriptWare-Software","download_url":"https://codeload.github.com/ScriptWare-Software/native-predicate-solver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScriptWare-Software%2Fnative-predicate-solver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31501903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-ninja","binary-ninja-plugin","cpp","malware-analysis","obfuscated-code","obfuscation","obfuscation-script","opaque-predicates","reverse-engineering"],"created_at":"2025-12-25T05:22:03.151Z","updated_at":"2026-04-07T06:02:10.756Z","avatar_url":"https://github.com/ScriptWare-Software.png","language":"C++","readme":"# Native Predicate Solver\nAuthor: **ScriptWare Software**\n\n_Native C++ Binary Ninja plugin for removing opaque predicates_\n\n## Description:\n\nThis plugin removes conditional branches that always evaluate to the same value. Written in C++ for speed - faster than the [Python version](https://github.com/Vector35/OpaquePredicatePatcher/), especially on large binaries. Uses multiple threads to process functions in parallel, and will iteratively perform passes through functions to clean up newly uncovered opaque predicates. You should be able to remove annoying opaque predicates from massive functions with ease and speed.\n\n### Example\n\nBefore:\n![Before example](img/before.png)\n\nAfter:\n![After example](img/after.png)\n\n## Installation Instructions\n\n### Windows\n\nCopy to: `%APPDATA%\\Binary Ninja\\plugins\\`\n\n### Linux\n\nCopy to: `~/.binaryninja/plugins/`\n\n### Darwin (macOS)\n\nCopy to: `~/Library/Application Support/Binary Ninja/plugins/`\n\n## Usage\n\nClick → `Plugins` → `Native Predicate Solver`:\n- `Patch Opaque Predicates (Current Function)` - Patches current function only\n- `Patch Opaque Predicates (All Functions)` - Patches entire binary\n\n## Settings\n\nFound in Binary Ninja Settings under \"Native Predicate Solver\":\n\n| Setting | Default | Description |\n|---------|---------|-------------|\n| Max passes per function | 10 | Times to re-analyse each function |\n| Max global passes | 20 | Times to re-analyse entire binary |\n| Thread count | 8 | Worker threads for parallel processing |\n\n## How It Works\n\n1. Scans MLIL for conditional branches\n2. Checks if conditions are constant (always true/false)\n3. Patches them:\n   - Always false → NOP (removes branch)\n   - Always true → Unconditional jump\n4. Repeats until no more predicates found\n\n## Minimum Version\n\nThis plugin was developed via this version of Binary Ninja:\n\n* 5.0\n\n## Required Dependencies\n\nThe following dependencies are required for this plugin:\n\n* None (all dependencies are included in the Binary Ninja API)\n\n## License\n\nThis plugin is released under a MIT license.\n\n## Metadata Version\n\n2\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscriptware-software%2Fnative-predicate-solver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscriptware-software%2Fnative-predicate-solver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscriptware-software%2Fnative-predicate-solver/lists"}