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

Assembly to C/C++


SoulReapeR

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

Δημοσ.

Καλησπέρα. Μήπως θα μπορούσε κάποιος να μου δώσει κάποια ιδεα για κάποιο καλό πρόγραμμα μετατροπής του Assembly code σε C/C++ για κατέβασμα; Ας είναι και non free

 

Ευχαριστώ προκαταβολικά

Δημοσ.

Δεν νομίζω πως υπάρχει κάποιος καλός decompiler, ειδικά για C/C++. Λίγο copy/paste από κάποιο άλλο forum:

A few things you can notice examinig the souce code obtained by a decompiler:

Sequences of rational code are mixed with other sequences containing amazing nonsenses.

All function and variable names are missing. An example, the integers are all named int0001, int0002, int0003... Same for user functions. The Windows system functions are recognized and named properly.

Many times, when the decompiler doesn't recognize a machine code sequence, it simply includes in the source file the assembly language equivalent.

Classes are all vanished.

And many more...

 

Do not even dream that you can use that source to rebuild the executable. If you try that, you'll be flooded with error messages.

 

If you're interested only in a small part from an application, you can give it a try, in the hope that that particular small area isn't messed up too much and you can see something to have a clue.

Αν θες βέβαια, μπορείς να δοκιμάσεις τον boomerang (http://boomerang.sourceforge.net/). Δεν τον έχω χρησιμοποιήσει αλλά είναι απ'τους πιο γνωστούς αλλά και open source. Αν και πιστεύω θα ήταν καλύτερο να κάνεις τον κώδικα disassemble ο ίδιος.

Δημοσ.

Δεν θα είχα πρόβλημα να το κάνω dissassemble αλλά δεν γνωρίζω τίποτα από assembly εκτός από το όνομα :-p Γι αυτό το χρειαζόμουν. Ευχαριστώ πολύ για την απάντηση

 

Λίγο offtopic, αλλά μπορεί κάποιος αν έχει στο μυαλό του κάποιο βιβλίο ή site με tutorials για assembly για καινούργιους να μου δώσει μια ιδέα; Ευχαριστώ

Δημοσ.

Θα πρέπει να το ψάξεις μόνος σου καλύτερα. Είναι αρκετά μπλεγμένο το πράγμα.. δεν είναι C

 

Σε linux εκτός από τα δυο syntax έιναι πολύ καλοφτιαγμένα τα system calls. Σε dos γίνεται της πουτάνας. Ενώ για windows δύσκολο να βρεις οδηγό και δεν έχω ασχοληθεί. Δεν μιλαμε καν για το πως μπλέκει με 64bit.

 

Γενικά θα πρέπει να καείς.

Δημοσ.

Μιας και αυτό το ερώτημα το έχω διαβάσει αρκετές φορές (σε διάφορες εκδοχές) από προσωπική εμπειρία θα έλεγα ότι:

 

Αν έχεις ικανές γνώσεις της native γλώσσας στην οποία είναι μεταφρασμένο το εκτελέσιμο, αρκετό διαθέσιμο χρόνο, ισχυρά εργαλεία (dis-assembler & debugger για πειραματισμούς) και μεγάλη υπομονή μπορεί να καταφέρεις την σταδιακή μετατροπή του κώδικα από native μορφή σε ότι γλώσσα γνωρίζεις.

 

Από προσωπική εμπειρία πριν μερικά χρόνια, χρειάσθηκε περίπου ένας μήνας (3 εβδομάδες περίπου), εντατικής δουλειάς με τον debugger (OllyDBG) μου και το dis-assembler (IDA/WinDeb), ένα τετράδιο των 100φ για τις απαραίτητες σημειώσεις ώστε να μεταγράψω 80x86 32bit assembly (αρκετές procedures που επικοινωνούσαν μεταξύ τους) στον ανάλογο C κώδικα.

 

Θα το ξανά έκανα; .. όχι, ήταν μια ειδική περίπτωση όπου ο source κώδικας ήταν πια μη διαθέσιμος - τότε δεν είχα υπόψη μου για αυτόματα εργαλεία, παρ' όλα αυτά αν θες να είσαι σίγουρος για τα αποτελέσματα σου, καλό είναι να έχεις κάποια στοιχεία assembly -να μπορείς να διαβάζεις τουλάχιστον το τι κάνει σε "απλό" επίπεδο ο κώδικας της ώστε να μην εξαρτάσαι από τις δυνατότητες / αδυναμίες κάθε αυτόματου utility.

Δημοσ.

Α τόσο καλά.. :lol:

 

Εφόσον ήρθε το καλοκαίρι και τελείωσε η εξεταστική, έχω άπλετο ανεκμετάλλευτο χρόνο για να καώ

 

 

Σας ευχαριστώ πολύ όλους!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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