Pregunta

Ahora que Apple se está ejecutando algún tipo de análisis estático para comprobar automáticamente si el uso de la API privada, un número de personas que han sido capturados por la biblioteca Three20. Utilizo otra biblioteca de terceros (que yo puedo compilar a partir del código) y me gustaría para auditar automáticamente para uso API privada antes de enviarla a Apple, para que pueda eliminar / re-escribir esas partes.

Si me quedo en mi nm ejecutable de la aplicación, me sale una lista de símbolos, y yo estoy viendo símbolos de ahí que no utilizo. Por ejemplo veo _AudioServicesPlaySystemSound, y si busco "AudioServicesPlaySystemSound" en XCode no da resultados positivos. ¿Hay alguna manera de discriminar automáticamente las llamadas a las API privadas, por ejemplo, puedo tener que Apple tiene la costumbre de nombrarlos con un guión inicial.

Sin embargo: si incluyo deliberadamente una llamada a una API privada que no aparece en la salida del nm, pero sí muestra arriba si corro strings en el binario. En base a esto, una idea que tenía era para compilar una lista enorme de todas las llamadas a la API privadas en una enorme mesa y buscar automáticamente en la salida de cadenas. No he hecho todavía.

¿Alguien tiene algún consejo sobre cómo coger automáticamente estas cosas, así que sólo voy a través del proceso de revisión una vez?

¿Fue útil?

Solución

Se podría intentar ejecutar nm en los archivos de objeto en lugar del ejecutable enlazado:

nm -g -j *.o  | sort | uniq

Los objetos deben estar en el subdirectorio de build/<app>.build/*/<app>.build/Objects-normal.

Estás viendo una referencia a AudioServicesPlaySystemSound porque una de las funciones que he llamado a su vez llama AudioServicesPlaySystemSound.

Objetivo llamadas C no se mostrarán generalmente en vertederos nm, tendrá que utilizar para que otool:

otool -ov <object file>

Otros consejos

Utilice esta herramienta dev, aplicación de escáner . De analizar el archivo .app para los métodos de la API privadas. Una versión futura también va a buscar variables de instancia API privadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top