Question:
ARM - Est-il possible d'appeler une fonction depuis une bibliothèque statique externe?
user2578525
2015-09-01 08:23:54 UTC
view on stackexchange narkive permalink

Fondamentalement, je débogue un binaire source fermé sur Android et je veux exécuter une partie de mon code entre les deux, qui est suffisamment volumineux pour ne pas tenir dans le codecave. Alors est-il possible de compiler la bibliothèque avec mon code séparément & puis de l'appeler à partir du binaire cible? Si oui alors comment?

Mon ami m'a suggéré de modifier l'en-tête binaire & étendre le segment de données pour injecter mon code. Est-ce pratique?

J'ai une autre suggestion. Je connais l'interface avec ce binaire source fermé, alors est-il possible d'écrire un binaire wrapper? Par exemple, supposons que le binaire source fermé est libfoo.so. Ensuite, est-il possible d'écrire un binaire libbar.so qui charge réellement libfoo.so & envoie des appels de fonction à libfoo.so

Je pose cette question parce que j'ai vu des programmes warez fournis avec des dll supplémentaires & souvent un exécutable wrapper.

Deux réponses:
diff
2015-11-02 11:12:48 UTC
view on stackexchange narkive permalink

"Wrapping" est certainement possible, l'une des techniques que j'utilise normalement pour la rétro-ingénierie Android est le "shimming" du binaire. Essentiellement, vous écrivez une petite application, basée sur Java / Application ou C / Native. Voici un exemple de cette opération;

https://github.com/rednaga/native-shim

Cela vous permet d'appeler n'importe quelle méthode souhaite avec de légères modifications.

w s
2015-09-01 10:29:36 UTC
view on stackexchange narkive permalink

Si cette bibliothèque est liée statiquement, vous ne pouvez pas la changer sans changer l'exécutable. Cependant, vous pouvez utiliser Frida pendant la session de débogage pour intercepter des appels spécifiques, automatiser cette tâche et exécuter votre propre code écrit en JavaScript (surprise!).

Voir exemple simple ici pour plus de détails.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...