Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

Îåêßíçóå áðü ôï ìÝëïò tsomos. Τελευταία δημοσίευση από το μέλος RedHat στις 27-11-2008, 15:17. Υπάρχουν 15 απαντήσεις.
Σελίδα 1 από 2 (16 εγγραφές)   1 2 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-06-2008, 12:37 43053

    Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Για χαρα σε ολους, νεος εδω...

    Σχετικα με τα obfuscators, καλα ενταξει, κανουν καπως δυσκολη τη ζωη καποιου που θελει να κανει reverse engineering. Αυτο είναι αλήθεια, αλλά πως θα μπορούσαμε να κάνουμε το ίδιο σε επίπεδο κωδικα;
    Εξηγω. Λογικα σε μια εφαρμογη υπαρχει το login και το password και 1 μηχανισμος που βλεπει αν ολα ειναι σωστα. Τι θα μπορουσα να κανω εκτος απο obfuscator(αυτο ειναι ετσι και αλλιως απαραιτητο) ετσι εστε να κανω τη ζωη αυτου πιο δυσκολη;

    πχ,
    1. θα μπρορουσα πριν απο το μηχανισμο ελεγχου, να βαλω καμια 500 γραμμουλες με προσθεσεις, αφαιρεσεις, και διαφορα αλλα χαζα, που απλα θα κανουν υπολογισμους χωρις νοημα μονο και μονο για να δυσκολεψω αυτον που θελει να το σπασει(μιας και θα ειναι ηδη obfuscated); θα ειχε λογικη η τσαμπα την επιβαρυνση;
    2. θα ειχε νοημα και κανω καμια 3-4 dlls που και αυτα δεν θα εχουν νοημα(προσθεσει - αφαιρεσεις) αλλα θα καλουνται πριν το μηχανισμο ελεγχου ετσι για να τον αποκαρδιωσω και να απογοητευτει πιο γρηγορα;

    Εχει κανεις καμια ιδεα;
    Ο σκοπος ειναι να τον μπερδεψω και να τα παρει στο κρανιο και να πει, αχ...φτανει , βαρεθηκα.....
    Και ολα αυτα πριν φτασει στον μηχανισμο ελεγχου, γιατι αμα φτασει εκει...χμ...καλα βεβαια υπαρχουν και hashes και αλλα, ομως τι κολπο ειναι να αγανακτησει πριν φτασει εκει.
    Φυσικα καποιος 'επαγγελματιας' του ειδους ΔΕΝ θα απογοητευτει ευκολα, αλλα τουλαχιστον κατι αλλοι, να φυγουν...

    Ακουω ιδεες/προτασεις με αγωνια...
    ΥΓ: Μιλαω παντα σε επιπεδο κωδικα, και οχι σε καποιο εξωτερικο εργαλειο οπως το obfuscator
  •  25-06-2008, 13:08 43056 σε απάντηση της 43053

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Όχι, είναι τελειώς useless, γιατί πολύ απλά ακόμα και ο obfuscated κώδικας, γίνεται "κανονικός" IL κώδικας για να τρέξει απο τον JIT, το οποίο σημαίνει ότι κάνοντας σχετικά απλά ένα memory dump στον JIT μπορείς να πάρεις το IL κομμάτι που πραγματικά χρειάζεσαι και να βρεις αυτό που θές. Γενικά το Obfuscation κάνει δυσκολότερη την ανάγνωση κώδικα, δεν την αποκλείει τελείως. Ακόμα και memory dump να μην κάνει, μπορεί διαβάσει τον κώδικα αλλά αντί πχ να είναι σε μορφή:

    MyClass.Login("Username","Password");

    Θα είναι:

    xFad232.Dghkiol2("Username","Password");


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  25-06-2008, 13:12 43057 σε απάντηση της 43056

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Όχι, είναι τελειώς useless


    Οκ το καταλαβα..
    Κατι που ισως ΔΕΝ ηταν useless;;;;;;;Big Smile
  •  25-06-2008, 13:45 43059 σε απάντηση της 43056

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Για την ακρίβεια, θα είναι

    xFad232.Dghkiol2(QWFq34faf,WErw4weTWEF#R$Q);

    Όπως και να έχει, χωρίς να ξέρουμε για τι είδους εφαρμογή μιλάμε, μπορούμε μόνο να λέμε γενικότητες. Επίσης, το reverse engineering δεν έχει να κάνει απαραίτητα με το login και τα passwords. Για παράδειγμα, μπορεί κάποιος να θέλει να κάνει reverse engineering ώστε να "κλέψει" έναν κομμάτι κώδικα και να το ενσωματώσει στην εφαρμογή του. Άλλο πράγμα να θες να προστατέψεις την λογική του security που εδώ που τα λέμε, αν βασίζεσαι στο ότι ο κώδικά σου είναι κρυφός, δεν είναι και τόσο καλή λογική security.


    Vir prudens non contra ventum mingit
  •  25-06-2008, 14:04 43060 σε απάντηση της 43059

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Μπα το να κλεψει κομματι κωδικα δεν ειναι το θεμα, ας το κλεψει. Δε μιλαμε για τον σουπερ αλγοριθμο η καποια πατεντα ας πουμε. Μιλαμε για προστασια Username και Password και πχ, αριθμο αδειων χρησης(πχ 3 αδειες) που πανε σε μια database.

    Με ποιον τροπο θα ηταν ποιο επιπονο για καποιον να το 'σπασει';

  •  25-06-2008, 14:17 43061 σε απάντηση της 43060

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Η να το θεσω λιγο διαφορετικα το θεμα. Ειναι καλυτερο να γινεται ο μηχανισμος ελεγχου σε μια συναρτηση με παραμετρους ή σε μια διαδικασια που δεν εχει παραμετρους; Που θα παει λογικα πρωτα να κοιτάξει;
    Η καλυτερα να γινεται ο μηχανισμος ελεγχου σε μια φορμα μικρη(με λιγες συναρτησεις και διαδικασιες) ή σε μια φορμα με καμια 100 συναρτησεις και αλλες 100 διαδικασιες; Η δεν παιζει ρολο αυτο;

    Αν καποιος εχει ασχοληθει με το να 'σπασει' καποια προστασια ή έναν κωδικο, ας μας πει τι ειναι αυτο που του κανει τι ζωη ποιο δυσκολη; Ο σκοπος ειναι να τον δυσκολεψεις μπας και τον αποτρεψεις....




  •  25-06-2008, 16:05 43064 σε απάντηση της 43061

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Το θέμα δεν είναι να κρύψεις τον κώδικά σου ανάμεσα σε άλλον άχρηστο κώδικα. Προσωπικά, δεν θα το έκανα ποτέ καθώς θα μου έκανε το debugging μαρτύριο και αν μετά από καιρό θα ήθελα να κάνω revisit τον κώδικα για κάποιο πιθανό upgrade, θα ήταν πάλι εξαιρετικά δύσκολο και αντιπαραγωγικό. Το θέμα είναι να μην αποθηκεύεις τα ευαίσθητα δεδομένα (passwords, license keys, κλπ) σε σημεία που μπορούν να ανακτηθούν. Αν φροντίσεις αυτό, σε συνδυασμό με ένα signed assembly και obfuscation, έχεις μια πολύ καλή πρώτη γραμμή άμυνας που είναι φθηνή και εύκολα υλοποιήσιμη. Πιστεύω ότι μια τέτοια υλοποίηση μπορεί να αντισταθεί πολύ περισσότερο απέναντι σε έναν επίδοξο cracker παρά η τεχνική που αναφέρεις. Από εκεί και πέρα, αν θες ακόμη μεγαλύτερη προστασία, εξετάζεις μια λύση hasp ή/και μια εμπορική λύση licensing.


    Vir prudens non contra ventum mingit
  •  25-06-2008, 16:28 43066 σε απάντηση της 43064

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    KelMan:

    Το θέμα είναι να μην αποθηκεύεις τα ευαίσθητα δεδομένα (passwords, license keys, κλπ) σε σημεία που μπορούν να ανακτηθούν



    Δηλαδή, εσυ τι θα εκανες για αυτο; Που και πως θα τα εκρυβες ; Καμια καλη ιδεα;

    Ευχαριστω για το ενδιαφερον σουSmile

  •  25-06-2008, 16:42 43067 σε απάντηση της 43066

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Ρίξε μια ματιά εδώ:

    http://msdn.microsoft.com/en-us/library/ms998378.aspx#pagquestionlist0002_sensitivedata

    Edit: Μάλλον σε ενδιαφέρει το κομμάτι "Sensitive Data" (κανονικά θα έπρεπε να σε πετάει εκεί το link αλλά δεν συμβαίνει)


    Vir prudens non contra ventum mingit
  •  25-06-2008, 17:01 43070 σε απάντηση της 43067

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Δε λεει κατι συγκεκριμενο. Απλα λεει τι να μην κανεις, οπως αφησεις κωδικους στο registry, να καθαρισεις τη μνημη μετα το περας του ελεγχου, γενικα να κανεις cryptography. Καλο το αρθρο αλλα γενικο.

    Ας πουμε οτι εχω τον κωδικο '123456789'. Καλα, τον κανω hash. Και μετα τι; Που να τον 'κρυψω' ;  Στο registry; στη ΒΔ; σε ενα αρχειο τοπικα;

    Επισης, υπαρχει καποια γνωστη 'τακτικη' σε επιπεδο κωδικα που να δυσκολευει καποιον 'επιδοξο' στο να καταλαβει τι κανω; (εκτος απο obfuscator). Αν υπαρχει την τροποποιω εν μερη και ειμαι οκ...

    Τωρα αν ψαχνω ψιλους στα αχυρα..δεν ξερω να σου πω την αληθεια, γιατι δεν εχω ασχοληθει με reverse enginerring καθολου.
    Αν ειχα ασχοληθει θα ηξερα τι μου φτιαχνει τα πραγματα δυσκολα!Stick out tongue
  •  25-06-2008, 17:37 43072 σε απάντηση της 43070

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Μάλλον το διάβασες λίγο βιαστικά... Στην ενότητα "Sensitive Data" λέει (και παραπέμπει σε περαιτέρω πληροφορίες) για το πώς να αποθηκεύσεις sensitive data χρησιμοποιώντας το DPAPI. Λέει ότι πρέπει να φροντίσεις να κρυπτογραφίσεις τα δεδομένα πριν τα αποθηκεύσεις. Παρακάτω λέει ότι οι προτεινόμενες τοποθεσίες είναι το Active Directory ή η database. Με το αγαπημένο σου search engine, αν βάλεις "DPAPI Encrypt Decrypt" θα βρεις αρκετά δείγματα κώδικα.


    Vir prudens non contra ventum mingit
  •  25-06-2008, 19:45 43073 σε απάντηση της 43072

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Σε ευχαριστω για τις απαντησεις σου, αλλα ισως να μην το εθεσα τοσο καλα το ερωτημα. Το τι λεει το αρθρο, το διαβασα και πριν. Δε λεω ΠΩΣ να κανω κρυπτογραφηση; ειναι γνωστοι ετοιμοι αλγοριθμοι, με λιγο αλλαγη στο salt ολα οκ.

    Η ερωτηση ηταν που να αποθηκευσω τον κωδικο(καλα οκ, το αρθρο λεει στη ΒΔ) και πως να κανω τη ζωη του επιδοξου που θελει να δει τι κανω, πιο δυσκολη.
    Εξηγω: αν πω variable="kalimera" ειναι πιο ευκολο απο το να πω variable="ka", valiable+="lime", variable+="ra"
    επισης αν πω for i=0 to 10 ειναι πιο ευκολο απο το for i=0 to 20 step -2 διοτι τα πραγματα περιπλεκονται.

    Αν βαλω ονομα μεταβλητης πολυ μεγαλο(πχ 50 χαρακτηρες) εχει διαφορα ή οχι;
    Τελος παντων, για να μη σας κουραζω, αν παρω καποια ικανοποιητικη απαντηση, εχει καλως, αν παλι οχι, ε και τοτε παλι εχει καλως....
    ευχαριστω οπως και να εχει...


  •  10-11-2008, 17:05 46133 σε απάντηση της 43073

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    Κατ' αρχάς να ζητήσω συγγνώμη για την λίγο... "ετεροχρονισμένη" απάντηση σε ένα σχετικά παλιό post... αλλά πιστεύω οτι το θέμα είναι αρκετα ενδιαφέρον και (ίσως)  απασχολεί αρκετούς φίλους. Ήδη αισθάνομαι άσχημα που χρησιμοποίησα στην προηγούμενη πρόταση μου την λέξη "ίσως", αλλά ίσως! δεν έχω πολύ άδικο: Το section αυτό (για code security) κατά την ταπεινή μου αποψη είναι ή θα έπρεπε να ανήκει στην ομάδα με την μεγάλη επισκεψιμότητα και με την μεγαλύτερη συχνότητα σε απαντήσεις... Δηστυχώς όμως δεν είναι έτσι... Sad
    Και αυτό κάτι σημαίνει... τεσπα...

    Τέρμα οι γκρίνιες.... ας έρθουμε λίγο στο "ψητό".

    Υπάρχουν πολλοί τρόποι και πολλές τεχνικές να κάνεις το πρόγραμμα σου δύσκολο στο κάθε επίδοξο cracker.  Ο τίτλος του post σου είναι "Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;" που κατά την γνώμη μου  είναι πολύ σωστός. Διότι, έναν καλό cracker που έχει και τα κατάλληλα εργαλεία, μπορείς μόνο να τον δυσκολέψεις.

    Όπως πολύ σωστά ανέφεραν και οι υπόλοιποι φίλοι, το "μπέρδεμα" ή το... "θόλωμα" του κώδικα είναι κάτι,... δεν είναι όμως το παν. Είναι απλά ένα κομμάτι του παζλ που λέγεται anti-cracking.
    Υπάρουν όμως κι άλλα κομμάτια (μπορεί) πιο σημαντικά.
    Αυτά είναι:
    1. Τεχνικές antidebugging: Μια πραγματικά πολύ αξιόλογη αναφορά βρίσκεται εδώ: http://www.securityfocus.com/infocus/1893. Θα μπορούσα να σου αναφέρω κι άλλα παραδείγματα αλλά διαβάζοντας και κατανοόντας το παραπάνω κείμενο νομίζω είναι μια καλή αρχή για να μπείς στο κλίμα. Το να σε φορτώσω με περισσότερα infos απλά θα χάναμε τον στόχο...

    2. Τεχνικές self-encryption. Ίσως έχεις διαβάσει για τους λεγόμενους πολυμορφικούς ιούς που έχουν την ικνανότητα να πολλαπλασιάζονται κρύβοντας κάθε φορά τον εαυτό τους μέσα στον εαυτό τους!! με μια διαφορετική μορφή κωδικοποίησης. Μπορείς (με την ίδια λογική) να κάνεις encrypt το πρόγραμμα σου ή κομμάτια αυτού και να τα κάνεις decrypt run-time κατά βούληση και κατ' απαίτηση. Το θέμα αυτό είναι πραγματικά δύσκολο αλλά και προκλητικό μαζί. Για μια καλή αρχή, μπορείς να ρίξεις μια ματιά εδώ: http://tinyurl.com/6jju36 .

    3. Τεχνικες Packing και Unpacking του εκτελέσιμου: Εδώ υπάρχει πολύ "πράμα"... Θα πρότινα όμως να μην χρησιμοποιήσεις κάποιο γνωστό packer μιας και οι περισσότεροι υποψήφιοι crackers το πρώτο πράμα που κάνουνε όταν αποφασίσουνε να ασχοληθούνε με το "άθλημα", είναι να κατεβάσουμε όλους τους un-packers... του "εμπορίου"... (http://www.exetools.com/unpackers.htm).

    4. Code hiding... Εδώ έρχεται η πρόταση σου για το που θα κρύψεις το password. Κατ' αρχάς μπορείς να το κρυπτογραφίσεις με DES με MD5 με BLOWFISH... με ότι θέλεις... Μετά θα έρθει η ώρα να το κρύψεις...
    Χμ... πού όμως??
    Απ' οτι είδα... έχουνε πέσει αρκτές ιδέες... π.χ. στο registry, μέσα σε ένα άλλο αρχείο... σε μια DLL...κλπ κλπ...
    Να προτείνω κάτι?
    Έχεις σκεφτεί να κρύψεις μέσα στο ίδιο σου το executable αλλά στο run time... και μάλιστα κάθε φορά που καλείτε το πρόγραμμα σου, να του αλλάζεις και.... θέση!!
    Δεν μποορώ να σου δώσω περισσότερες λεπτομέρειςα επάνω σε αυτό... απλά ψάξε για να λεγόμενα "code caves" μέσα στον κώδικα ενός ececutable. Εν ανάγκη δημιούργησε μόνος σου πολλά τέτοια και "παίξε" με αυτά.... Stick out tongue...
    Το πιασες το υπονοούμενο .... ε?.. αν όχι "googled" 4 a while... Geeked

    Το σημαντικό είναι να μην χρησιμοποιείς μόνο ΜΙΑ μέθοδο ή τεχνική anticracking, πράγμα που κάνουνε τα περισσότερα εμπορικά προγράμματα προστασίας. Εφόσων ο cracker βρει το αδύνατο σημείο σου... είσαι off. Να χρησιμοποιείς πολλές τεχνικές αντι-cracking και εάν είναι δυνατόν αυτές να αλλάζουνε κάθε φορά (βλέπε polymorphic)... Τότε κάνεις τη ζωή του cracker (εκεί που λέει "Σ ΕΣΠΑΣΑ") πραγματικό εφιάλτη!!!


    Happy anti-cracking...












    Nothing to declare...
  •  24-11-2008, 10:06 46432 σε απάντηση της 46133

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    διαβάζωντας το τελευταίο post με ενδιαφέρον. Ασχολούμαι τον τελευταίο καιρό με τέτοια θέματα στην εταιρεία που εργάζομαι. Θα ήθελα λίγο να μάθω περί του θέματος code caves γιατί πραγματικά δεν το είχα ξαναακούσει. Επίσης δεν βρίσκω κάποιο θέμα στο google σχετικό. Μήπως θα μπορούσε κάποιος να αναφέρει κάποια πράγματα που γνωρίζει για αυτό, ένα παράδειγμά ή πηγές που μπορούμε να βρούμε για αυτό το θέμα?
    Ευχαριστώ

    Peter Bournakas
  •  25-11-2008, 14:30 46463 σε απάντηση της 46432

    Απ: Πως να δυσκολεψω(σε επιεπδο κωδικα) καποιον που θελει να κανει reverse engineering;

    RedHat:
    διαβάζωντας το τελευταίο post με ενδιαφέρον. Ασχολούμαι τον τελευταίο καιρό με τέτοια θέματα στην εταιρεία που εργάζομαι. Θα ήθελα λίγο να μάθω περί του θέματος code caves γιατί πραγματικά δεν το είχα ξαναακούσει. Επίσης δεν βρίσκω κάποιο θέμα στο google σχετικό. Μήπως θα μπορούσε κάποιος να αναφέρει κάποια πράγματα που γνωρίζει για αυτό, ένα παράδειγμά ή πηγές που μπορούμε να βρούμε για αυτό το θέμα?
    Ευχαριστώ


    Ελπίζω να σε βοηθήσει το παρακάτω:
    http://s3cure.gr/blogweb/index.php?/archives/1-unknown.html

    Edited... some new one to start with:
    http://www.codeproject.com/KB/cpp/codecave.aspx



    Nothing to declare...
Σελίδα 1 από 2 (16 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems