tehstoni/LexiCrypt

GitHub: tehstoni/LexiCrypt

基于词典替换密码的 shellcode 混淆编码工具,将机器码字节伪装为普通词汇并生成多语言可执行模板。

Stars: 140 | Forks: 24

# LexiCrypt **LexiCrypt** 是一个 shellcode 混淆和编码工具,它将原始的 shellcode 字节转换成一个由词汇组成的“词典”,这些词汇源自 Windows system32 目录中的文件名、Linux 的 /usr/bin 目录,或者在运行时随机生成。随后,生成的编码输出可以嵌入到各种编程语言(例如 C++、Rust、C#、Go、VBScript/WScript)的代码模板中。这种方法有助于伪装 shellcode 并可能绕过简单的检测机制。 ## 工作原理 1. **词典生成**: LexiCrypt 会扫描一个目录(Windows 默认目录为:`C:\Windows\System32`,Linux 默认目录为:`/usr/bin/`)以收集大量唯一的文件名(不含扩展名)。从这些文件名中,它会选取并打乱 256 个独特的单词。每个唯一的单词映射到一个单字节(从 `0x00` 到 `0xFF`)。 它也能够通过 (`-w`) 参数导入自定义词典,并可以通过 `-r` 标志生成自己的随机词典。 2. **Shellcode 编码**: 给定一个原始的 shellcode 文件(例如,机器码的二进制数据块),LexiCrypt 会将每个字节替换为 256 词字典中对应的单词。例如,如果字节 `0x41` 对应单词 `"notepad"`,那么在编码输出中该字节就会被替换为 `"notepad"`。 3. **输出模板**: 编码完成后,LexiCrypt 会生成一个代码模板,其中包含编码后的单词和字典。根据选择的语言模板(例如 `cpp`、`rust`、`csharp`、`go`、`powershell`(P/Invoke)和 `powershell_alt`(反射)),它会生成一个可直接编译(或运行)的代码片段。 该代码片段(简单来说就是基础的 CreateThread 进程注入): - 在运行时将基于单词的 shellcode 解码回字节数组。 - 分配可执行内存。 - 通过 `VirtualAlloc` 和 `CreateThread`(在 Windows 上)复制并执行解码后的 shellcode。 ## 功能特性 - **多语言模板**:目前支持 C++、Rust、C#、Go 和 PowerShell 模板进行输出。 - **自动生成词典**:根据系统文件名动态生成包含 256 个单词的字典。 - **验证步骤**:自动验证编码后的 shellcode 是否能正确解码回原始字节。 - **规避技术**:通过将 shellcode 字节表示为单词,可能有助于避免直接的基于特征的检测。 ## 环境要求 - **Rust 工具链**: 你需要 Rust 编译器和 Cargo。 - **Windows 环境**: LexiCrypt 目前依赖于 Windows 特定的 API 和目录。 如果你决定编译 Go 输出文件,还需要安装 Go。 ## 安装说明 1. **克隆仓库**: ``` git clone https://github.com//LexiCrypt.git cd LexiCrypt ``` 构建项目: ``` cargo build --release ``` 这将在 target/release/lexiCrypt.exe 中生成一个可执行文件。 ## 使用方法 基本命令行用法: ``` lexicrypt.exe -i path\to\input_shellcode.bin -o path\to\output_file.ext -t cpp ``` 参数说明: ``` -i, --input : Path to the input shellcode file (raw binary). -o, --output : Path to the output file (the generated template code). -t, --template