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

questionAnswers(3)

yourAnswerToTheQuestion