{"id":15060101,"url":"https://github.com/print3m/shellcoder","last_synced_at":"2025-04-10T05:45:56.266Z","repository":{"id":249843123,"uuid":"831078354","full_name":"Print3M/shellcoder","owner":"Print3M","description":"Shellcoder.py - simple script to automate shellcoding process and shellcode testing.","archived":false,"fork":false,"pushed_at":"2024-07-23T14:35:44.000Z","size":124,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-07T16:48:41.562Z","etag":null,"topics":["assembly","malware-development","nasm","nasm-assembly","shellcode","shellcode-development","shellcode-injection","shellcode-injector","shellcode-loader","shellcoding","windows-malware"],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Print3M.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-07-19T15:55:02.000Z","updated_at":"2025-01-17T13:43:07.000Z","dependencies_parsed_at":"2024-07-23T18:25:08.425Z","dependency_job_id":"e56b598b-a003-41ed-b5a5-9291016f4ddc","html_url":"https://github.com/Print3M/shellcoder","commit_stats":null,"previous_names":["print3m/shellcoder"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Print3M%2Fshellcoder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Print3M%2Fshellcoder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Print3M%2Fshellcoder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Print3M%2Fshellcoder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Print3M","download_url":"https://codeload.github.com/Print3M/shellcoder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248166881,"owners_count":21058479,"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":["assembly","malware-development","nasm","nasm-assembly","shellcode","shellcode-development","shellcode-injection","shellcode-injector","shellcode-loader","shellcoding","windows-malware"],"created_at":"2024-09-24T22:52:48.051Z","updated_at":"2025-04-10T05:45:56.243Z","avatar_url":"https://github.com/Print3M.png","language":"Assembly","readme":"# Shellcoder.py 🐚⌨️\n\nWrite your shellcode in Assembly (NASM) and compile it on Windows x64 with one command!\n\nThis script helps automate the shellcode development and testing process. It takes your Assembly file with the payload (`shellcode.asm`) and generates a bunch of useful executable files (read below).\n\nYou don't have to repeat all these tedious activities anymore to make your shellcode executable! Keep your focus on shellcoding 🔥🐚🔥\n\n## Installation\n\nThe following software must be installed on your system:\n\n- [Python 3](https://www.python.org/downloads/)\n- [NASM (Netwide Assembler)](https://www.nasm.us/)\n- [Visual Studio 2022](https://visualstudio.microsoft.com/)\n\nNo Python dependencies are necessary! You are ready to go.\n\n## Usage\n\n1. Write your shellcode in `shellcode.asm`\n2. Run `python shellcoder.py`\n3. Execute `out/malware.exe` file!\n\n![shellcoder.py command line output](/_img/shellcoder-cli.png)\n\n## Output files\n\nThe output files of this script are stored in `out/` directory:\n\n- `malware.c` - loader code with the injected payload as C string.\n- `malware.exe` - compiled loader with the injected payload.\n- `shellcode.exe` - executable file with the payload only. Great for debugging!\n- `shellcode.bin` - raw machine code of the assembly payload.\n\n![shellcoder.py output files](/_img/shellcoder-output.png)\n\n## Caveats\n\n- Indicate that you are using 64-bit mode at the beginning of the assembly file. Add `[bits 64]` to the `shellcode.asm`.\n- Define entry point in assembly file (required for debugging):\n\n```nasm\n[bits 64]\n\nsection .text:\n    global _start\n\n_start:\n[...YOUR CODE HERE...]\n```\n\n- You cannot use sections other than `.text`. It's a shellcode!\n- Remember about [Microsoft x64 Calling Convention](https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-170) (stack alignment + shadow space!)\n\n## How to debug the payload?\n\nThe best way to debug your assembly code is to take `out/shellcode.exe` file and load it into your favorite debugger.\n\nFinally you should run `out/malware.exe` to be sure that your payload works as intended after memory injection.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprint3m%2Fshellcoder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprint3m%2Fshellcoder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprint3m%2Fshellcoder/lists"}