Frage

Im macht eine Anwendung in Kakao und wollte, wenn einige Strings darin sehen waren leicht zugänglich, damit ich OTX lief auf sie und leider all meinem Code gefunden wurde. Gibt es eine Methode, die ich verwenden kann meinen Code mehr „sicher“ oder zumindest Verschlüsselungs- / verstecken die Saiten zu machen? Der Grund, warum ich die Zeichenfolge verschlüsseln will, ist es ein Passwort für einen Server ist. Ich don'd es sicher brauchen wirklich, dass ich einfach nicht das Passwort wollen so einfach zu finden.

Vielen Dank für jede Hilfe

War es hilfreich?

Lösung

1. Vermeiden Sie ObjC in sicherem Code.

Da ObjC Klasse System stark auf Laufzeit Reflexion abhängt, muss die gesamte Oberfläche neben der ausführbaren Datei enthalten sein. Dies ermöglicht es Tools wie class-dump leicht die Quelle @interface des binären zu erholen.

Daher sind die sicheren Code Funktionen sollten als C-Funktion geschrieben werden, nicht ein ObjC Verfahren.

2. Verwenden strip.

Standardmäßig wird der Compiler alle privaten Symbole halten (die Stack-Trace ermöglicht besser lesbar zu sein). Sie können strip verwenden, um all diese Symbole zu löschen.

3. Obfuscation.

Die oben genannten Schritte können nur die Codelogik verbergen. Aber wenn das Passwort ein konstanter String ist, ist es sofort sichtbar die strings Dienstprogramm. Sie können dies verschleiern, indem das Passwort in Runtime Konstruktion (zum Beispiel das Passwort in ROT-13 codiert speichern in der Datei.)

4. Oder einfach nur Ihr Design ändern.

Egal wie gut Ihr Schutzsystem ist, wie der Hacker auf ihrer Maschine die totale Kontrolle haben, genügend Zeit gegeben, sie gewinnen immer. Es ist besser, Ihr Design zu überarbeiten, wie, warum das Passwort mit der ausführbaren Datei kommen muß? Oder warum ein globales Passwort sogar notwendig?

Andere Tipps

Sie sollten nie ein Passwort in ein ausführbares setzen.

Das ist wie das Passwort auf einem Notizzettel setzen neben dem Monitor. Wenn ein böswilliger Hacker Ihre Anwendung hat, kann sie schließlich das Passwort extrahieren, unabhängig davon, welche Sprache oder API Sie es schreiben verwenden.

Zum Beispiel, wenn ich weiß, dass Ihre Anwendung eine Verbindung zu einem Passwort geschützten Server aber die Anwendung nie nach einem Passwort fragen, dann ich weiß, Sie haben den Fehler, einschließlich des Passworts gemacht. Um das Passwort zu finden, muss ich nur die Bedienung des Programms zu überwachen, um zu sehen, welche Bereiche des Codes sind aktiv um die Zeit, die mit dem Server verbindet. Das wird mir sagen, wo die Suche nach dem Passwort zu konzentrieren, unabhängig davon, wie groß Ihre Anwendung ist. Dann ist es nur eine Frage der Zeit, bis ich das Passwort nach unten verfolgen. das Passwort verschlüsseln ist nicht gut, weil der Verschlüsselungsalgorithmus auch in der App sein muss, und ich kann das auch entwirren.

Denken Sie daran, dass es viele Leute da draußen, die Ihren Code nur den rohen Maschinencode verwendet entwirren können. Für jene Leute, spielt es keine Rolle, welche Sprache oder API Sie, weil sie verwenden, um alle destillieren zu Maschinencode am Ende. Jene Leute, die unheimlich Mann Götter der Programmierung sind, und sie lachen Sterblichen wie Sie oder Leider I., einige von ihnen sind böse.

Habe ich erwähnt, dass Sie sollten nie ein Passwort in ein ausführbares setzen? Wenn ich es nicht tat, lassen Sie mich wiederholen, dass Sie sollten nie ein Passwort in ein ausführbares setzen.

In Ihrem speziellen Fall, um als Anfänger Programmierer, haben Sie keine Hoffnung Versteck des Passworts von jemandem mit noch ein wenig, als sich mehr Erfahrung biss. Dies ist ein weiterer guter Grund, warum sollten Sie nie ein Passwort in ein ausführbares setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top