2016-07-26 20 views
0

Ich habe ein benutzerdefiniertes ROM erstellt und Plattformschlüssel für diesen Build erhalten. Jetzt erstelle ich eine Systemanwendung, die mit dem Plattformschlüssel signiert ist.Welche Art von Zugriff erhalten wir nach dem Signieren einer Anwendung mit Plattformsignatur?

Jetzt möchte ich die Anwendung schreiben etwas im System/priv-app-Ordner. Wenn ich die Anwendung mit Superuser-Zugriff in einem gerooteten Telefon ausführen, funktioniert der Code.

Aber ist ein solcher Zugriff für die Anwendung möglich, die mit dem Schlüssel der Plattform signiert ist?

Ich habe versucht, die folgende:

public class MainActivity extends AppCompatActivity { 

private static final String DEBUG_TAG = "MainActivity"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    try { 
     Log.i(DEBUG_TAG, "Here"); 

     Process process = Runtime.getRuntime().exec("chmod 777 /system/priv-app"); 



     DataOutputStream dataOutputStream = new DataOutputStream(process.getOutputStream()); 


     dataOutputStream.writeBytes("touch /system/priv-app/foo.txt\n"); 
     dataOutputStream.flush(); 

     BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     StringBuilder stringBuilder = new StringBuilder(); 
     String line; 
     while ((line = reader.readLine())!= null) { 
      stringBuilder.append(line + "\n"); 
     } 
     Log.i(DEBUG_TAG, stringBuilder.toString()); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     Log.i(DEBUG_TAG, "IO Error"); 
    } 

} 

} 

Ich bekomme keine Ausgabe von der Laufzeit in meiner Anwendung, nicht einmal ein Fehler, aber die Datei nicht in dem Verzeichnis erstellt.

Gibt es einen Implementierungsfehler oder ist ein solcher Zugriff nicht möglich?

Antwort

0

Der Systemordner ist standardmäßig schreibgeschützt. Mit Root-Zugriff können Sie es erneut mounten, aber ich würde nicht vorschlagen, länger als nötig zu laufen (länger als es dauert, um Ihre App im priv-app Ordner zu installieren). Für eine Sache, wenn es rw montiert und Sie einen Werksreset durchführen, werden Sie Ihr Gerät brick (es sei denn, Sie haben eine Wiederherstellungspartition).

+0

Meine Frage ist tatsächlich, bekomme ich Root-Zugriff von der Anwendung mit Plattformschlüssel unterzeichnet? Kann ich es rw wieder montieren, ohne vorher den Befehl su zu benutzen? – bpncool

1

Eine Systemanwendung hat Zugriff auf Systemebene. Um die Systempartition erneut zu mounten, benötigen Sie einen root-Zugang, so dass Sie nicht in das priv-app-Verzeichnis ohne "externe" Hilfe schreiben können.

Wenn Sie ein eigenes benutzerdefiniertes ROM erstellen, können Sie einen Daemon erstellen, der auf den unteren Ebenen des Android-Stacks mit Root-Zugriff ausgeführt wird (Informationen zum Ausführen des ausführbaren Daemon beim Start finden Sie unter). Sie können über einen lokalen Socket mit dem Daemon kommunizieren und die Systempartition erneut mounten und die gewünschten Dateien kopieren.

In der folgenden Einführung wird erläutert, wie Sie einen systemeigenen Server erstellen, der einen Socket öffnet und auf eingehende Verbindungen wartet: Unix Sockets.