{"id":19595191,"url":"https://github.com/ergrelet/resym","last_synced_at":"2025-04-07T10:23:37.324Z","repository":{"id":36990116,"uuid":"465489667","full_name":"ergrelet/resym","owner":"ergrelet","description":"Cross-platform tool that allows browsing and extracting C and C++ type declarations from PDB files.","archived":false,"fork":false,"pushed_at":"2024-04-14T22:42:38.000Z","size":4764,"stargazers_count":255,"open_issues_count":16,"forks_count":23,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-04-19T19:05:50.174Z","etag":null,"topics":["cli","cross-platform","diff","gui","linux","ntoskrnl","pdb","reverse-engineering","rust","symbols","web","windows"],"latest_commit_sha":null,"homepage":"https://ergrelet.github.io/resym/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ergrelet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2022-03-02T22:31:36.000Z","updated_at":"2024-04-19T19:05:50.175Z","dependencies_parsed_at":"2024-04-13T22:31:11.316Z","dependency_job_id":"42d37d1e-adaa-4a47-b6e9-940512fa222e","html_url":"https://github.com/ergrelet/resym","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergrelet%2Fresym","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergrelet%2Fresym/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergrelet%2Fresym/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ergrelet%2Fresym/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ergrelet","download_url":"https://codeload.github.com/ergrelet/resym/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247632737,"owners_count":20970210,"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":["cli","cross-platform","diff","gui","linux","ntoskrnl","pdb","reverse-engineering","rust","symbols","web","windows"],"created_at":"2024-11-11T08:46:03.381Z","updated_at":"2025-04-07T10:23:37.299Z","avatar_url":"https://github.com/ergrelet.png","language":"Rust","readme":"# resym [![License](https://img.shields.io/badge/license-Apache--2.0_OR_MIT-blue.svg)](https://img.shields.io/badge/license-Apache--2.0_OR_MIT-blue.svg) [![rustc 1.84.1](https://img.shields.io/badge/rust-1.84.1%2B-orange.svg)](https://img.shields.io/badge/rust-1.84.1%2B-orange.svg) [![Build Status](https://github.com/ergrelet/resym/workflows/Tests/badge.svg?branch=master)](https://github.com/ergrelet/resym/actions?query=workflow%3ATests) [![Coverage Status](https://coveralls.io/repos/github/ergrelet/resym/badge.svg?branch=master)](https://coveralls.io/github/ergrelet/resym?branch=master) \u003cimg align=\"right\" src=\"./docs/static/resym_256.png\" alt=\"resym's logo\" width=\"160\" heigh=\"160\"\u003e\n\n`resym` is a utility that allows browsing and extracting types from PDB files.\n\n👉 [Click to run the web version](https://ergrelet.github.io/resym/) 👈\n\nInspired by [PDBRipper](https://github.com/horsicq/PDBRipper) and\n[pdbex](https://github.com/wbenny/pdbex).\n\n## Key Features\n\n- Cross-platform (native and web)\n- GUI and CLI versions available\n- Decent performance, even on huge PDB files\n- C and C++ types reconstruction\n- C and C++ types diff generation (between two PDBs)\n- Compilable output for C types (partial support for C++ types)\n- PDB module browsing\n\n## Screenshot\n\n\u003cimg src=\"./docs/static/resym_screenshot.png\" alt=\"Screenshot of resym\"\u003e\n\n## How to Install\n\nIf you have Rust installed, you can easily install resym with `cargo`:\n\n```\ncargo install --git https://github.com/ergrelet/resym --tag v0.4.0\n```\n\nAfter that, you can invoke `resym` and `resymc` from anywhere, through the\ncommand-line.\n\nKeep in mind that you need to have the required dependencies installed for\n`resym` to run properly. Check out the user documentation for more details.\n\n## How to Use\n\nIf you want to use the GUI version, simply run the `resym` executable.  \nA CLI version (named `resymc`) is also available:\n\n```\nresymc 0.4.0\nresymc is a utility that allows browsing and extracting types from PDB files.\n\nUSAGE:\n    resymc.exe \u003cSUBCOMMAND\u003e\n\nFLAGS:\n    -h, --help       Prints help information\n    -V, --version    Prints version information\n\nSUBCOMMANDS:\n    diff            Compute diff for a type between two given PDB files\n    diff-module     Compute diff for a module between two given PDB files\n    dump            Dump type from a given PDB file\n    dump-all        Dump all types from a given PDB file\n    dump-module     Dump module from a given PDB file\n    help            Prints this message or the help of the given subcommand(s)\n    list            List types from a given PDB file\n    list-modules    List modules from a given PDB file\n\n```\n\n## How to Build\n\nOn **Ubuntu**, you might need to install: `libxcb-shape0-dev`,\n`libxcb-xfixes0-dev` and `libglib2.0-dev`.\n\n```\ngit clone https://github.com/ergrelet/resym.git \u0026\u0026 cd resym\ncargo build --release\n./target/release/resym\n```\n\n## Know limitations\n\nThe GUI version might struggle to display huge outputs (\u003e20 MB). Disabling\nsyntax highlighting (and/or dependency reconstruction altogether) will help but,\ngenerally speaking, the CLI version is more suited when dumping types with a huge\namount of dependencies.\n\nC++ namespaces and template types aren't reconstructed at the moment, which\nmeans the reconstructed output for C++ types isn't necessarily compilable.\n\nThe web version cannot handle PDB files larger than ~2.1 GB due to how files\nare accessed and the 32-bit limitations of `wasm32` targets. This might change\nin the future with `wasm64`/`memory64` support.\n\n## Why Another PDB Dumper?\n\nI often need to extract and analyze C++ types from 1GB+ PDB files comfortably,\nin an interactive manner, but I haven't been able to find a tool that ticks all\nthe boxes for me so far, so this my shot at making that tool.  \nSo if you're in the same boat, this tool might be of some use to you.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fergrelet%2Fresym","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fergrelet%2Fresym","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fergrelet%2Fresym/lists"}