main commit
we add our tool lol
This commit is contained in:
parent
acc2f42db9
commit
eafe1d4556
22
README.md
22
README.md
|
|
@ -1,3 +1,21 @@
|
||||||
# RunDecrypt
|
# Self Extracting Runner (PyInstaller)
|
||||||
|
|
||||||
|
This project builds a Windows executable that:
|
||||||
|
|
||||||
|
1. Contains a bundled `app.zip`
|
||||||
|
2. Extracts it to a temporary folder at runtime
|
||||||
|
3. Runs `app.exe` from inside the extracted files
|
||||||
|
4. Cleans up the temporary folder after execution
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Python 3.8+
|
||||||
|
- PyInstaller
|
||||||
|
|
||||||
|
Install PyInstaller:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install pyinstaller
|
||||||
|
|
||||||
A simple Project in python which extracts and decrypts your project (base64) and runs it.
|
|
||||||
60
main.py
Normal file
60
main.py
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import zipfile
|
||||||
|
import tempfile
|
||||||
|
import subprocess
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def resource_path(relative_path: str) -> str:
|
||||||
|
"""
|
||||||
|
Get absolute path to resource, works for dev and for PyInstaller bundle.
|
||||||
|
"""
|
||||||
|
if hasattr(sys, "_MEIPASS"):
|
||||||
|
return os.path.join(sys._MEIPASS, relative_path)
|
||||||
|
return os.path.join(os.path.abspath("."), relative_path)
|
||||||
|
|
||||||
|
def extract_and_run():
|
||||||
|
zip_name = "app.zip"
|
||||||
|
exe_name = "app.exe"
|
||||||
|
|
||||||
|
zip_path = resource_path(zip_name)
|
||||||
|
|
||||||
|
if not os.path.isfile(zip_path):
|
||||||
|
print("Payload app.zip not found!")
|
||||||
|
return 1
|
||||||
|
|
||||||
|
temp_dir = tempfile.mkdtemp(prefix="self_extract_")
|
||||||
|
|
||||||
|
try:
|
||||||
|
with zipfile.ZipFile(zip_path, "r") as z:
|
||||||
|
z.extractall(temp_dir)
|
||||||
|
|
||||||
|
exe_path = os.path.join(temp_dir, exe_name)
|
||||||
|
|
||||||
|
if not os.path.isfile(exe_path):
|
||||||
|
print("app.exe not found inside extracted payload!")
|
||||||
|
return 2
|
||||||
|
|
||||||
|
# Run the extracted executable
|
||||||
|
process = subprocess.Popen(
|
||||||
|
[exe_path],
|
||||||
|
cwd=temp_dir,
|
||||||
|
shell=False
|
||||||
|
)
|
||||||
|
|
||||||
|
process.wait()
|
||||||
|
return process.returncode
|
||||||
|
|
||||||
|
finally:
|
||||||
|
# Cleanup after execution
|
||||||
|
try:
|
||||||
|
shutil.rmtree(temp_dir, ignore_errors=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def main():
|
||||||
|
code = extract_and_run()
|
||||||
|
sys.exit(code if code is not None else 0)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Loading…
Reference in New Issue
Block a user