{"id":19765584,"url":"https://github.com/danielfvm/sigmaker","last_synced_at":"2025-07-04T13:38:33.217Z","repository":{"id":163699878,"uuid":"639156150","full_name":"danielfvm/SigMaker","owner":"danielfvm","description":"A simple tool for creating signatures of addresses in binary files. You can choose the size and address of the binary of which a signature should be made and get the pattern and mask as a result.","archived":false,"fork":false,"pushed_at":"2024-03-26T17:26:33.000Z","size":30,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T10:39:45.849Z","etag":null,"topics":["assembly","linux64","pattern-scanning","signatures"],"latest_commit_sha":null,"homepage":"","language":"C","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/danielfvm.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}},"created_at":"2023-05-10T22:05:18.000Z","updated_at":"2024-10-03T14:48:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"1c325768-70a3-4779-8561-2cbca548d0e4","html_url":"https://github.com/danielfvm/SigMaker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danielfvm/SigMaker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FSigMaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FSigMaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FSigMaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FSigMaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielfvm","download_url":"https://codeload.github.com/danielfvm/SigMaker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FSigMaker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263550831,"owners_count":23478873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["assembly","linux64","pattern-scanning","signatures"],"created_at":"2024-11-12T04:18:36.710Z","updated_at":"2025-07-04T13:38:33.197Z","avatar_url":"https://github.com/danielfvm.png","language":"C","readme":"# SigMaker\n![Repository size](https://img.shields.io/github/repo-size/danielfvm/sigmaker?color=39d45f) \n[![GitHub last commit](https://img.shields.io/github/last-commit/danielfvm/sigmaker?color=39d45f)](https://github.com/danielfvm/sigmaker/commits/master) \n![License](https://img.shields.io/badge/license-GPL-39d45f) \n[![Stargazers](https://img.shields.io/github/stars/danielfvm/sigmaker?color=39d45f\u0026logo=github)](https://github.com/danielfvm/sigmaker/stargazers)\n\nA simple tool for creating signatures of addresses in binary files.  You can choose the size and address of \nthe binary of which a signature should be made and get the pattern and mask as a result. It can also show \nthe amount of occurrences within the file. Currently only works for x64 applications.\n\n![output](https://github.com/danielfvm/SigMaker/assets/23420640/2eecf107-514e-424d-8fab-40822a9c65be)\n\n\n# Usage\nThe following three arguments are required for runnning the program. Keep in mind that the size argument\nis only defines the approximate size and may be larger or shorter depending on the assembly at the address.\n```\nUsage:\n  sigmaker \u003cfile\u003e \u003caddress\u003e \u003csize\u003e\n\n  file     Path to executable file\n  address  Create signature for selected hex address\n  size     Set the size of signature\n```\n\n## Example\n![image](https://github.com/danielfvm/SigMaker/assets/23420640/e96f9ca9-ccfd-42ac-ad5a-29d0f55abd66)\nAs you can see in the above image you will first receive the assembler instructions and their addresses (+offset)\ntogether with the binary code in hex. The bold hex codes on the right side are used for the pattern and\nwill probably stay the same even if the target application has been updated. The `00` that are not highlighted\nare addresses or offsets that are most likely to change after the application is being updated and\nare therefore marked in the mask with a `?`. Below you can see the pattern and mask together with the\nlength. THese can be used for searching the address in your application. The `First result` indicates if the first\nmatch with the generated pattern (starting with the lower addresses) is the address, if not you can increase the\npattern size in the arguments. `Occurrences` is the amount of matches found in the target application.\nHere is an example implementation that you can use for finding addresses with the generated pattern and \nmask.\n```cpp\nint64_t scanPattern(const PageInfo page, const char* pattern, const char* mask, int length) {\n    int64_t addr;\n    int i;\n\n    for (addr = page.start; addr \u003c page.end; ++ addr) {\n        for (i = 0; i \u003c length; ++ i) {\n            if (mask[i] == '?')\n                continue;\n\n            if (pattern[i] != *((char*)(addr+i))) {\n                break;\n            }\n        }\n\n        if (i == length) {\n            return addr;\n        }\n    }\n\n    return -1;\n}\n```\n\n# Installation\nYou will need the [udis869](https://github.com/vmt/udis86) library to compile and install this program.\n\n## Linux\nThe following commands will download, compile and install this program. Keep in mind that you porbably will\nneed root permission for running `make install`, which will then copy the binary file to `/usr/bin/`\n```\ngit clone https://github.com/danielfvm/SigMaker\ncd SigMaker\nmake\nmake install\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielfvm%2Fsigmaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielfvm%2Fsigmaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielfvm%2Fsigmaker/lists"}