Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Αναμενω απαντηση απο def. Για .net υπαρχει και το de4dot που κανει deobfuscate σε βαθμο που ειναι κατανοητος ο κωδικας που θες με λιγη σκεψη.

  • Απαντ. 33
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

@sonyxp:

 

AFAIK, σε γενικές γραμμές συμφωνούμε. Ήδη άμα είναι striped-off τα symbols από το compiled binary, δυσκολεύει το πράγμα. Άμα είναι και optimized το compiled binary, τότε δυσκολεύει ακόμα περισσότερο. Κι αν είναι και obfuscated, τότε ζήσε Μάη μου να φας τριφύλλι.

 

Πάντως, πάντα afaik, ότι γίνεται γίνεται με disassemblers και όχι με decompilers. Σύν ότι συνήθως όσοι ασχολούνται προσπαθούν να "σπάσουν" κάτι (δλδ να προσθαφαιρέσουν/παρακάμψουν) και όχι να πάρουν readable source-code listing όλου του προγράμματος σε high-level language.

Δημοσ.

Λοιπόν, συμφωνώ στο ότι είναι σε .ΝΕΤ/Java (και μερικές άλλες που δεν γνωρίζω γιατί δεν έχω ασχοληθεί) ο κώδικάς σου είναι αρκετά ευάλωτος και διαφωνώ στο ότι το Obfuscation δεν κάνει δουλειά.

Πρώτον δεν είπα ότι το obfuscation δεν κάνει δουλειά (για την ακρίβεια δεν αναφέρθηκα καν). Αλλά (και αυτό θα είναι βασικός άξονας σε όλη την απάντηση), τα πάντα είναι σχετικά.

 

Λες λοιπόν και συ ότι το obfuscation κάνει δουλειά. ΟΚ δεν αντιλέγω. Αλλά:

  • Ποιά ακριβώς είναι η δουλειά που κάνει;
  • Πόσο καλά την κάνει;
  • Το αποτέλεσμα κατά πόσο έχει τις όποιες επιθυμητές ιδιότητες;
Θέλω να πω δηλαδή ότι και το να βάλεις π.χ. protection με dongle (HASP) κι αυτό σαφώς "κάνει δουλειά". Αλλά όπως και το obfuscation, δεν το χρησιμοποιεί όλος ο πλανήτης οπότε αν είναι να το βάλουμε στην κουβέντα προφανώς πρέπει να γίνει κάποιου είδους ανάλυση, ζύγισμα υπερ/κατά κλπ.

 

Η γενική μου θέση λοιπόν είναι ότι αν κάνεις τέτοιο ζύγισμα στο σενάριο "τα λέμε χαλαρά στο insomnia" ρεαλιστικά δεν πρόκειται να καταλήξεις ότι αξίζει. Αλλά επειδή δε γίνεται να κάνω τρία σεντόνια ανάλυση κάθε φορά που απαντάω σε κάτι (ειδικά όταν όπως εδώ κάνει μπαμ ότι μιλάμε σε ψιλοκαφενειακό επίπεδο) τα λέω πολύ συμπυκνωμένα. Κράτα το κι αυτό υπόψη παρακάτω.

 

Να σε ρωτήσω κάτι, Μήπως εννοείς τον κώδικα Assembly? που ναι! είναι φόρα παρτίδα ακόμα και σε προγράμματα C/C++/ASM.

Αν εννοείς αυτό τότε δεν χρειάζεται να το συζητάμε γιατί δεν έχει βρεθεί ακόμα το μυαλό που μπορεί να μετατρέψει κώδικα Assembly σε κατανοητό κώδικα για τον άνθρωπο, και ότι τυχών εργαλεία υπάρχουν που "προβλέπουν" τον κώδικα είναι του κώλου και δεν πλησιάζουν ούτε στο ελάχιστο το πρόγραμμα!.

Αυτό εννοώ βέβαια. Αλλά αυτό με το μυαλό που λες μη το δένεις και κόμπο, έχω δει έμπειρο reverse engineer να ξεπετάει την assembly και να ανακαλύπτει τη δομή (τμήματος) του προγράμματος τόσο γρήγορα που εμένα μου φαινόταν ότι κάνει μαγικά. Τα πάντα είναι σχετικά.

 

Όσον αφορά τα Cracks, απλά επεμβαίνεις στον Assembly κώδικα... ε! με το να παρακάμπτεις μερικά JUMPS δεν έγινε και κάτι... δεν έβγαλες τον πηγαίο κώδικα (να τον μάθει μια ανταγωνιστική εταιρεία)

Κάνε ένα βήμα πίσω. Έχουμε γενική κουβέντα καφενείου που λέω παραπάνω. "OMG στη VB βλέπουν τον κώδικά μου ΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ".

 

Ναι βλέπουν τον κώδικά σου. So fucking what?

 

Στη συντριπτική πλειοψηφία των περιπτώσεων ο κώδικάς σου (εσύ = άκυρος τύπος στο insomnia) δεν έχει αρκετή αξία για κάποιον τρίτο ούτε για να τον βάλει μέσα σε .NET decompiler, πόσο μάλλον για να κάτσει ν' ασχοληθεί έστω και να να βάλει ένα απλό jump ή να αλλάξει ξερωγώ ένα JE σε JNE. Και για να αποδομήσει το binary να βγάλει τον custom αλγόριθμο, ε αυτά δεν είναι ούτε σενάρια sci fi.

 

Αν τώρα π.χ. εσύ = Lockheed Martin, η αξία του κώδικά σου για κάποιους αυξάνεται σε αστρονομικά επίπεδα. Αλλά αντίστοιχα αυξάνονται οι πόροι και η ικανότητα αυτών που θα τον κάνουν φύλλο και φτερό. Έλα κοίτα με στα μάτια και πες μου ότι αν δώσεις κώδικα της LM στους κινέζους θα κολλήσει το reverse engineering επειδή έχουν μόνο assembly στα χέρια τους για να δουλέψουν.

 

Τα πάντα είναι λοιπόν σχετικά. Ναι, αν κάνεις ένα χαλαρό obfuscation τότε ο Σούλης ο γείτονας δε θα καταλάβει τον κώδικά σου. Κι αν τον κάνεις compile σε native τότε δε θα τον καταλάβω ούτε εγώ. So? Τι κώδικας είναι αυτός που έγραψες και θα είχες πρόβλημα αν τον δει ο Σούλης ή εγώ; Ρητορική ερώτηση.

 

Αλλά εσύ μιλας και για εταιρίες και πολύτιμους secret αλγόριθμους και τέτοια. Κοινώς δηλαδή, ρωτάει κάποιος "να βάλω μονή ή διπλή κλειδαριά στο σπίτι", εγώ απαντάω "κλάιν μάιν όποιος έχει όρεξη να μπει στο σπίτι σου θα μπει έτσι κι αλλιώς δε βλέπω για ποιό λόγο ασχολείσαι" και μετά έρχεσαι εσύ και με κράζεις επειδή η θέση μου είναι αστεία αν τη δεις στα πλαίσια π.χ. μιας τράπεζας. Sure. Αλλά δε μιλούσα για τράπεζες, και επιπλέον όταν μιλάμε για τράπεζες ή μυστικές υπηρεσίες η θέση "βάλε διπλή (ή και τριπλή) κλειδαριά" είναι επίσης αστεία γιατί αυτός που ενδιαφέρεται να μπει μέσα δε θα εμποδιστεί από κανέναν αριθμό κλειδαριών (θα πρέπει να λάβεις κι άλλα μέτρα, π.χ. όσον αφορά το software να φροντίσεις να μην πέσει ποτέ ούτε το binary στα χέρια του).

 

PS: Μη με παρεξηγήσεις!, αυτή επιθετικότητα δεν είναι προς εσένα! απλά έχω προσωπικό πρόβλημα που ισοπεδώνονται όλα (τουλάχιστον αυτό νομίζουν), ο κώδικάς σου μπορεί να προστατευτεί μια χαρά! το ότι μπορεί να υπάρχει DeObfuscation για κάποιο -αποτυχημένο- Obfuscation Tool δεν λέει πολλά!

No worries, ποτέ δεν παίρνω αντίλογο στις απόψεις μου προσωπικά. Στην προκειμένη νομίζω ότι εξέλαβες λάθος τα πολύ περιληπτικά λεγόμενά μου: το obfuscation κλπ όπως λες παίζει ρόλο. Αλλά όχι παντού και πάντα, και όχι στις περιπτώσεις για τις οποίες (νομίζω πως) μιλούσαμε εδώ.

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...