Desenvolvendo drivers sem informações
Pergunta
Como é que comunidade de software livre/de código aberto desenvolver drivers para produtos que não oferecem documentação?
Solução
Como você faz engenharia reversa de algo?
- Você observa a entrada e a saída e desenvolve um conjunto de regras ou modelos que descrevem a operação do objeto.
Exemplo:
Digamos que você queira desenvolver um driver de câmera USB.A "caixa preta" é o driver do software.
- Desenvolva ganchos no sistema operacional e/ou driver para que você possa ver as entradas e saídas do driver
- Gere entradas típicas e registre as saídas
- Analise as saídas e sintetize um modelo que descreva a relação entre a entrada e a saída
- Teste o modelo - coloque-o no lugar do driver da caixa preta e execute seus testes
- Se fizer tudo que você precisa, pronto, se não, enxágue e repita
Observe que este é apenas um processo científico/de resolução de problemas regular.Por exemplo, os meteorologistas fazem a mesma coisa: observam o tempo, testam as condições atuais em relação ao modelo, que prevê o que acontecerá nos próximos dias, e depois comparam os resultados do modelo com a realidade.Quando não corresponde, eles voltam e ajustam o modelo.
Este método é um pouco mais seguro (legalmente) do que a engenharia reversa de sala limpa, onde alguém descompila o código ou desmonta o produto, analisa-o minuciosamente e cria um modelo com base no que viu.Então o modelo (E NADA MAIS) é passado aos desenvolvedores que replicam a funcionalidade do produto.O engenheiro que desmontou o original, entretanto, não pode participar porque pode trazer partes do código/design protegidas por direitos autorais e inadvertidamente colocá-las no novo código.
Porém, se você nunca desmontar ou descompilar o produto, deverá estar em águas legalmente seguras - o único problema que resta são as patentes.
-Adão
Outras dicas
Geralmente por meio de engenharia reversa do código.No entanto, pode haver questões legais em alguns países.
Esta é uma pergunta bastante vaga, mas eu diria Engenharia reversa.A maneira como eles fazem isso depende do tipo de dispositivo e do que está disponível para ele.Em muitos casos, o dispositivo pode ter um chipset central semelhante a outro dispositivo que pode ser modificado para funcionar.