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

 

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

Εκτελεση Κωδικα Assembly

Îåêßíçóå áðü ôï ìÝëïò ntaryl. Τελευταία δημοσίευση από το μέλος Mitsaras στις 08-08-2007, 00:25. Υπάρχουν 13 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-08-2007, 00:37 34133

    Εκτελεση Κωδικα Assembly

    Καλησπερα  παιδια 

    Μετα απο  πολυ καιρο ηρθα να πω  μια καλησπερα  και να ρωτησω  κατι  .Φτιαχνοντας μια εφαρμογη μου ηρθε η σκεψη πως  θα μπορεσω μεσα απο αυτην  να ανιχνευω αν υπαρχει καποιος Debugger και  αν ναι  παραγματι τοτε  η εφαρμογη να κλεινει  .

    Ψαχνοντας βρηκα αυτο το link που εχει  παρακατω στο οποιο ο κωδικας ειναι assembly .Ειναι Εφικτο να εκτελεστει  αυτη η ρουτινα  και  αν  ναι  πως  καποιο  παραδειγμα 

    Ευχαριστω πολυ  και  καλο  βραδυ 

    Υ.γ ..Καλο  καλοκαιρι  και  καλα  να περασετε στις διακοπες σας 

     


    Rookie learn to fly U are my Inspiration...
    Who said Multithreading is impossible
    Try it First and after Deside if is Possible
  •  06-08-2007, 08:33 34134 σε απάντηση της 34133

    Απ: Εκτελεση Κωδικα Assembly

    δεν γνωρίζω την απάντηση... αλλά δώσε και το link που λες, μήπως και βοηθήσει κάποιος άλλος!

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  06-08-2007, 11:18 34142 σε απάντηση της 34133

    Απ: Εκτελεση Κωδικα Assembly

    Για να μην μπορεί να γίνει debug μια εφαρμογή, πρέπει να κάνει hook συγκεκριμένα API του Kernel των Windows. Αυτό σημαίνει ότι θα πρέπει να γραφτεί πολύ Low level κώδικας. Ο κώδικας που βρήκες σε assembly, λογικά, καλύπτει ένα μικρό ποσοστό τον API που μπορούν να κάνουν "attach" πάνω σε μια εφαρμογή κάτι άλλο ώστε να παρακολουθείτε. Debuggers σαν τον Olly ή τον IDA θα μπορούν κατα 99% να κάνουν ακόμα attach και debug καθώς έχουν άπειρες τεχνικές και εναλλακτικές λύσεις, όσο εσύ τους "κλείνεις πόρτες" απο τις κλασικές μεθόδους του. Όποτε δεν ξέρω εάν αξίζει ο κόπος να κάνει κάτι τέτοιο.
    Παναγιώτης Κεφαλίδης

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

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  06-08-2007, 15:09 34155 σε απάντηση της 34142

    Απ: Εκτελεση Κωδικα Assembly

    Panagiotis Kefalidis:
    Για να μην μπορεί να γίνει debug μια εφαρμογή, πρέπει να κάνει hook συγκεκριμένα API του Kernel των Windows. Αυτό σημαίνει ότι θα πρέπει να γραφτεί πολύ Low level κώδικας. Ο κώδικας που βρήκες σε assembly, λογικά, καλύπτει ένα μικρό ποσοστό τον API που μπορούν να κάνουν "attach" πάνω σε μια εφαρμογή κάτι άλλο ώστε να παρακολουθείτε. Debuggers σαν τον Olly ή τον IDA θα μπορούν κατα 99% να κάνουν ακόμα attach και debug καθώς έχουν άπειρες τεχνικές και εναλλακτικές λύσεις, όσο εσύ τους "κλείνεις πόρτες" απο τις κλασικές μεθόδους του. Όποτε δεν ξέρω εάν αξίζει ο κόπος να κάνει κάτι τέτοιο.



    Μα τι λέμε τώρα..? Σοβαρολογούμε ..? Δεν πρέπει να κλειδώνουμε τις εφαρμογές μας επειδή υπάρχει ένα τρόπος να τις ξεκλειδώσεις..?  Τότε γιατί δεν αφήνει ο Βασιλάκης τα Windows ανοικτά τελείως ..?

    Βασικά υπάρχει μια λάθος προσέγγιση για μένα στο θέμα.... Το να τον παιδέψεις τον άλλον στο να ξεκλειδώσει το προγραμμά σου είναι θεμιτό ..αλλά δεν θα ήταν καλύτερο να τον αποτρέψεις στο να ασχοληθεί με το να ξεκλειδώσει το προγραμμά σου..? Κάνοντας τον να πιστεύε ότι το προγραμμά σου κάνει άλλο από αυτό που διαβάζει με την παρακολούθηηση ..? Καταλαβαίνεις τι λέω..?Super Angry
  •  06-08-2007, 15:31 34157 σε απάντηση της 34155

    Απ: Εκτελεση Κωδικα Assembly

    Vader:
    Μα τι λέμε τώρα..? Σοβαρολογούμε ..? Δεν πρέπει να κλειδώνουμε τις εφαρμογές μας επειδή υπάρχει ένα τρόπος να τις ξεκλειδώσεις..?  Τότε γιατί δεν αφήνει ο Βασιλάκης τα Windows ανοικτά τελείως ..?

    Βασικά υπάρχει μια λάθος προσέγγιση για μένα στο θέμα.... Το να τον παιδέψεις τον άλλον στο να ξεκλειδώσει το προγραμμά σου είναι θεμιτό ..αλλά δεν θα ήταν καλύτερο να τον αποτρέψεις στο να ασχοληθεί με το να ξεκλειδώσει το προγραμμά σου..? Κάνοντας τον να πιστεύε ότι το προγραμμά σου κάνει άλλο από αυτό που διαβάζει με την παρακολούθηηση ..? Καταλαβαίνεις τι λέω..?Super Angry

    Ατυχείς συγκρίσεις, ατυχή και τα συμπεράσματα...

    Έχω την εντύπωση, ότι δεν έχεις καθόλου εμπειρία από enterprise περιβάλλοντα ανάπτυξεις εφαρμογών. Είσαι καθαρά με μια νοοτροπία ενός νέου(?!) προγραμματιστή που μόλις έχει φτιάξει την πρώτη του ολοκληρωμένη εφαρμογή και πιστεύει ότι όλη η τεχνολογία είναι μέσα σε αυτή - αν του κλέψουνε τον κώδικα θα του πάρουν και όλη την σοφία. Δεν μπορώ να συνδέσω πως έχεις καταλήξει σε αυτές τις απόψεις ενώ παράλληλα είναι υποστηριχτής του Open Source.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  06-08-2007, 15:43 34158 σε απάντηση της 34133

    Απ: Εκτελεση Κωδικα Assembly

    Εδώ είναι η σελίδα που αναφέρεται ο Ntaryl: http://www.honeynet.org/papers/bots/botnet-code.html

    Νομίζω ότι η πρόταση που σου έγινε στο Insomia, να καλείς το IsDebuggerPresent, είναι ένα minimun μέτρο που όμως είναι αρκετό. Όπως αναφέρθηκε και ο Παναγιώτης παραπάνω, ίσως είναι μάταιο να προσπαθείς να γράψεις κώδικα ώστε να σταματήσεις κάθε πιθανό τρόπο να γίνει debug η εφαρμογή σου.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  06-08-2007, 17:26 34159 σε απάντηση της 34157

    Απ: Εκτελεση Κωδικα Assembly

    George J. Capnias:

    Vader:
    Μα τι λέμε τώρα..? Σοβαρολογούμε ..? Δεν πρέπει να κλειδώνουμε τις εφαρμογές μας επειδή υπάρχει ένα τρόπος να τις ξεκλειδώσεις..?  Τότε γιατί δεν αφήνει ο Βασιλάκης τα Windows ανοικτά τελείως ..?

    Βασικά υπάρχει μια λάθος προσέγγιση για μένα στο θέμα.... Το να τον παιδέψεις τον άλλον στο να ξεκλειδώσει το προγραμμά σου είναι θεμιτό ..αλλά δεν θα ήταν καλύτερο να τον αποτρέψεις στο να ασχοληθεί με το να ξεκλειδώσει το προγραμμά σου..? Κάνοντας τον να πιστεύε ότι το προγραμμά σου κάνει άλλο από αυτό που διαβάζει με την παρακολούθηηση ..? Καταλαβαίνεις τι λέω..?Super Angry

    Ατυχείς συγκρίσεις, ατυχή και τα συμπεράσματα...

    Έχω την εντύπωση, ότι δεν έχεις καθόλου εμπειρία από enterprise περιβάλλοντα ανάπτυξεις εφαρμογών. Είσαι καθαρά με μια νοοτροπία ενός νέου(?!) προγραμματιστή που μόλις έχει φτιάξει την πρώτη του ολοκληρωμένη εφαρμογή και πιστεύει ότι όλη η τεχνολογία είναι μέσα σε αυτή - αν του κλέψουνε τον κώδικα θα του πάρουν και όλη την σοφία. Δεν μπορώ να συνδέσω πως έχεις καταλήξει σε αυτές τις απόψεις ενώ παράλληλα είναι υποστηριχτής του Open Source.

     

    George J.



    Ουτε καν θα μπω στον κόπο να σου εξηγήσω τι θέλει να πει ο ποιητής...

    Εσύ το πήγες προσωπικά οπότε είμαι αναγκασμένος να γίνω και εγώ λίγο εκτός-θέματος...

    Δεν με ξέρεις καν...και το βασικότερο δεν με ξέρεις καν ούτε που έχω δουλέψει και τι γνώσεις έχω.
    Σε κανένα από τα μυνηματά μου δεν έθιξα κανένα προσωπικά. Προφανώς μάλον δεν είχες κάτι καλύτερο να πεις από αυτό.
    Εϊναι και αυτό μια τακτική. Με αυτόν τον τρόπο όσοι έχουν αντίθετοι άποψη από τα νεύρα τους φεύγουν.

    Το αστείο είναι ότι όταν άρχισα να προτογράφω εδώ μέσα πριν απο λίγο καιρό κάποιοι χρήστες σας με πλησίασαν
    και είπαν διάφορα. Κάποια από αυτά δυστυχώς βγαίνουν αλήθεια....

    Ποιος είπε ότι είμαι υποστηρηκτής του Open Source. Εξέφρασα απλά την αντίθεσή μου σε μια κίνηση της Microsoft.

    Τέλος όποιος έχει ανοικτό μυαλό καταλαβαίνει τι λέμε...
    Οι υπόλοιποι εδώ μέσα απλά πίνουν τον καφέ τους και περνάνε ευχάριστα την ώρα τους παίζοντας το ΘΕΟΙ v 4.0!!!!!

    Συγγνωμη αν θίγω κάποιους αλλά δεν δέχομαι προσωπικές επιθέσεις από ανθρώπους ΠΟΥ ΔΕΝ ΜΕ ΞΕΡΟΥΝ !!!!!
  •  06-08-2007, 17:47 34161 σε απάντηση της 34159

    Απ: Εκτελεση Κωδικα Assembly

    Πολλές φορές δεν χρειάζεται καν να μας δει κάποιος απο κοντά για να καταλάβει μερικά πράγματα. Τα λεγόμενά μας και μόνο φτάνουν. Άσε που ο Γιώργος δεν είπε και τίποτα που να σε θίγει (?) Anyway, stick to the point..

    Δεν είπα να αφήσει την εφαρμογή του ξεκλείδωτη, ούτε να δώσει τον κώδικά του σε οποιονδήποτε.. Αυτό που είπα είναι, ότι είναι μάταιο να προσπαθείς και να ξοδεύεις τόσο χρόνο σε κάτι το οποίο δεν θα σου φέρει το επιθυμητό αποτέλεσμα. Ο χρόνος που θα σπαταλήσεις γράφοντας καλύτερο κώδικα και εμπλουτίζοντας την εφαρμογή σου με περισσότερα features κλπ, θα πάει σχεδόν "άχρηστος" εάν τον ξοδέψεις προσπαθώντας να "κλειδώσεις" τρελλά την εφαρμογή σου. Εδώ υπάρχουν εμπορικά πακέτα με ένα σωρό λειτουργίες για να αποτρέψουν διάφορες τέτοιες καταστάσεις και δεν τα βγάζουν πέρα. Μπορείς να κάνεις τον χρήστη να σε πληρώσει όταν θα αρχίσει πραγματικά να χρησιμοποιει την εφαρμογή σου (ενώ πριν την είχε σπασμένη) με διάφορους τρόπους, χωρίς να χρειάζεται υπερβόλικό κλείδωμα. Πολλές φορές το πολύ κλείδωμα, διώχνει κόσμο και χάνεις πολύ περισσότερα χρήματα.


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

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

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  06-08-2007, 17:57 34162 σε απάντηση της 34161

    Απ: Εκτελεση Κωδικα Assembly

    Νομίζω ότι το αρχικό ερώτημα ΔΕΝ ήταν αν πρέπει ή δεν πρέπει να κλειδώνει κανείς τα προϊόντα του. Αλλά πως και αν μπορεί να εκτελεστεί κώδικας assembly από το .NET. Πολύ ενδιαφέρουσα κατά τα άλλα αυτή η συζήτηση αν και πήρε προσωπικές διαστάσεις λιγάκι. Αν συνεχίσετε θα την μεταφέρω σε νέο thread για να μείνει εδώ μόνο το αρχικό ερώτημα, το οποίο έτσι κι αλλιώς δεν απαντήθηκε. Παρακαλώ για να απαντήσετε στο αρχικό ερώτημα κάντε κλικ στο 'Απάντηση' που βρίσκεται ακριβώς πάνω από το ερώτημα.

    Ευχαριστώ 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  06-08-2007, 21:21 34167 σε απάντηση της 34162

    Απ: Εκτελεση Κωδικα Assembly

    Καλησπερα 

    Παιδια  βρηκα κατι στο pscode  αλλα  πρεπει να το μελετησω  πρωτα  

    Το ζητουμενο  ειναι πως θα μπορεσω να εκτελεσω αυτη την ρουτινα  ?

    ειναι  εφικτο 

    καλο  βραδυ  

     


    Rookie learn to fly U are my Inspiration...
    Who said Multithreading is impossible
    Try it First and after Deside if is Possible
  •  06-08-2007, 22:13 34169 σε απάντηση της 34167

    Απ: Εκτελεση Κωδικα Assembly

    Αν θέλεις να εκτελέσεις assembly μέσα από VB6, μάλλον θα πρέπει να το ξεχάσεις. Η VB6 απλά δεν επιτρέπει την κλήση assembly. Είναι ευκολότερο να φτιάξεις ένα DLL σε C και να ενσωμτώσεις εκεί τον κώδικα assembly. Μετά καλείς τον κώδικα του DLL από τη VB6 όταν ξεκινάει η εφαρμογή σου. Έχε όμως υπόψη ότι είναι πανεύκολο ένας προγραμματιστής ο οποίος ξέρει πως να χρησιμοποιήσει ένα debugger να παρακάμψει και την κλήση σου.
    Αυτή η τεχνική προστασίας είναι αρχαία και ξεπερνιέται εξαιρετικά εύκολα. Παλαιότερα (τη δεκαετία του 1990) οι εταιρείες που ήθελαν να προστατέψουν τα προγράμματα τους χρησιμοποιούσαν ειδικούς compilers και linkers οι οποίοι μπέρδευαν τον κώδικα έτσι ώστε να μην μπορεί να βρει κανείς εύκολα που γίνεται η κλήση στο κλείδωμα ενός προγράμματος.

    Αν θέλεις πραγματικά να προστατέψεις κάποιο πρόγραμμα θα πρέπει να χρησιμοποιήσεις κάποιο επαγγελματικό πρόγραμμα προστασίας. Είναι σίγουρο ότι θα είναι πολύ πιο αποτελεσματικά από τις τεχνικές που θα χρησιμοποιήσει ένας προγραμματιστής χωρίς σημαντική εμπειρία σε κλειδώματα και σπασίματα. Θα πρέπει όμως να σκεφτείς αν έχει πραγματικά αξία κάτι τέτοιο. Πολλοί προγραμματιστές υπερεκτιμούν την αξία του κώδικα τους, ή την προθυμία των πελατών τους να τους ... κλέψουν. Συνήθως ένα σχετικά απλό κλείδωμα αρκεί για να προστατέψεις το πρόγραμμα σου.
    Ένας πολύ καλός συνδυασμός είναι να χρησιμοποιήσεις license files κρυπτογραφημένα με public/private keys και online activation.

     

    Αν ενδιαφέρεσαι για κάποιο σοβαρό κλείδωμα κοίτα το www.xheo.com .


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-08-2007, 23:30 34216 σε απάντηση της 34169

    Απ: Εκτελεση Κωδικα Assembly

    hi

     απλα  κατεβασε  αυτο και  ολα  θα ειναι  ενταξει

    http://sourceforge.net/projects/thundervb

    Good night 

     


    Rookie learn to fly U are my Inspiration...
    Who said Multithreading is impossible
    Try it First and after Deside if is Possible
  •  08-08-2007, 00:03 34217 σε απάντηση της 34216

    Απ: Εκτελεση Κωδικα Assembly

    Το συγκεκριμμένο project είναι inactive εδώ και 9 μήνες. Αν επιμένεις να χρησιμοποιήσεις assembly μέσα από VB6 δεν σε εμποδίζει κανείς, απλά θα πρέπει να είσαι έτοιμος για τα μυστήρια access violations και άλλα περίεργα errors που θα ακολοθήσουν, τα οποία μάλιστα δεν θα μπορεί να τα πιάσει η Vb6. Αν κοιτάξεις τα forums του project, θα δεις ότι αυτά είναι τα πιο συχνά προβλήματα. Σε κάθε περίπτωση, δεν μπορεί να χρησιμοποιήσει κανείς assembly αν δεν ξέρει assembly, σε όποια γλώσσα και να γράψει.

    Υπάρχουν πολλές τεχνικές για να χρησιμοποιήσεις assembly ή για να επέμβει κανείς στο stack ενός προγράμματος VB6, απλά δεν αξίζει τον κόπο πλέον. Παλιότερα είχα χρησιμοποιήσει τεχνικές για να εξομοιώσω το exception handling του .NET σε VB6, τροποποιώντας το call stack ώστε να πηγαίνει σε ένα συγκεκριμμένο σημείο σε περίπτωση λάθους. Έφαγα απανωτά access violations αλλά στο τέλος το πέτυχα. Το 2002 αυτό είχε αξία, καθώς δούλευα σε VB6 projects τα οποία δεν μπορούσαν να μεταβούν σε .NET. Σήμερα, κάτι τέτοιο θα ήταν απλά αστείο.

    Αν στο κόστος των απανωτών access violations προσθέσεις και το ότι η προστασία που θα πετύχεις θα είναι ουσιαστικά ανύπαρκτη, απλά δεν αξίζει τον κόπο.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-08-2007, 00:25 34220 σε απάντηση της 34217

    Απ: Εκτελεση Κωδικα Assembly

    Είναι ενδιαφέρον θέμα πάντως.

    Δίνω το μεγαλύτερο focus σε ζητήματα που δεν αφορούν την προστασία του κώδικα αυτού καθ' αυτού (και τους "φοβερούς" και "περιζήτητους" αλγορίθμους που χρησιμοποιεί), αλλά στο να προστατέψω κρίσιμα resources όπως πχ credentials επικοινωνίας με remote endpoints.

    Υπάρχουν πολλές πρακτικές, και ομολογουμένως το security είναι ένας δύσκολος τομέας, καθώς όσο υπάρχουν εξελίξεις, τόσο δυσκολεύουν τα πράγματα. Θα ήθελα να προτείνω (αν κάποιος έχει διάθεση και χρόνο), μέσω blog posts ή συλλογικών άρθρων να γίνουν αναλυτικές παρουσιάσεις στο ζήτημα του security (στην πιο συχνά χρησιμοποιούμενη πλατφόρμα των χρηστών αυτού του forum, to .net) και την ξεκαθάριση ορισμένων εννοιών και πρακτικών, πχ όπως προανέφερα το τι πρέπει να προστατευθεί και τι είναι χάσιμο χρόνου.



    Για να επιστρέψω στο θέμα μας, η ουσία είναι ότι πρέπει να αποφασίσεις με βάση το target group στο οποίο απευθύνεσαι. Και σε τελική ανάλυση δεν θα πετύχεις ποτέ κάτι απαραβίαστο. Αν λοιπόν οι χρήστες που περιμένεις να το χρησιμοποιήσουν στην πλειοψηφία τους είναι αυτό που λέμε "everyday user", μάλλον θα θέλεις κάποια απλή (και φθηνή σε χρόνο και research) λύση τύπου challenge/response (σαν το activation).
    Αν τώρα απευθύνεσαι σε... compiler developers, εκεί θα πρέπει να προσπαθήσεις πολύ περισσότερο (αλλά η ίδια η επιλογή της VB6 ως πλατφόρμας θα ήταν καταστροφή από μόνη της).

    Μην αφήνετε τα media να σας "ταΐζουν"!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems