{"id":46484685,"url":"https://github.com/sharkwouter/pe-resource-loader","last_synced_at":"2026-03-06T09:10:09.048Z","repository":{"id":287772481,"uuid":"934958244","full_name":"sharkwouter/pe-resource-loader","owner":"sharkwouter","description":"Load resources from Windows exe and dll files in a cross platform way","archived":false,"fork":false,"pushed_at":"2026-03-05T13:07:47.000Z","size":207,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-05T13:57:19.278Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://sharkwouter.github.io/pe-resource-loader/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"zlib","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sharkwouter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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-02-18T17:14:01.000Z","updated_at":"2026-03-05T13:08:00.000Z","dependencies_parsed_at":"2025-07-17T12:15:35.868Z","dependency_job_id":"f7d221da-1cc5-41ab-83b8-1492f0ad834d","html_url":"https://github.com/sharkwouter/pe-resource-loader","commit_stats":null,"previous_names":["sharkwouter/pe-resource-loader"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sharkwouter/pe-resource-loader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharkwouter%2Fpe-resource-loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharkwouter%2Fpe-resource-loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharkwouter%2Fpe-resource-loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharkwouter%2Fpe-resource-loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sharkwouter","download_url":"https://codeload.github.com/sharkwouter/pe-resource-loader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharkwouter%2Fpe-resource-loader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30168629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2026-03-06T09:10:04.921Z","updated_at":"2026-03-06T09:10:09.039Z","avatar_url":"https://github.com/sharkwouter.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PE Resource Loader\n\nAllow you to load resources from Windows exe and dll files even outside of Windows. It automatically converts strings (PRL_TYPE_STRING), bitmaps (PRL_TYPE_BITMAP), icons (PRL_TYPE_ICON) and cursors (PRL_TYPE_CURSOR) into usable formats, other formats just give you the plain data as found in the binary.\n\nCurrently PE Resource Loader requires GCC and only works on little-endian systems.\n\nDownload:\n- [Windows (x86_64)](https://github.com/sharkwouter/pe-resource-loader/releases/latest/download/pe-resource-loader-windows.zip)\n- [MacOS (arm64)](https://github.com/sharkwouter/pe-resource-loader/releases/latest/download/pe-resource-loader-macos.zip)\n- [Ubuntu (x86_64)](https://github.com/sharkwouter/pe-resource-loader/releases/latest/download/pe-resource-loader-ubuntu.zip)\n- [Source](https://github.com/sharkwouter/pe-resource-loader/tags)\n\n## Using the PE Resource Loader Library\n\nHere is a basic example of how the PE Resource Loader library can be used in a program to extract a specific string from a DLL file:\n\n```c\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n\n#include \u003cpe_resource_loader.h\u003e\n\nint main(int argc, char ** argv) {\n  // Load your dll or exe file from which you want to extract strings\n  PeResourceLoader * loader = PeResourceLoader_Open(\"strings.dll\");\n  if (!loader) {\n    printf(\"PE file failed to load\\n\");\n    return 1;\n  }\n\n  // In this example we load string 107 in US English and we don't save the length\n  char * string = (char *) PeResourceLoader_GetResource(loader, PRL_TYPE_STRING, PRL_LANG_EN_US, 107, NULL);\n  if (!string) {\n    printf(\"Could not find string 107\\n\");\n    return 2;\n  }\n  printf(\"%s\\n\", string);\n\n  // Don't forget to free strings that are no longer used\n  free(string);\n\n  // Always close the loader\n  PeResourceLoader_Close(loader);\n\n  return 0; \n}\n```\n\nMake sure to link your code to `pe_resource_loader`. The code for the bundled pe_string_loader and pe_bitmap_loader programs contain another more complex examples.\n\n## Using PE String Loader Program\n\nThe bundled `pe_string_loader` program is mostly there to serve as an example of how the PE Resource Loader library can be used, but it does allow getting strings from binaries and DLLs without any additional code. Here is a basic example:\n\n```sh\n./pe_string_loader my-file.dll\n```\n\nIt will output a list of string for each included language. If the file contains no strings, nothing will be printed.\n\n## Using PE Bitmap Loader Program\n\nThe bundled `pe_bitmap_loader` program is mostly there to serve as an example of how the PE Resource Loader library can be used, but it does allow getting bitmaps from binaries and DLLs without any additional code. Here is a basic example:\n\n```sh\n./pe_bitmap_loader my-file.dll\n```\n\nIt will output a list of bmp files found for each included language. It will create `.bmp` files in the current working directory if it finds any. If the file contains no bitmaps, only the languages found in the binary will be printed.\n\n## Building\n\nBuilding the code can be done simply by running the following commands:\n\n```sh\ngit clone https://github.com/sharkwouter/pe-resource-loader.git\ncd pe-resource-loader\nmkdir build\ncd build\ncmake ..\nmake\n```\n\nInstalling can be done with the following command after running the ones above:\n\n```sh\nsudo make install\n```\n\nNo dependencies are needed other than a C compiler. This code will only work on little endian systems for now.\n\nBuilding without building the `pe_string_loader` program can be done by running the cmake command with `-DPE_STRING_LOADER=OFF`. For building without `pe_bitmap_loader` use `-DPE_BITMAP_LOADER=OFF`.\n\n## Licensing\n\nThis project is released under the [zlib license](LICENSE.txt), which requires the license to be included in source distributions, but allows for shipping binaries without any requirements.\n\nFor conversion from utf16 to utf-8 tm_unicode.h is used from the  [tm repo](https://github.com/to-miz/tm/), which is licensed under the unlicense.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsharkwouter%2Fpe-resource-loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsharkwouter%2Fpe-resource-loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsharkwouter%2Fpe-resource-loader/lists"}