1. Trancegott, 14.02.2012 #1
    Trancegott

    Trancegott Threadstarter Neuer Benutzer

    Hallo,
    ich habe eine App (nur zum Spaß) programmiert, die sich mit einem FTP server verbindet. Ich habe das Passwort alá
    Code:
    client.login("usr_ftp_173803_0", "nhjkk67nhj");
    einfach im quelltext stehen.

    Ein Freund von mir hat sich den spaß gemacht, den Quelltext aus der .apk zu holen (geht ja anscheinend total einfach) um mich ein bisschen zu ärgern :)

    Jetzt wollte ich wissen, ob man (wenn ich das Passwort als String Resource speichere) eine String-Resource auch so leicht auslesen kann. Ich weiß, das es bei dem Ordner drawables geht, aber auch bei Values?


    Würde mich freuen wenn mir das jemand sagen kann :)

    Gruß Thomas
     
  2. manu, 14.02.2012 #2
    manu

    manu Fortgeschrittenes Mitglied

    Ja, geht genauso leicht. Egal, wo der String steht. Geht überall recht einfach auszulesen. Alternativ könntest du mit dem NDK in C eine Bibliothek schreiben, die den String ausgibt. Kann man dann nicht mehr so leicht lesen.

    Oder du verschlüsselst den String und entschlüsselst zur Laufzeit. Ist dann schon mehr Aufwand und schreckt manchen ab.
     
    Trancegott bedankt sich.
  3. Trancegott, 14.02.2012 #3
    Trancegott

    Trancegott Threadstarter Neuer Benutzer

    scheiße, ich glaub für das NDK reichen meine C skills nicht aus XD
     
  4. manu, 14.02.2012 #4
    manu

    manu Fortgeschrittenes Mitglied

    Dann kannst dir etwas einfallen lassen, wie du den String in Java versteckst.

    Gibt diverse Möglichkeiten:
    - An verschiedenen Stellen zusammensetzen
    - Zur Laufzeit entschlüsseln
    - ....

    Du musst dir eigentlich nur überlegen, wie viel Aufwand ist es, um hinter den String zu kommen? Lohnt sich das für den potentiellen Angreifer?
    Wenn es zu lange dauern würde, dann ist es relativ sicher. Passwörter funktionieren nicht anders.
     
  5. Fr4gg0r, 14.02.2012 #5
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Wenn der string in einem stück vorkommt, kriegste das auch aus nativ kompiliertem code wieder raus.
     
    Trancegott bedankt sich.
  6. Trancegott, 14.02.2012 #6
    Trancegott

    Trancegott Threadstarter Neuer Benutzer

    was meint ihr mit "zur laufzeit entschlüsseln"?
     
  7. Trancegott, 14.02.2012 #7
    Trancegott

    Trancegott Threadstarter Neuer Benutzer

    ich hab den code grad extrahiert, und da steht nur
    Code:
        String str = getResources().getString(2130968577);
        FileInputStream localFileInputStream = openFileInput("daten.txt");
        this.client.connect("bitchapp.cwsurf.de");
        this.client.login("usr_ftp_173803_0", str);
        this.client.storeFile("daten.txt", localFileInputStream);
        this.client.logout();
        localFileInputStream.close();
    also kein passwort oder etwa doch?
     
  8. Fr4gg0r, 14.02.2012 #8
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Aapt generiert ein xml File, public.xml, in dem du nun unter der Zahl ein Verweis auf die strings.xml findest. (Alle .xml Dateien werden von aapt "kompiliert" und sind deshalb erstmal nicht lesbar, apktool kann sie wieder in eine lesbare Form bringen.)
    Ist das nicht auch logisch?..
     
  9. Tom299, 15.02.2012 #9
    Tom299

    Tom299 Android-Experte

    ich hab den Proguard noch nicht ausprobiert, aber macht er nicht auch Strings unkenntlich?
     
  10. sixi, 15.02.2012 #10
    sixi

    sixi Erfahrener Benutzer

    Nein, tuts nicht...
     
  11. the_alien, 15.02.2012 #11
    the_alien

    the_alien Android-Lexikon

    Hart kodierte Passwörter lassen sich eigentlich immer irgendwie auslesen. Einfacher wäre es wenn du zur Eingabe des Passwortes aufrufst, dann kriegt es nicht jeder der die APK bekommt ;)
     

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. values daten entschlüsseln