{"id":51011528,"url":"https://github.com/fossable/resplice","last_synced_at":"2026-06-21T03:03:54.852Z","repository":{"id":237424514,"uuid":"695720768","full_name":"fossable/resplice","owner":"fossable","description":"Taking \"rewrite it in Rust\" to a new level","archived":false,"fork":false,"pushed_at":"2026-04-20T02:39:01.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-20T04:42:11.452Z","etag":null,"topics":["reverse-engineering"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fossable.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-09-24T02:21:17.000Z","updated_at":"2026-04-20T02:39:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"d50d6f72-ce14-4849-9af4-049aedbb3e04","html_url":"https://github.com/fossable/resplice","commit_stats":null,"previous_names":["cilki/splice","fossable/resplice"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fossable/resplice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fresplice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fresplice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fresplice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fresplice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fossable","download_url":"https://codeload.github.com/fossable/resplice/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossable%2Fresplice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34592059,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"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":["reverse-engineering"],"created_at":"2026-06-21T03:03:54.021Z","updated_at":"2026-06-21T03:03:54.847Z","avatar_url":"https://github.com/fossable.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Declarative binary patching with Rust\n\n**resplice** takes \"rewrite it in Rust\" to a whole new level. It's a macro that\nmakes re-implementing sections of machine code in Rust (a little) more fun.\n\n## Illustrative example\n\nTake a trivial example that adds 1 + 1 in assembly:\n\n```\n0000000000001670 \u003cmain\u003e:\n    1670:       d10043ff        sub     sp, sp, #0x10\n    1674:       b9000fff        str     wzr, [sp, #12]\n    1678:       52800040        mov     w0, #0x2\n    167c:       910043ff        add     sp, sp, #0x10\n    1680:       d65f03c0        ret\n```\n\nNow let's reimplement it in Rust (probably with the help of a decompiler, in\npractice):\n\n```rust\nuse resplice::Splice;\n\n#[Splice(begin = 0x1670, end = 0x1680)]\nfn add_one_plus_one() -\u003e i32 {\n    1 + 1\n}\n```\n\nWhat we get now is the original binary augmented with our custom function! If\nwe're adequately motivated, we can repeat this step iteratively until our entire\nprogram is reverse engineered in Rust.\n\nBut, most likely, we only care about reversing a few specific sections.\n\n## How it works\n\nAs you may have guessed by the name, `Splice` forcibly inserts the machine code\nfor Rust functions into a target binary (either via direct substitution or via\ntrampolines).\n\n## Usage\n\n```rust\nuse resplice::Splice;\n\n#[Splice(begin = 0x1000, end = 0x1020)]\nfn my_replacement_function() -\u003e i32 {\n    // Your Rust implementation here\n    42\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffossable%2Fresplice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffossable%2Fresplice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffossable%2Fresplice/lists"}