Plist (Lista de propriedades) Arquivo MD5SUM Altera quando compilado no aplicativo para iPhone

StackOverflow https://stackoverflow.com/questions/1142995

  •  16-09-2019
  •  | 
  •  

Pergunta

Estou incluindo um arquivo plist no meu aplicativo para iPhone. Está em formato binário (usando plutil para converter de XML em binário). Quero executar uma soma de verificação do MD5 (ou SHA-1) em tempo de execução para confirmar que seu conteúdo é o que é esperado. Infelizmente, eu sempre recebo uma soma de cheque que é diferente da que incluí originalmente. Depois de mais de uma hora assumindo que eu estava calculando a soma do MD5 errada, decidi fazer um teste e confirmar que os bytes são de fato, o mesmo. Eles não são. O tamanho do arquivo permanece o mesmo, mas a partir do byte 30 e em todo o arquivo (exceto os últimos 32 bytes), o conteúdo do arquivo é completamente diferente. Alguém sabe se os arquivos da lista de propriedades são assinados ou "compilados" para um formato binário diferente antes da inclusão em um aplicativo para iPhone? Se sim, você pode fornecer mais detalhes sobre o processo?

Desde já, obrigado!

Foi útil?

Solução

Por padrão, em vez de apenas fazer uma cópia direta, o Xcode usa um pequeno script para processar e copiar arquivos do Plist ao criar um destino. Se você exibir a janela de informações para o seu destino no Xcode e selecionar a guia "Regras", verá que, para processar o texto. Ele faz uma verificação básica para garantir que o Plist seja válido e, opcionalmente, pode convertê -lo em um formato diferente, embora pareça que nenhuma conversão é executada por padrão.

Não sei se é isso que está causando uma alteração no seu arquivo Plist, mas se você quiser, pode obter informações sobre o próprio arquivo do Plist em seu projeto e alterar o tipo de arquivo de "text.plist" para apenas "texto". Isso deve fazer com que o Xcode o trate como um arquivo de texto simples, em vez de um arquivo de lista de propriedades, e basta fazer uma cópia direta em vez de executá -lo através da ferramenta PelloplistFile.

Outras dicas

Vou colocar o porquê, empilhar esta pergunta. Não sei a resposta para sua pergunta, mas estou curioso para saber por que você está gastando tempo com ela.

Como os aplicativos são assinados digitalmente, por que você está preocupado com a integridade do Plist? Se alguém o modificasse, o aplicativo não instalaria porque a assinatura digital não seria mais válida.

A outra razão pode ser que você esteja preocupado com o fato de o aplicativo ser invadido. Perfeitamente razoável, mas se alguém puder invadir o aplicativo, também poderá modificar o Plist e alterar a soma de verificação no seu código para que ele ainda seja executado. Realmente não há como garantir a integridade do seu conteúdo sem realmente obtê -lo de terceiros (por exemplo, seu próprio servidor)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top