prática recomendada para fornecer uma API C oculta funções internas [fechada]
Eu escrevi uma biblioteca C que consiste em alguns arquivos .he arquivos .c. Eu o compilo como uma biblioteca estática.
Gostaria de expor apenas determinadas funções ao usuário e manter o restante o mais "obscuro" possível para tornar a engenharia reversa razoavelmente difícil.
Idealmente, minha biblioteca consistiria em:
1- um arquivo .h com apenas as funções expostas ao usuário
2- myLibrary.a: o mais reversível possível
Quais são as melhores práticas para isso? Onde devo procurar, existe um bom tutorial / livro em algum lugar?
Mais especificamente:
por 1
Eu já tenho todos os meus .h e .c trabalhando e gostaria de evitar alterá-los, movendo as declarações de função de .h para .c e entrar em referências circulares pbs em potencial. Isso é possível?
Por exemplo, é uma boa ideia criar um novo arquivo .h que eu usaria apenas para distribuir com o meu .a? Esse h conteria cópias das funções que eu quero expor e encaminhar declarações dos tipos que eu uso. Essa é uma boa ideia?
para 2
a) de quais sinalizadores do gcc (ou xcode) devo estar ciente (por remover, sem ter símbolos de depuração etc.) b) um bom ponteiro para aprender sobre como fazer a ofuscação do código?
Qualquer pensamento ajudará,
Obrigada baba