{"id":49085278,"url":"https://github.com/iamsopotatoe-coder/tinyload","last_synced_at":"2026-05-03T13:05:15.597Z","repository":{"id":352036787,"uuid":"1183123101","full_name":"iamsopotatoe-coder/TinyLoad","owner":"iamsopotatoe-coder","description":"Packer for PE files with xor encryption and compression","archived":false,"fork":false,"pushed_at":"2026-04-19T10:00:24.000Z","size":31,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-20T15:48:49.413Z","etag":null,"topics":["compression","crypter","obfuscation","packer","pe-compress","pe-compression","pe-packer","pe-protection","pe-xor","pepacker","peprotection","protection","xor"],"latest_commit_sha":null,"homepage":"https://iamsopotatoe-coder.github.io/TinyLoad/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamsopotatoe-coder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2026-03-16T09:46:54.000Z","updated_at":"2026-04-19T10:00:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/iamsopotatoe-coder/TinyLoad","commit_stats":null,"previous_names":["iamsopotatoe-coder/tinyload"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/iamsopotatoe-coder/TinyLoad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsopotatoe-coder%2FTinyLoad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsopotatoe-coder%2FTinyLoad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsopotatoe-coder%2FTinyLoad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsopotatoe-coder%2FTinyLoad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamsopotatoe-coder","download_url":"https://codeload.github.com/iamsopotatoe-coder/TinyLoad/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsopotatoe-coder%2FTinyLoad/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32569714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: 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":["compression","crypter","obfuscation","packer","pe-compress","pe-compression","pe-packer","pe-protection","pe-xor","pepacker","peprotection","protection","xor"],"created_at":"2026-04-20T15:06:27.509Z","updated_at":"2026-05-03T13:05:15.585Z","avatar_url":"https://github.com/iamsopotatoe-coder.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TinyLoad V3\n![Custom VM](https://img.shields.io/badge/Custom%20VM-live-brightgreen) ![Better Compression](https://img.shields.io/badge/Better%20Compression-coming%20soon-blue) ![Actively Maintained](https://img.shields.io/badge/Actively%20Maintained-success?style=flat-square)\n\nsimple PE packer for Windows. compresses and encrypts executables with a custom virtual machine into a self-extracting stub.\n\n## how it works\n\nTinyLoad appends your compressed payload to a copy of itself. when the packed exe runs it spins up a custom VM interpreter, executes the decryption bytecode against the payload, then loads and runs it directly in RAM.\n\nevery time you pack a file the VM opcodes are randomly shuffled and baked into the stub — so every packed file speaks a different instruction set. standard disassemblers can't auto-trace the decryption without reversing the interpreter first.\n\neverything is in one .cpp file, no dependencies.\n\n## download\n\ngrab a precompiled binary from [releases](https://github.com/iamsopotatoe-coder/tinyload/releases) or build it yourself.\n\n## building from source\n\nyou need MinGW (g++) installed. just run:\n\n```\ng++ -o TinyLoad.exe TinyLoad.cpp -static -O2 -s\n```\n\nor use the included `build.bat`.\n\n## usage\n\n```\nTinyLoad.exe --i \u003cinput\u003e [--o \u003coutput\u003e] [--vm] [--c]\n```\n\n| flag | description |\n|------|-------------|\n| `--i \u003cfile\u003e` | input exe to pack |\n| `--o \u003cfile\u003e` | output path (default: `input_packed.exe`) |\n| `--vm` | custom VM encryption with randomized ISA |\n| `--c` | LZ77 compression |\n\n### examples\n\n```\nTinyLoad.exe --i myapp.exe --c\nTinyLoad.exe --i myapp.exe --o packed.exe --vm --c\nTinyLoad.exe --i myapp.exe --vm\n```\n\nyou need at least one of `--vm` or `--c`.\n\n## compression\n\ncustom LZ77 with hash-chain matching, 64KB sliding window, and lazy evaluation. typically gets decent ratios on PE files since they have a lot of repeated structure. compression runs on the raw input first, then VM encryption is applied on top so patterns in the compressed stream are also hidden. (we wanna improve this in v4)\n\n## vm encryption\n\nv3 replaces XOR with a custom 20-opcode virtual machine. the opcode table is randomly shuffled at pack time — every packed file gets a different ISA. the decryption logic is stored as bytecode with the keys embedded as immediates directly in the program. an analyst has to reverse the interpreter before they can even start on the payload.\n\nthe cipher itself is a 128-bit stream cipher using rotl/rotr key mixing, run entirely through the VM so there's no native decryption loop to fingerprint.\n\nGraph:\n\n\u003cimg width=\"1977\" height=\"1178\" alt=\"compression_graph\" src=\"https://github.com/user-attachments/assets/061a34a8-bb27-4afa-b94f-1d2410ab2c29\" /\u003e\n\n## license\n\nMIT\n\n## Sidenotes\n\n- This works on all files i tested it on, if it breaks on some of your files please open an issue to let me know.\n- If you want to suggest any improvements or future updates please open an issue.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamsopotatoe-coder%2Ftinyload","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamsopotatoe-coder%2Ftinyload","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamsopotatoe-coder%2Ftinyload/lists"}