AgentStack
SKILL verified Apache-2.0 Self-run

Defeating String And Api Obfuscation

skill-meltedinhex-analyst-ai-pack-defeating-string-and-api-obfuscation · by meltedinhex

Recovers obfuscated strings and resolves dynamically loaded APIs in malware:

No reviews yet
0 installs
13 views
0.0% view→install

Install

$ agentstack add skill-meltedinhex-analyst-ai-pack-defeating-string-and-api-obfuscation

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Defeating String And Api Obfuscation? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Defeating String and API Obfuscation

When to Use

  • A binary has few readable strings because they are XOR/stack-encoded or built at runtime.
  • The import table is sparse because APIs are resolved by hash at runtime.
  • You need to recover C2 URLs, paths, and the real API set to understand behavior.

Do not use plain strings and conclude "no indicators" — modern malware hides strings; absence of readable strings is itself a sign of obfuscation.

Prerequisites

  • A disassembler/decompiler to read the decode routine, plus the bundled XOR/hash tooling.
  • Optionally FLOSS for automated stack/decoded-string recovery.

Workflow

Step 1: Recognize the obfuscation type

Stack strings  : bytes mov'd to the stack one/few at a time, then used
Single-byte XOR: a loop XORing a buffer with a constant
Multi-byte/RC4 : a keyed stream over a blob
API hashing    : a hash compared against export-name hashes to resolve functions

Step 2: Recover XOR-encoded strings

If you find the key and ciphertext, decode directly. The script brute-forces single-byte XOR and surfaces readable results:

python scripts/analyst.py xor-strings sample.bin

Step 3: Reconstruct stack strings

Read the decompiler to collect the byte sequence assembled on the stack and reassemble it. For volume, FLOSS emulates and extracts these automatically.

Step 4: Resolve API hashing

Identify the hash algorithm (often ROR13/ROR7 additive, or djb2). Precompute hashes for known export names and match the constants in the binary back to functions:

python scripts/analyst.py api-hash --algo ror13 --hash 0x726774C

Step 5: Reannotate and extract IOCs

Apply recovered strings and API names back in the disassembler and extract the now-visible URLs, paths, and behavior.

Validation

  • Decoded strings are meaningful (URLs, DLL/API names, paths), not random bytes.
  • Resolved API names match the calls' usage in the surrounding code.
  • The recovered API set explains behavior seen dynamically.

Pitfalls

  • Assuming single-byte XOR when it is keyed/RC4; check key length and the decode loop.
  • Using the wrong hash algorithm/seed and getting no matches — verify against a known function.
  • Recovering strings but not feeding them back into the analysis.

References

  • See [references/api-reference.md](references/api-reference.md) for the XOR and API-hash

tools.

  • FLOSS and API-hashing references (linked in frontmatter).

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.