2 votes

Comment exécuter des exécutables natifs compilés pour ARM sur des appareils Android non enracinés ?

Suivant este j'ai compilé un Bonjour le monde ! binaire ARM à partir de la source C en utilisant gcc . Je veux exécuter ce programme sur mon téléphone Android non enraciné mais je ne trouve pas de moyen facile de le faire.

Ce que j'ai essayé :

  1. Copie de hello a /sdcard et essayer de l'exécuter à partir de là. Cela ne fonctionne pas car le stockage interne est monté avec l'extension noexec drapeau.

  2. Copie de hello a /data/local/ en utilisant cp hello /data/local/ o cat hello > /data/local/hello comme ここで説明 . Cela ne fonctionne pas non plus et j'obtiens l'erreur "permission denied".

  3. Installer un programme émulateur de terminal tel que Termux et en utilisant l'application Termux pour copier hello de /sdcard/hello a /data/data/com.termux/files/home en cours d'exécution chmod +x hello et ensuite exécuter ./hello à partir du répertoire personnel de Termux dans l'application Termux . Cela fonctionne mais n'est pas une solution réalisable.

Existe-t-il un moyen meilleur/plus facile d'exécuter des exécutables ELF natifs sur un téléphone Android non enraciné, directement via ADB, sans avoir à installer d'applications ?

4voto

Irfan Latif Points 16863
  1. En plus de noexec option de montage, /sdcard est émulé système de fichiers avec des autorisations de fichiers fixes. Les fichiers ne peuvent donc pas être rendus exécutables. Mais certains explorateurs de fichiers comme MiXplorer permettent d'exécuter des binaires/scripts à partir de /sdcard par le biais de /system/bin/sh .
  2. /data/local a des autorisations 0751 propriétaire root.root 1 pour que les applications normales ne puissent pas y accéder. Cependant, à partir de adb shell utiliser /data/local/tmp qui a un utilisateur/groupe propriétaire 2000 (aid_shell) 2 et selinux est également autorisé 3 . Ainsi, vous ne vous verrez pas refuser la permission.
  3. Si vous ne voulez pas utiliser un PC, l'émulateur de terminal est la seule option. Sur Termux, vous pouvez également ajouter /data/local/tmp (ou un sous-répertoire) vers $PATH par l'édition ~/.profile si vous voulez éviter de placer les binaires à plusieurs endroits. Mais le répertoire doit être lisible par le monde entier et selinux ne doit pas refuser l'accès ou l'exécution des binaires.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X