tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
15
ZUGRIFFE
1088
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ciD4r ciD4r ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    12
    Hallo,

    ist es möglich die Variablen in einer Methode zu verschleiern? Ich möchte nicht, dass man erkennt, wie die Methode arbeitet.

    z.B. aus

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    public void checkCounter()
    {
         int counter = user.getCounter();
         if(counter >= 10)
         {
              Signature sig = Signature.getInstance("MD2withRSA", "SunRsaSign");
         }
    }



    sollte dann sowas werden:



    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    public void a()
    {
         int x = s.as();
         if(x >= 10)
         {
              v sd = v.kj("MD2withRSA", "SunRsaSign");
         }
    }


    Der ideale Fall wäre es, wenn man "MD2withRSA" und "SunRsaSign" auch nicht in Klartext sehen könnte. Ist so etwas möglich und wenn ja, wie?
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.502
    Hi

    Unter anderem das macht ein Obfuscator.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    ciD4r ciD4r ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    12
    Hi sheel,

    vielleicht habe ich mich nicht korrekt ausgedrückt. Ich benutze bereits ProGuard. Dadurch wird auch sehr viel obfuscated, allerdings nicht die Methodenvariablen. Im ganz Speziellen sind es denke ich die Java-spezifischen, also Strings, Integer, Signature etc. Das sollte eigentlich auch verschleiert werden. In den wichtigen Methoden werden allerdings gar keine Variablennamen verschleiert, auch nicht was es für ein Variablentyp ist. Das würde ich gerne ändern
     

  4. #4
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Dann solltest du dir einen besseren (d.h. korrekt funktionierenden) Obfuscator zulegen. Allerdings ist das Obfuscaten von Code nicht besonders sinnvoll, da man sowieso wieder an den Code ran kommt
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  5. #5
    ciD4r ciD4r ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    12
    Vielleicht hab ich ja die Einstellungen von ProGuard einfach nur noch nicht komplett korrekt. Ich weis aber momentan nicht, wie ich es einstellen soll, dass Javaklassen nicht gekeept werden.

    Was für einen Obfuscator würdest Du mir denn empfehlen? Er muss allerdings auch mit Android funktionieren. Und was würdest du dann machen, um den Code zu sichern?
     

  6. #6
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    schau dir doch mal den yGuard an. Mit dem habe ich selber auch schon ein paar mal gearbeitet. Funktioniert echt super. Die Deopfuscater-Programme haben danach kein leichtes Spiel mehr.
    Allerdings weiß ich nicht ob das auf für Android funktioniert. Würde mich allerdings wundern wenn nicht, da das schließlich auch nur Java-Code ist.

    Gruß

    Fabio
    ciD4r bedankt sich. 
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  7. #7
    ciD4r ciD4r ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    12
    Guten Morgen Fabio,

    dank dir schonmal. yGuard werd ich mir definitiv anschauen. Ich hätte allerdings noch eine Frage zu den Einstellungen. Ich habe eine View und die erstellt eine Variable vom Object Auto. Die View muss ich keepen, sonst wird sie gelöscht und meine App startet nicht. Durch dieses keepen wir automatisch auch die Klasse Auto gekeept, was wiederrum bedeutet, dass man sie fast komplet einsehen kann(mein oben schon beschriebenes Problem mit den Methodenvariablen). Ist es möglich die Klasse Auto vom löschen zu schützen, ohne, dass sie umbenannt wird(incl variablen)?
     

  8. #8
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Klar gibt es diese Möglichkeiten. Du kannst yGuard auch jede Methode einzeln nennen, die er nicht obfuscaten soll.

    In diesem Beispiel würdest du alle Klassen, Methoden und Fieldvariablen die protected oder public sind vor der Obfuscation ausschließen. Das kannst du variable einstellen. Auch für jede Klasse, Methode und Fieldvariable einzeln wenn du möchtest. Eine Tabelle dazu, bei welcher Sichtbarkeit diese von der Obfuscation ausgeschlossen werden findest du hier.
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <target depends="jar" name="yguard">
       <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask"
       classpath="yguard.jar"/>
       <!-- the following can be adjusted to your needs -->
       <yguard>
     
          <inoutpair in="${jar}" out="${obfjar}"/>
     
          <shrink logfile="${shrinklog}">
             <keep>
                <class classes="protected" methods="protected" fields="protected"></class>
             </keep>
          </shrink>
       </yguard>
    </target>
    Sieh dir am Besten mal die Beispiel auf der Homepage von yGuard an. Da wird dir dann bestimmt einiges klarer.
    ciD4r bedankt sich. 
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  9. #9
    ciD4r ciD4r ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    12
    Ok, vielen dank. Ich werde mich nächste Woche mit yGuard beschäftigen. Heute geb ich ProGuard noch ne Chance
     

  10. #10
    ciD4r ciD4r ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    12
    Hallo,

    falls es euch interessiert, schreib ich noch, wie die Sache jetzt ausging. Als ich bleibe bei ProGuard erstmal. Die localen Variablen in einigen methoden wurden obfuscated, allerdings hat der Dekompiler sie wieder ersetzt durch eigene Namen: local... z.B.. Ach und Standardbibliotheken wie java.security können nicht obfuscated werden!


    Nun versuch ich weiterhin meinen Code zu sichern. Habe diese Pdf gefunden und probier einmal mein Glück:

    http://users.rowan.edu/~tang/courses...Obfuscator.pdf
     

  11. #11
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Du solltest beim obfuscaten noch beachten, dass du nur deinen Code obfuscatest! Alle Libraries die in deinem Projekt eingebunden sind, müssen - außer es steht anders in den Lizenzen - kenntlich bleiben!

    Das nur als kleiner Tipp am Rande.

    Gruß

    Fabio
    ciD4r bedankt sich. 
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  12. #12
    ciD4r ciD4r ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    12
    Ja, danke, meine libs sind nicht obfuscatet. Meinst du, weil es sonst nicht funktioniert, oder weil es rechtlich vorbestimmt ist?
     

  13. #13
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Funktionieren tut das schon. Es geht hier wirklich nur ums rechtliche.
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  14. #14
    ciD4r ciD4r ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    12
    Dachte ich mir schon. Noch mal viiiiiiiielen Dank für die Hilfe************!!
     

  15. #15
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Keine Ursache. Kannst du das Thema dann noch als erledigt markieren, wenn keine weiteren Fragen bestehen? Danke
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 05.12.10, 11:29
  2. Was bedeuten @ und & vor Variablen und Methoden?
    Von Homer Simpson im Forum PHP
    Antworten: 2
    Letzter Beitrag: 27.06.08, 14:02
  3. Antworten: 2
    Letzter Beitrag: 16.01.08, 09:16
  4. Antworten: 9
    Letzter Beitrag: 13.04.04, 19:00
  5. [C#] Methoden + Variablen
    Von Badgott im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 15.10.02, 11:40

Stichworte