Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
SHGenOb — Ferramenta baseada em Python para gerar Shellcode a partir de PIC C | Kitploit
Ferramentas/GitHubGitHub/oldboy21/shgenob
Ferramentas de Criptografia/DescriptografiaGeração de PayloadsExploraçãoShellcodeAnálise de MalwareAnálise de BináriosAprendizado e EducaçãoGeração de Shellcode
GitHuboldboy21/shgenob

SHGenOb

Ferramenta baseada em Python para gerar Shellcode a partir de PIC C

Ver Repositório
435há 9 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

SHGenOB: Gerador de Shellcode a partir de Código C PIC

Introdução

SHGenOB é uma ferramenta baseada em Python projetada para gerar shellcode a partir de Código Independente de Posição (PIC – Position Independent Code) escrito em C. Ela automatiza o processo de compilação do código C, extração da seção .text e, opcionalmente, criptografia do shellcode resultante usando criptografia XOR.

Este projeto é baseado inteiramente neste artigo de hasherezade.

Código Independente de Posição (PIC)

Nota Importante para Usuários do SHGenOB: Para que esta ferramenta de geração de shellcode funcione corretamente, o código C no arquivo de entrada deve ser escrito como Código Independente de Posição (PIC). A ferramenta assume que o código fornecido segue os princípios e características do PIC descritos abaixo.

Código Independente de Posição (PIC) é um tipo de código de máquina que pode ser executado independentemente de seu endereço de memória absoluto. Essa característica torna o PIC particularmente útil na criação de shellcode, bibliotecas compartilhadas e certos tipos de malware. As principais características do PIC incluem:

  • Independência de Endereço: PIC pode ser executado corretamente independentemente de onde for carregado na memória.
  • Sem Referências de Memória Fixas: Evita usar endereços absolutos, confiando em endereçamento relativo ou outras técnicas para referenciar locais de memória.
  • Autocontido: PIC geralmente inclui todos os dados necessários dentro do próprio código, reduzindo dependências externas.
  • Strings na Pilha (Stack-Strings): Declarar strings como array de chars força o compilador a colocá-las na pilha e não na seção .data ou .pdata do arquivo PE.
  • Livre de Realocações: Não requer que o carregador faça realocações, tornando o carregamento e a execução mais rápidos.
  • Tamanho Menor: PIC frequentemente resulta em tamanhos binários menores em comparação com código dependente de posição.
  • Endereçamento Relativo a Registradores: Frequentemente usa endereçamento relativo a registradores para acessar dados e realizar saltos.
  • Uso de Deslocamentos (Offsets): Em vez de endereços absolutos, PIC usa deslocamentos a partir do ponteiro de instrução atual.
  • Técnicas Específicas de Plataforma: Diferentes arquiteturas de CPU podem exigir técnicas diferentes para alcançar independência de posição.

PIC é essencial em cenários onde o endereço exato de carregamento do código não é conhecido antecipadamente, tornando-se um conceito crucial no desenvolvimento de shellcode e em certas áreas de programação de sistemas. Ao usar o SHGenOB, certifique-se de que seu código C de entrada siga esses princípios de PIC para gerar shellcode eficaz e confiável.

Recursos

  • Compila código C PIC usando ferramentas do Microsoft Visual Studio
  • Extrai a seção .text do executável compilado
  • Opcionalmente criptografa o shellcode usando criptografia XOR
  • Insere o shellcode gerado em um modelo de loader
  • Compila e testa o loader com o shellcode gerado
  • Suporta modo de depuração para inspeção de arquivos intermediários
  • Limpa arquivos intermediários após execução bem-sucedida

Requisitos

  • Sistema operacional Windows
  • Python 3.6 ou superior
  • Microsoft Visual Studio 2022 Community Edition (ou versão compatível)
  • Os seguintes pacotes Python:
    • pefile
    • argparse
  • Um compilador C (cl.exe) e montador (ml64.exe) do Visual Studio
  • Arquivo vcvars64.bat do Visual Studio (para configurar o ambiente de compilação)

Instalação

  1. Instale Python 3.6 ou superior a partir de python.org
  2. Instale o Microsoft Visual Studio 2022 Community Edition
  3. Instale os pacotes Python necessários:

pip install pefile argparse

  1. Clone ou baixe este repositório para sua máquina local

Uso

Execute o script a partir da linha de comando com a seguinte sintaxe:

root@kitploit:~
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]

Argumentos:

  • --code-file ou -cf: (Obrigatório) Caminho para o arquivo main.c contendo o código PIC
  • --masm-file ou -mf: (Opcional) Caminho para arquivo .masm externo para incluir lógica adicional de assembly no shellcode
  • --debug ou -d: (Opcional) Ativar modo de depuração (pula a limpeza de arquivos intermediários)
  • --xor-key ou -xk: (Opcional) Chave XOR para criptografar o shellcode (formato: AA,BB,CC)

Exemplos:

root@kitploit:~
# Uso básico
python shgenob.py --code-file main.c

# Com arquivo MASM externo
python shgenob.py --code-file main.c --masm-file custom_logic.masm

# Com todas as opções
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC

Descrição das Funções

  1. save_to_file(content, filename): Salva o conteúdo fornecido em um arquivo no diretório atual
  2. cleanup(): Exclui arquivos intermediários (.asm, .exe, .obj, .lnk) no diretório atual
  3. xor_encrypt(shellcode, key): Criptografa o shellcode usando XOR com a chave fornecida
  4. insert_shellcode_into_loader(formatted_shellcode, loader_file): Insere o shellcode no template do loader
  5. extract_text_section(file_path, key): Extrai a seção .text de um arquivo PE e opcionalmente a criptografa
  6. find_file(root_dir, file_name): Procura por um arquivo no diretório dado e seus subdiretórios
  7. run_command_with_vcvars(command, vcvars_path): Executa um comando com as variáveis de ambiente do Visual Studio configuradas
  8. compile_cpp_file(cpp_file, vcvars_path, output_exe): Compila um arquivo C++ usando o compilador do Visual Studio
  9. modify_asm_file(asm_file): Modifica o arquivo assembly gerado para compatibilidade com shellcode
  10. main(cpp_file, args): Função principal que orquestra o processo de geração de shellcode

Fluxo de Trabalho

  1. Analisar argumentos da linha de comando
  2. Localizar ferramentas do Visual Studio (vcvars64.bat, cl.exe, ml64.exe)
  3. Compilar o arquivo C de entrada para assembly
  4. Modificar o arquivo assembly gerado
  5. Montar o arquivo assembly modificado
  6. Extrair a seção .text do executável resultante
  7. Opcionalmente criptografar o shellcode extraído
  8. Salvar o shellcode em um arquivo
  9. Inserir o shellcode em um template de loader
  10. Compilar o loader
  11. Testar o loader com o shellcode gerado
  12. Limpar arquivos intermediários (a menos que esteja em modo de depuração)

Depuração

Use a flag --debug para pular o processo de limpeza e inspecionar arquivos intermediários. Isso é útil para solução de problemas e compreensão do processo de geração de shellcode.

Considerações de Segurança

  • Esta ferramenta é destinada apenas para fins educacionais e de teste autorizado
  • O shellcode gerado pode ser sinalizado por software antivírus
  • Use criptografia (chave XOR) para ofuscar o shellcode, mas observe que esta é uma forma básica de ofuscação
  • Certifique-se de ter permissão para usar esta ferramenta nos sistemas alvo

Limitações

  • Atualmente suporta apenas Windows e o conjunto de ferramentas do Microsoft Visual Studio
  • Tratamento de erros limitado para alguns casos extremos
  • A criptografia XOR é uma forma básica de ofuscação e pode não ser suficiente para todos os casos de uso

Contribuição

Contribuições para melhorar o SHGenOB são bem-vindas. Por favor, siga estes passos:

  1. Faça um fork do repositório
  2. Crie um novo branch para sua funcionalidade
  3. Faça commit das suas alterações
  4. Envie para o branch
  5. Crie um novo Pull Request
Baixar ferramenta