Descompilando bibliotecas Objective-C
-
22-09-2019 - |
Pergunta
Acabei de terminar uma biblioteca em Objective-C que compilei como uma biblioteca estática para distribuição.
Eu queria saber quais são as chances de descompilar isso.
- Você conhece algum software que possa fazer isso?
- Se sim, como eu poderia me proteger melhor?
EDITAR: Minha biblioteca estática é feita para iPhone/ARM
Criei um algoritmo que dependendo de alguns parâmetros do app, ele pode rodar como demo ou como código completo.Você inicia o objeto com variáveis X e desbloqueia a versão completa.Eu queria saber se eles conseguirão ver esse algoritmo para criar um gerador de chaves.
Solução
Não está claro o que você está tentando se proteger de.Sim, pode ser engenharia reversa.A ferramenta mais simples é otool
, parte da distribuição padrão do desenvolvedor:
otool -tV <library>
A partir disso eles correm para coisas como IDA Pro, que tem suporte para iPhone e é muito bacana para esse tipo de trabalho.Nesse meio tempo, estou realmente surpreso por não ter visto um retrabalho de otx para iPhone/ARM ainda.Eu não ficaria surpreso em ver um aparecer eventualmente.E é claro que existe o gdb se você estiver tentando descobrir como as coisas fluem e quais são os dados em vários pontos.
Se você tiver mais detalhes sobre o que está tentando se proteger, pode haver algumas respostas direcionadas.Além disso, leia os comentários de Chuck.
Outras dicas
Se for executado, pode ser descompilado.Objective-C é particularmente fácil de descompilar em código legível graças aos seus recursos dinâmicos.Se quiser tornar as coisas um pouco mais difíceis, você pode escrever a maior parte do seu código em C simples e retirar o executável - o que obviamente tem a desvantagem de tornar o design do seu aplicativo mais difícil de gerenciar.Mas seja honesto consigo mesmo:Se alguém quiser decifrar seu código, você não conseguirá impedi-lo.Os crackers têm uma quantidade praticamente ilimitada de tempo e entusiasmo e ficarão realmente entusiasmados com quaisquer novos esforços que você fizer para detê-los.Ninguém ainda criou software inquebrável, e as maiores corporações do mundo tentaram.Você não se sairá melhor do que eles, especialmente se precisar perguntar sobre isso no Stack Overflow.
Aproveite o tempo que você gastaria para impedir a descompilação e use-o para tornar seu produto melhor - isso terá um ROI muito melhor.
ChanceGetsDecompiled = ExpectedGainFromBeingDecompiled / PopularityOfLibrary
Bem, se você REALMENTE quer saber, eu tentaria descompilar você mesmo.Você não diz se isso é para PPC, Intel ou ARM, o que faz a diferença.Aqui está um descompilador para IntelDescompilador i386
Não sei o que você poderia fazer (acho que não há muito) para limitar isso.O código sempre pode sofrer engenharia reversa.Fique feliz por não usar java ou .net.A descompilação deles é tão legal.