{"id":15649712,"url":"https://github.com/dimkr/papaw","last_synced_at":"2025-04-30T16:28:56.144Z","repository":{"id":34611482,"uuid":"169304067","full_name":"dimkr/papaw","owner":"dimkr","description":"A simple, decompressing executable packer","archived":false,"fork":false,"pushed_at":"2022-05-16T06:24:58.000Z","size":143,"stargazers_count":45,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T17:51:12.361Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/dimkr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-05T20:02:04.000Z","updated_at":"2025-03-13T00:20:48.000Z","dependencies_parsed_at":"2022-07-22T08:32:24.712Z","dependency_job_id":null,"html_url":"https://github.com/dimkr/papaw","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpapaw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpapaw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpapaw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpapaw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimkr","download_url":"https://codeload.github.com/dimkr/papaw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251741954,"owners_count":21636352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-10-03T12:31:14.235Z","updated_at":"2025-04-30T16:28:55.806Z","avatar_url":"https://github.com/dimkr.png","language":"C","readme":"```\n _ __   __ _ _ __   __ ___      __\n| '_ \\ / _` | '_ \\ / _` \\ \\ /\\ / /\n| |_) | (_| | |_) | (_| |\\ V  V /\n| .__/ \\__,_| .__/ \\__,_| \\_/\\_/\n|_|         |_|\n```\n\n[![Build Status](https://github.com/dimkr/papaw/actions/workflows/release.yml/badge.svg?branch=master)](https://github.com/dimkr/papaw/actions)\n\n## Overview\n\npapaw is a permissively-licensed packer for executables which contain statically linked, third-party components of various licenses and run on various devices, with limited disk space.\n\npapaw reduces the size of executables and makes executables capable of replacing themselves on disk, while optionally providing very basic anti-debugging protection to discourage those attempting some trivial reverse-engineering techniques.\n\nIt is designed to be portable across different devices, therefore it avoids machine-specific assembly and the use of fexecve() or other, newer system calls which could be used to simplify it.\n\n## Implementation\n\npapaw consists of a small executable (~15-40K) containing a decompressor. It extracts a compressed executable appended to it by the papawify script.\n\nThe payload executable is extracted to a temporary file. When running as root, this is done by mounting a tmpfs file system and lazily unmounting it before the extraction.\n\n## Supported Compression Algorithms and Implementations\n\n* LZMA2, using [XZ Embedded](https://tukaani.org/xz/embedded.html) (the default)\n* LZMA1, using the [LZMA SDK](https://www.7-zip.org/sdk.html) decompressor\n* LZMA2, using [Minimal LZMA](https://github.com/ionescu007/minlzma)\n* Zstandard, using the [zstd](https://github.com/facebook/zstd) decompressor\n* Deflate, using [miniz](https://github.com/richgel999/miniz)\n\nThe first two are extremely similar in compression ratio, code size, memory usage and speed.\n\n## Usage\n\npapaw uses [Meson](http://mesonbuild.com/) as its build system. To pack an executable using papaw, build papaw, then use papawify to pack the executable.\n\npapaw can be used as a Meson subproject; in that case, custom_target() is the recommended way to run papawify.\n\nHowever, it is also possible to run papawify manually and pre-built, static binaries are available [here](https://github.com/dimkr/papaw/releases). For example:\n\n```\nwget https://github.com/dimkr/papaw/releases/latest/download/papawify-xz https://github.com/dimkr/papaw/releases/latest/download/papaw-xz-x86_64\npython3 papawify-xz papaw-xz-x86_64 /bin/bash bash-packed\ndu -h /bin/bash bash-packed\n./bash-packed --version\n```\n\n## Legal Information\n\npapaw is free and unencumbered software released under the terms of the MIT license; see COPYING for the license text.\n\nThe ASCII art logo at the top was made using [FIGlet](http://www.figlet.org/).\n","funding_links":[],"categories":[":package: Packers"],"sub_categories":["After 2010"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimkr%2Fpapaw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimkr%2Fpapaw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimkr%2Fpapaw/lists"}