Fact-checked by Grok 2 weeks ago

Resource Hacker

Resource Hacker is a utility developed by Angus Johnson for viewing, editing, compiling, and decompiling resources within 32-bit and 64-bit Windows executable files (such as *.exe and .dll) and resource files (.res and *.mui). It enables users to inspect and modify embedded elements like icons, cursors, menus, dialog boxes, string tables, and accelerators through a graphical , including WYSIWYG designers for certain resource types. Originally released in 1999, the software has been maintained as under a license that prohibits illegal modifications, with the latest version, 5.2.8, updated on March 6, 2025. The tool supports resource script compilation from *.rc files, handling directives such as #INCLUDE, #IF, and #DEFINE, as well as escaped strings for precise control over resource definitions. It also offers command-line functionality for automation, with options like -open, -save, and -action to perform batch operations on files. Notably, Resource Hacker does not unpack compressed executables, focusing instead on standard PE-format resources as defined in documentation. This makes it a specialized, lightweight alternative to more comprehensive development environments for tasks like software customization or legitimate applications.

Background

Purpose and Functionality

Resource Hacker is a utility developed by Johnson for viewing, modifying, adding, deleting, and extracting resources in 32-bit and 64-bit Windows executables (EXE, DLL, SCR) as well as resource files (RES, MUI, ). Windows resources refer to embedded components within these files that define key elements of an application's and , such as icons, cursors, menus, dialogs, bitmaps, and strings. These resources are compiled into format during application development and loaded at to provide reusable assets without them directly in the code. At its core, serves as a to extract and display resources in editable formats like images or text, and as a to generate resources from RC script files. This functionality facilitates direct manipulation of application components without requiring the original . The tool's primary benefit lies in enabling non-programmers to customize visual and structural aspects of Windows software, supporting tasks like or through straightforward .

Developer and Initial Release

Resource Hacker was developed by Angus Johnson, an independent programmer specializing in Windows utilities. As the sole creator, Johnson focused on creating accessible tools for in Windows applications, drawing from his expertise in for the platform. The tool's initial release occurred in 1999, as indicated by the copyright notice spanning from that year onward. Johnson's motivation stemmed from the need for a no-cost solution to compile and decompile in Windows binaries, offering a graphical interface that made the process more approachable than command-line alternatives like the Resource Compiler. By providing both and command-line support, the tool addressed accessibility barriers for non-professional users editing files. Distribution began as directly from Johnson's personal at angusj.com, ensuring no advertisements, nag screens, or licensing costs, with further redistribution requiring his written approval to maintain control over its open-access model.

Technical Features

Supported Resource Types

Resource Hacker supports a comprehensive set of standard Windows resource types, enabling the viewing, editing, and compilation of elements embedded in () files such as executables (.exe) and dynamic-link libraries (.dll). These resources are stored in the dedicated resource section of PE files, which organizes data into a hierarchical of types, names, and languages for efficient runtime access by applications. The supported types include:
  • ICON: Defines icons or animated icons used for application symbols, window representations, and file associations; stored as binary image data in the PE resource section, loadable by identifier for display.
  • CURSOR: Specifies cursor images or animated cursors for mouse pointers; stored similarly to icons as binary data, accessible by name or ID for user interface interactions.
  • BITMAP: Contains bitmap images for graphical elements like buttons or backgrounds; embedded as raw pixel data in the resource section, retrievable for rendering.
  • AVI: Embeds Audio-Video Interleave (AVI) files for animations and multimedia playback; stored as binary video data, used to enhance application visuals.
  • STRING TABLE: Organizes text strings for user interface elements and messages, facilitating localization; stored as arrays of Unicode or ANSI strings in blocks of 16 entries, loaded on demand.
  • MENU: Describes menu structures, including items, submenus, and pop-ups; defined in script format and stored as compiled templates in the PE resource section for dynamic menu creation.
  • DIALOG (including DIALOGEX): Defines dialog box templates for windows and controls, with DIALOGEX providing extended attributes like font specifications; stored as binary templates outlining layout and properties.
  • ACCELERATOR: Maps keyboard keys to menu commands or actions for shortcuts; stored as tables of key-event pairs in the resource section.
  • RCdata (binary data): Holds arbitrary raw binary data, such as custom files or configurations; stored without predefined format, allowing flexible application-specific use.
  • VERSIONINFO: Provides metadata like file version, company name, and legal copyright; structured as value-name pairs in the resource section, queryable by system APIs.
The tool handles both 32-bit and 64-bit PE formats, ensuring compatibility across Windows architectures. For multilingual support, Resource Hacker can edit language-specific resources in PE files and Multi-User Interface (MUI) DLLs, which separate localized strings and dialogs from the main executable to enable multiple languages without altering core code. When compiling resource script (.rc) files, Resource Hacker processes standard directives including #INCLUDE for incorporating external files, #IF, #IFDEF, #IFNDEF, #ELIF, #ELSE, and #ENDIF for conditional , and #DEFINE with #UNDEF for definitions; it also supports escaped strings (e.g., \t for tabs, \n for newlines) and comments via // or ;.

Editing and Compilation Capabilities

Resource Hacker enables the decompilation of resources embedded in Windows executable files, such as .exe, .dll, and .scr formats, as well as resource libraries like .res and .mui files, into editable script formats or individual extractable files including and images. This process converts data into human-readable text for resources like strings, menus, and dialogs, while resources such as icons are exported as standalone files for further manipulation. Modification capabilities allow users to add, delete, rename, or replace resources directly within the target file. For example, text strings can be altered to update application messages, and visual elements like images can be substituted with new content imported from external sources. The tool provides editing specifically for menu and dialog resources, permitting intuitive visual adjustments to layouts and elements without requiring manual code entry. Compilation features support the building of RC scripts into RES files or their direct injection into executables, facilitating the reconstruction of modified resources. resources, such as , are handled through integration with external editors, where users can export the content, edit it in specialized applications like image processors, and then re-import the changes. Resource Hacker processes RC scripts with support for preprocessor directives including #INCLUDE for file inclusion, #IF for conditional logic, #DEFINE and #UNDEF for macros, and escaped characters such as \t for tabs, \n for newlines, and Unicode sequences for international text handling. Advanced actions include the use of script templates to automate additions and modifications via multi-command files executed through the command line, enabling batch operations like sequential adds or deletes with options to overwrite existing resources or apply masks for types, names, and languages.

User Interface and Operation

Graphical User Interface

Resource Hacker's centers on a dual-pane main designed for efficient and editing of executable resources. The left pane features a hierarchical tree view that organizes resources by type, such as , , , DIALOG, and STRING TABLE, enabling users to expand folders and select specific items like individual icons or dialog elements. Upon selection, the right pane serves as a preview area, displaying visual content like images directly or rendering decompiled text for scriptable resources, while appears in a read-only format for inspection. This layout allows users to quickly assess and interact with the resource structure without leaving the primary . Editing operations are tailored to resource types through integrated modes that support both textual and visual modifications. For RC script-based resources, such as menus or string tables, a built-in allows direct manipulation, with compilation available via keyboard shortcuts like F5 or menu options. Binary resources can be examined using a read-only viewer, with editing requiring export and import of the resource. Visual elements benefit from specialized editors, notably the dialog , which employs a approach with drag-and-drop controls for inserting items like buttons or bitmaps, and arrow keys or direct dragging for repositioning. Navigation within the GUI relies on intuitive file handling tools, including open and dialogs that support common formats like .exe, .dll, and .rc files, allowing seamless loading of executables or scripts. Users can locate by browsing the or using context menus for actions like adding or deleting entries. For output, the interface offers versatile saving mechanisms: scripts can be compiled directly to .res files, individual resources extracted to files or folders via right-click options, and entire modified executables saved with an automatic of the original, typically named [filename]_original.exe, to prevent data loss.

Command-Line Interface

Resource Hacker provides a (CLI) that enables automated manipulation of resources in executable files, resource files, and scripts without invoking the . The basic syntax follows the form ResourceHacker.exe [switches] [parameters], where switches such as -open specify the input file (e.g., .exe, .dll, .rc, or .res) to load, -save defines the output filename or directory for writing changes, and -action determines the operation to perform, including add, delete, extract, or modify. Switches are order-independent, with filenames containing spaces requiring double quotes for proper parsing. Key facilitate common operations. For instance, the -add injects a into a destination , failing if the already exists; -addoverwrite performs the same but replaces existing , while -addskip skips duplicates. uses -extract with a -mask to specify the type, name, and optional (e.g., rh.exe -open source.exe -save output.res -[action](/page/Action) extract -[mask](/page/Mask) ICONGROUP,MAINICON,), pulling items like icons or dialogs to a or . Compilation of .rc scripts to .res is handled via -action compile, and deletion targets specific with -delete. is configurable via the -log switch (e.g., to CONSOLE, NUL, or a ), defaulting to resourcehacker.log for error handling and auditing. The CLI supports processing of resource compiler (RC) files and custom scripts directly from the command line. Scripts are text files invoked with -script ScriptFile, structured with [FILENAMES] sections defining input (Exe=) and output (SaveAs=) paths, followed by [COMMANDS] sections listing actions like -add, -modify, or -extract with associated masks and resources. This enables of multiple operations, such as localizing an application by changing languages with -changelanguage(langID). Error handling integrates via log outputs, allowing verification of successes and failures in automated sequences.

History and Versions

Early Development

Resource Hacker was initially released on December 3, 1999. Following its initial release, Resource Hacker underwent steady growth through its early versions (1.x to 3.x), which primarily emphasized basic resource viewing and extraction capabilities tailored for , ME, and 2000 operating systems. These versions laid the foundation by enabling users to inspect and export embedded resources from 32-bit executables without advanced editing tools, while incorporating rudimentary elements around 2001–2003 to facilitate and basic operations. A pivotal early enhancement arrived with version 3.4.0 on March 24, 2002, introducing an internal resource compiler for RC scripts that allowed compilation of resource definitions directly within the tool, marking a shift toward more versatile resource handling. This update also added support for Windows XP themes, including handling of alpha-blended icons and extended dialog styles like WS_EX_LAYERED, ensuring compatibility with the emerging visual features of XP while maintaining backward compatibility with prior Windows versions. Development during this period was influenced by community feedback, with users submitting requests via the angusj.com forums for improvements such as dialog resource editing, which were progressively integrated to meet the needs of software modders and developers. By the mid-2000s, these iterations had solidified Resource Hacker's reputation as an essential utility among modding communities for customizing application resources. As Windows transitioned to newer platforms, Resource Hacker saw adaptations for and compatibility testing around 2007, including measures to handle (UAC) prompts and preliminary support for 64-bit resource previews, ensuring the tool remained viable amid evolving system security and architecture changes. Initial full 64-bit support was added in version 3.6.0 around 2010.

Major Version Updates

Resource Hacker's version 4.x series, spanning approximately 2010 to 2016, marked significant advancements in compatibility and usability. This period provided further improvements to 64-bit support, enabling seamless editing of resources in both 32-bit and 64-bit executables. Improvements to handling allowed better processing of international text in resource files, reducing corruption issues during compilation and decompilation. Additionally, enhancements to command-line scripting provided more robust options for , such as of multiple files without relying on the graphical . Search functionality was added to locate specific resources more efficiently. Version 4.5, released in 2016, specifically addressed bugs in dialog control handling, ensuring accurate rendering and modification of elements like buttons and text fields. The version 5.x series, beginning with in 2018 and continuing through 2025, further refined core features for contemporary workflows. Version added support for multi-line comments in scripts. By version 5.2 in 2020, the application adopted modern open and save dialogs consistent with current Windows standards, improving file navigation and integration with file explorers. The most recent release, version 5.2.8 on March 6, 2025, fixed critical bugs including the compilation of controls with -1 IDs in DialogEx resources and incorrect detection of text encoding, preventing data loss in multilingual or complex dialog edits. Ongoing maintenance occurs through near-annual updates distributed exclusively via the official website angusj.com, focusing on compatibility with evolving Windows versions such as and incorporating security-related patches to mitigate vulnerabilities in resource handling. This freeware model persists without any monetization, sustaining the tool's accessibility for developers and system customizers.

Applications and Limitations

Common Use Cases

Resource Hacker is commonly employed for software , allowing users to alter visual and interactive elements in legacy Windows applications without recompiling . For instance, developers and enthusiasts modify icons and cursors in files to refresh outdated interfaces, such as replacing default program icons in .exe files to match themes. Similarly, it facilitates localization by string tables to support non-English languages, enabling the of dialog text and menu labels for international users. In game communities, the tool is used to swap resources like bitmaps and audio files; a notable example is modifying the to replace original sound files (ORGs) with ones, enhancing through community-driven alterations. In scenarios, Resource Hacker aids in dissecting and by extracting embedded resources for detailed analysis. Security analysts extract embedded files, such as additional PE executables, from resources in dropper by viewing and saving resources from infected executables. It also supports studying structures in closed-source applications, where users pull out dialog layouts or images to understand design choices or adapt elements for testing. As a , Resource Hacker streamlines prototyping by compiling and testing resource scripts (.rc files) before integrating them into larger builds. Developers prototype dialogs and menus by editing files directly, visualizing changes in a interface without full application recompilation. Additionally, it enables the addition of accelerator keys to menus, allowing keyboard shortcuts to be defined in accelerator tables for improved in custom applications. For example, replacing resources in dynamic link libraries (DLLs) supports theming efforts during .

Technical Limitations and Risks

Resource Hacker has several technical limitations that restrict its functionality in certain scenarios. It cannot directly edit resources in compressed or packed executables, such as those processed by tools like , requiring users to unpack the files first using external utilities before modification is possible. Binary resources, including images and other non-text data, cannot be edited inline within the tool; instead, they must be exported to external editors like image processing software and then re-imported after changes. Furthermore, while Resource Hacker is designed for (PE) format files common in Windows applications, it offers limited support for .NET assemblies, where modifications may invalidate strong name signatures and prevent verification by Microsoft's . Using Resource Hacker carries inherent risks, particularly when applied to critical files. Modifying system files, such as core DLLs in the Windows directory, can lead to application instability, system crashes, or boot failures if the changes corrupt dependencies or violate file integrity checks. The tool lacks built-in validation for resource integrity post-edit, potentially resulting in invalid or malformed resources that cause runtime errors in the affected executable. If misused, Resource Hacker enables the injection of malicious code or payloads into legitimate executables, facilitating distribution, though its explicitly prohibits illegal modifications. In contexts like , such capabilities highlight the dual-use nature of the tool, where improper handling amplifies security threats. Security concerns with Resource Hacker primarily stem from its resource tampering functionality, which can trigger antivirus detections. As of 2025, the tool itself is safe for personal, non-malicious use on signed executables, but editing unsigned or third-party files increases risks of unintended vulnerabilities or exploitation. Antivirus software frequently generates false positives on Resource Hacker and files modified by it, classifying them as trojans due to behavioral similarities with malware packing or injection techniques; for instance, multiple engines flag it as potentially harmful despite its legitimate purpose. To mitigate these limitations and risks, users should always create full backups of original files before editing and test modifications in isolated environments, such as virtual machines, to prevent system-wide impacts.

References

  1. [1]
    Resource Hacker - angusj.com
    Mar 6, 2025 · Resource HackerTM is a resource editor for 32bit and 64bit Windows® applications. It's both a resource compiler (for *.rc files), and a ...
  2. [2]
    Resource-Definition Statements - Win32 apps - Microsoft Learn
    Jun 13, 2022 · The resource-definition statements define the resources that the resource compiler puts in the resource (.Res) file.
  3. [3]
    PE Format - Win32 apps - Microsoft Learn
    Jul 14, 2025 · The PE file header consists of a Microsoft MS-DOS stub, the PE signature, the COFF file header, and an optional header. A COFF object file ...COFF File Header (Object and... · Optional Header (Image Only) · The .idata Section
  4. [4]
    An In-Depth Look into the Win32 Portable Executable File Format ...
    The Resources Section. Of all the sections within a PE, the resources are the most complicated to navigate. Here, I'll describe just the data structures that ...
  5. [5]
  6. [6]
    VERSIONINFO resource - Win32 apps - Microsoft Learn
    Jan 18, 2022 · Defines a version-information resource. The resource contains such information about the file as its version number, its intended operating system, and its ...
  7. [7]
    MUI Resource Management - Win32 apps | Microsoft Learn
    Jan 7, 2021 · The LN file is a Win32 PE file representing the application code binary and language-neutral resources.
  8. [8]
    How to open *.mui files in C:\Windows\System32\en-US?
    Jan 4, 2012 · MUI is just DLLs with resource table. You can use any resource editor like Resource Hacker, or Visual Studio.
  9. [9]
    Resource Hacker
    ### Summary of Resource Hacker Editing and Compilation Capabilities
  10. [10]
    [Review] All About Resource Hacker, The Ultimate Windows ...
    Sep 18, 2007 · Resource Hacker is a small but excellent tool to modify system files like DLL, EXE, CPL, etc. You can even change Windows look by editing various Windows files.<|control11|><|separator|>
  11. [11]
    How to Fix “Cannot Create File” Error Message Problem While ...
    Jul 6, 2012 · Actually when you modify a file in Resource Hacker and save the file, Resource Hacker automatically creates a backup file with the name “ ...
  12. [12]
    phatcode.net / downloads / utilities / other / resource hacker
    Resource Hacker. Author, Angus Johnson. Email, angusj@myrealbox.com. Website, http://www.users.on.net/johnson/resourcehacker/. Released, Mar 24 2002. Platform ...Missing: early development history 1. x 2. 3.
  13. [13]
    Recource Hacker - Syed Bahadur Shah
    Apr 15, 2012 · Initial Release. DOWNLOAD. RESOURCE HACKER. Resource Hacker Version 3.6.0.92 English. Resource Hacker 3.4.0.79 Japanese. Resource Hacker 3.6.
  14. [14]
    EE Modding: Tool list - Empire Earth Heaven Forums
    A tool that allows you to change every single letter of THE COMPLETE GAME! It's called "Resource Hacker",requires no installation and the best is, it is ...
  15. [15]
    Resource Hacker | Cave Story Modding Wikia - Fandom
    Developed by Angus Johnson, Resource Hacker provides a user-friendly ... resources, making it invaluable for developers, modders, and reverse engineers.Missing: background | Show results with:background
  16. [16]
    Resource Hacker - The Portable Freeware Collection
    Mar 6, 2025 · Resource Hacker stable version 4.2.0 Released 20 JUN 2015 http://www ... date sample screenshots and usage tips by developer Angus Johnson.Missing: initial | Show results with:initial
  17. [17]
    Resource Hacker 5.2.7: Download Free Resource Editor for Windows
    Resource Hacker is actually a free resource editing program which can be used to compile and decompile resources in Windows applications.Missing: documentation | Show results with:documentation
  18. [18]
    Version history for Resource Hacker - AfterDawn
    Version history for Resource Hacker. Back to software description. Changes for v5.1.6 - v5.1.7. Changes for v5.1.4 - v5.1.6. Changes for v5.1.1 - v5.1.4.
  19. [19]
    Download Resource Hacker 5.2.7 for windows - Filepuma.com
    Mar 19, 2024 · Resource Hacker is a powerful software utility designed for resource editing and manipulation within Windows executables (EXE) and Dynamic Link Libraries (DLL).
  20. [20]
    How to hack your favorite Windows programs with Resource Hacker
    Jul 14, 2003 · Double-click the ResHacker.exe file and you're ready to go. Resource Hacker works on 32-bit programs that do not use compressed executables. It ...<|separator|>
  21. [21]
    Replacing ORGs in Cave Story
    Open Resource Hacker, go to File > Open, and locate the .exe of Cave Story to be modified. Once the executable has loaded, a list of folders will appear.
  22. [22]
    [PDF] Malware Reverse Engineering Handbook | CCDCOE
    Using Resource Hacker can help in analysing dropper samples that have an additional PE file inside their resources. The tool can also be accessed from the ...
  23. [23]
    How to get Resource Hacker to work on .rc source files
    Sep 15, 2016 · I'm trying to use Resource Hacker to edit WIN32 dialogs, since the free version of Visual Studio doesn't support resource editing.Using Resource Hacker for changing the icon after the buildWindows resource editor for Linux - Stack OverflowMore results from stackoverflow.comMissing: development prototyping
  24. [24]
    qb40/resource-hacker - Angus Johnson. - GitHub
    Resource Hacker™ - Version 3.4.0 24 march 2002. Copyright 1999-2002 Angus Johnson http://rpi.net.au/~ajohnson/resourcehacker email: ajohnson@rpi.net.au ...
  25. [25]
    How to disable Windows File Protection in Windows 7 to overwrite ...
    Aug 10, 2014 · Go to "C:\Windows\System32", right click on shell32 click prpoerties, and click the "Security" tab. Click advanced and change permissions to full control for ...
  26. [26]
    Is resource Hacker a virus - Microsoft Q&A
    Jan 30, 2025 · If it's the genuine Resource Hacker then it's definitely not a virus. Could you post a link to the VirusTotal analysis?Missing: modifying instability
  27. [27]
    Resource Hacker Portable - Virus and Ransomware related questions
    Oct 30, 2023 · Kaspersky flags Resource Hacker Portable as a trojan, but the developer claims it's a false positive. More security suites also flag it.