| name | analyzing-packed-malware-with-upx-unpacker |
| description | Use when identifying and unpacking UPX-packed and other packed malware samples to expose the original executable code for static analysis. Covers both standard UPX unpacking and handling modified UPX headers that prevent automated decompression. Activates for requests involving malware unpacking, UPX decompression, packer removal, or preparing packed samples for analysis. |
| domain | cybersecurity |
| tags | ["malware","unpacking","UPX","packing","static-analysis"] |
| subdomain | malware-analysis |
| version | 1.0.0 |
| author | oyi77 |
| license | Apache-2.0 |
| nist_csf | ["DE.AE-02","RS.AN-03","ID.RA-01","DE.CM-01"] |
Analyzing Packed Malware With Upx Unpacker
Overview
Cybersecurity skill for analyzing packed malware with upx unpacker. Follows industry best practices and security standards.
When to Use
Trigger phrases:
-
"analyzing packed malware with upx unpacker"
-
"Identifies and unpacks UPX-packed and other packed malware samples to expose the"
-
Static analysis reveals high entropy sections and minimal imports indicating the binary is packed
-
PEiD, Detect It Easy, or PEStudio identifies UPX or another known packer
-
The import table contains only LoadLibrary and GetProcAddress (runtime import resolution typical of packed binaries)
-
You need to recover the original binary for proper disassembly and decompilation in Ghidra or IDA
-
Automated UPX decompression fails because the malware author modified UPX magic bytes or headers
Do not use when dealing with custom packers, VM-based protectors (Themida, VMProtect), or samples where dynamic unpacking via debugging is more appropriate.
When NOT to Use
- When you lack proper authorization for testing
- For production systems without change management
- When the task requires legal or compliance expertise beyond technical scope
Prerequisites
- UPX (Ultimate Packer for eXecutables) installed (
apt install upx-ucl or download from https://upx.github.io/)
- Detect It Easy (DIE) for packer identification
- Python 3.8+ with
pefile library for manual header repair
- x64dbg or x32dbg for manual unpacking when automated tools fail
- PE-bear or CFF Explorer for PE header inspection and repair
- Isolated analysis VM without network connectivity
Workflow
import re
IOC_PATTERNS = {
"ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",
"domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",
"hash_md5": r"\b[a-f0-9]{32}\b",
"hash_sha256": r"\b[a-f0-9]{64}\b",
}
() -> :
{k: re.findall(v, text) k, v IOC_PATTERNS.items()}