Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

peedit

peedit is a cross-platform, zero-dependency, pure-Go tool and library for inspecting and modifying resources (icons, manifests, version info) in Windows Portable Executable (PE) files.

Designed as a lightweight, programmatic alternative to legacy tools like Resource Hacker, peedit operates entirely in standard Go without CGO or Windows API dependencies.

Key Features

  • Pure Go Engine: Built strictly using Go's standard library (debug/pe, encoding/binary).
  • Cross-Platform: Inspect and edit Windows PE binaries on Linux, macOS, or Windows.
  • Resource Tree Traversal: Walk nested Type -> Name/ID -> Language directory trees.
  • Manifest Extraction: Parse and export application manifests as raw XML.
  • Full ICO Assembly: Reconstruct valid, multi-resolution .ico binaries directly from RT_GROUP_ICON and RT_ICON structures.

Milestone Roadmap

Phase Feature Status
Phase 1 PE Parsing, Tree Traversal, Manifest & ICO Extraction v0.1.0 Released
Phase 2 .rsrc Binary Assembler & PE Section Writer 🔜 In Development
Phase 3 Resource Replacement (Manifests, Icons, Version Info) 📅 Planned
Phase 4 Arbitrary Resource Insertion & Deletion 📅 Planned
Phase 5 Cross-Platform GUI (Fyne / Wails) 📅 Planned

Installation & Usage

# Clone and build
git clone [https://github.com/TemidayoAkinwamide/peedit.git](https://github.com/TemidayoAkinwamide/peedit.git)
cd peedit
go build -o peedit cmd/peedit/main.go

# Inspect PE resource tree
./peedit -f target.exe

# Extract application manifest
./peedit -f target.exe -manifest

# Extract all icon groups to .ico files
./peedit -f target.exe -icon all
Library Usage
Go
package main

import (
	"fmt"
	"log"

	"[github.com/TemidayoAkinwamide/peedit/pkg/pe](https://github.com/TemidayoAkinwamide/peedit/pkg/pe)"
	"[github.com/TemidayoAkinwamide/peedit/pkg/resource](https://github.com/TemidayoAkinwamide/peedit/pkg/resource)"
)

func main() {
	parsedPE, err := pe.Open("notepad.exe")
	if err != nil {
		log.Fatalf("Failed to parse PE: %v", err)
	}
	defer parsedPE.Close()

	tree, err := resource.ExtractTree(parsedPE)
	if err != nil {
		log.Fatalf("Failed to parse resource directory: %v", err)
	}

	fmt.Printf("Discovered %d resource types\n", len(tree.Entries))
}
License
MIT © Temidayo Akinwamide


---

**4. Publishing Execution Steps**

Run these exact commands in your VS Code terminal to initialize, push, and release `v0.1.0`:

```bash
# Update go.mod to reflect remote GitHub import path
go mod edit -module github.com/TemidayoAkinwamide/peedit

# Initialize git repository
git init
git branch -M main

# Add files and make initial commit
git add .
git commit -m "feat: initial release v0.1.0 - PE parser, resource tree traversal, and ICO/manifest extractor"

# Connect remote and push
git remote add origin https://github.com/TemidayoAkinwamide/peedit.git
git push -u origin main

# Create release tag v0.1.0
git tag -a v0.1.0 -m "v0.1.0: Stable PE parser, manifest reader, and ICO group extractor"
git push origin v0.1.0

About

Cross-platform, zero-dependency Go tool for inspecting and editing Windows PE file resources

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages