Επέκταση αρχείου ELF. Τι είναι η επέκταση αρχείου ELF; Δημιουργία τύπων δεδομένων

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

Για παράδειγμα, σε αυτό το σχήμα επισημαίνεται αρχείο my-file.elf, τότε πρέπει να κάνετε δεξί κλικ σε αυτό το αρχείο και να επιλέξετε την επιλογή στο μενού αρχείο "σάρωση με AVG". Όταν κάνετε αυτήν την επιλογή, το AVG Antivirus θα ανοίξει και θα σαρώσει το αρχείο για ιούς.


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

Μερικές φορές απλά επανεγκατάσταση του Dolphin (εξομοιωτή)μπορεί να λύσει το πρόβλημά σας συνδέοντας σωστά το ELF με το Dolphin (εξομοιωτή). Σε άλλες περιπτώσεις, ενδέχεται να προκύψουν προβλήματα με συσχετίσεις αρχείων κακός προγραμματισμός λογισμικούπρογραμματιστή και ίσως χρειαστεί να επικοινωνήσετε με τον προγραμματιστή για περαιτέρω βοήθεια.


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


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


Προσεκτικά:Ένα κατεστραμμένο αρχείο μπορεί να προκαλέσει παράπλευρη βλάβη σε προηγούμενο ή υπάρχον κακόβουλο λογισμικό στον υπολογιστή σας, επομένως είναι σημαντικό να διατηρείτε τον υπολογιστή σας ενημερωμένο με ένα ενημερωμένο πρόγραμμα προστασίας από ιούς.


Εάν το αρχείο σας είναι ELF που σχετίζονται με το υλικό του υπολογιστή σαςγια να ανοίξετε το αρχείο που μπορεί να χρειαστείτε ενημέρωση προγραμμάτων οδήγησης συσκευώνπου σχετίζονται με αυτόν τον εξοπλισμό.

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


Συμβουλή:Εάν όταν προσπαθείτε να ανοίξετε ένα αρχείο ELF λαμβάνετε Μήνυμα σφάλματος αρχείου .SYS, το πρόβλημα μπορεί να είναι σχετίζεται με κατεστραμμένα ή παλιά προγράμματα οδήγησης συσκευώνπου πρέπει να ενημερωθούν. Αυτή η διαδικασία μπορεί να γίνει ευκολότερη χρησιμοποιώντας λογισμικό ενημέρωσης προγραμμάτων οδήγησης όπως το DriverDoc.


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

Αυτό το πρόβλημα μπορεί να προκύψει όταν ο υπολογιστής δυσκολεύεται να συμβαδίσει με μια εργασία, επειδή το λειτουργικό σύστημα (και άλλες υπηρεσίες που εκτελούνται στο παρασκήνιο) ενδέχεται να καταναλώστε πάρα πολλούς πόρους για να ανοίξετε ένα αρχείο ELF. Δοκιμάστε να κλείσετε όλες τις εφαρμογές στον υπολογιστή σας πριν ανοίξετε το Αρχείο παιχνιδιών Nintendo Wii. Απελευθερώνοντας όλους τους διαθέσιμους πόρους στον υπολογιστή σας, θα είστε στην καλύτερη θέση να προσπαθήσετε να ανοίξετε το αρχείο ELF.


Αν εσύ ολοκλήρωσε όλα τα βήματα που περιγράφονται παραπάνωκαι το αρχείο ELF εξακολουθεί να μην ανοίγει, ίσως χρειαστεί να το εκτελέσετε ενημέρωση εξοπλισμού. Στις περισσότερες περιπτώσεις, ακόμη και όταν χρησιμοποιείτε παλαιότερες εκδόσεις υλικού, η ισχύς επεξεργασίας μπορεί να είναι ακόμη περισσότερο από επαρκής για τις περισσότερες εφαρμογές χρηστών (εκτός αν κάνετε πολλή εργασία με ένταση CPU, όπως απόδοση 3D, οικονομική/επιστημονική μοντελοποίηση ή εντατική εργασία πολυμέσων) . Ετσι, είναι πιθανό ο υπολογιστής σας να μην έχει αρκετή μνήμη(συνήθως ονομάζεται "RAM" ή μνήμη τυχαίας πρόσβασης) για να εκτελέσετε την εργασία ανοίγματος ενός αρχείου.

Ελπίζουμε ότι σας βοηθήσαμε να επιλύσετε το πρόβλημά σας με το αρχείο ELF. Εάν δεν γνωρίζετε πού μπορείτε να κατεβάσετε μια εφαρμογή από τη λίστα μας, κάντε κλικ στον σύνδεσμο (αυτό είναι το όνομα του προγράμματος) - Θα βρείτε πιο λεπτομερείς πληροφορίες σχετικά με το πού μπορείτε να κατεβάσετε την έκδοση ασφαλούς εγκατάστασης της απαιτούμενης εφαρμογής.

Μια επίσκεψη σε αυτήν τη σελίδα θα σας βοηθήσει να απαντήσετε συγκεκριμένα σε αυτές ή παρόμοιες ερωτήσεις:

  • Πώς να ανοίξετε ένα αρχείο με επέκταση ELF;
  • Πώς να μετατρέψετε ένα αρχείο ELF σε άλλη μορφή;
  • Τι είναι η επέκταση μορφής αρχείου ELF;
  • Ποια προγράμματα υποστηρίζουν το αρχείο ELF;

Εάν, μετά την προβολή του υλικού αυτής της σελίδας, δεν έχετε λάβει ακόμη ικανοποιητική απάντηση σε καμία από τις ερωτήσεις που παρουσιάζονται παραπάνω, αυτό σημαίνει ότι οι πληροφορίες που παρουσιάζονται εδώ σχετικά με το αρχείο ELF είναι ελλιπείς. Επικοινωνήστε μαζί μας χρησιμοποιώντας τη φόρμα επικοινωνίας και γράψτε ποιες πληροφορίες δεν βρήκατε.

Τι άλλο μπορεί να προκαλέσει προβλήματα;

Μπορεί να υπάρχουν περισσότεροι λόγοι για τους οποίους δεν μπορείτε να ανοίξετε το αρχείο ELF (όχι μόνο η έλλειψη αντίστοιχης εφαρμογής).
Πρώτα- το αρχείο ELF μπορεί να είναι λανθασμένα συνδεδεμένο (μη συμβατό) με την εφαρμογή που έχει εγκατασταθεί για την υποστήριξή του. Σε αυτήν την περίπτωση, πρέπει να αλλάξετε μόνοι σας αυτή τη σύνδεση. Για να το κάνετε αυτό, κάντε δεξί κλικ στο αρχείο ELF που θέλετε να επεξεργαστείτε και κάντε κλικ στην επιλογή "Για να ανοίξω με"και μετά επιλέξτε το πρόγραμμα που εγκαταστήσατε από τη λίστα. Μετά από αυτήν την ενέργεια, τα προβλήματα με το άνοιγμα του αρχείου ELF θα πρέπει να εξαφανιστούν εντελώς.
κατα δευτερον- το αρχείο που θέλετε να ανοίξετε μπορεί απλώς να είναι κατεστραμμένο. Σε αυτήν την περίπτωση, θα ήταν καλύτερο να βρείτε μια νέα έκδοση ή να το κατεβάσετε ξανά από την ίδια πηγή (ίσως για κάποιο λόγο στην προηγούμενη συνεδρία η λήψη του αρχείου ELF δεν ολοκληρώθηκε και δεν μπορούσε να ανοίξει σωστά) .

Θέλετε να βοηθήσετε;

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

Μορφή ELF

Η μορφή ELF έχει διάφορους τύπους αρχείων, τους οποίους μέχρι στιγμής έχουμε καλέσει διαφορετικά, όπως εκτελέσιμο αρχείο ή αρχείο αντικειμένου. Ωστόσο, το πρότυπο ELF διακρίνει τους ακόλουθους τύπους:

1. Αρχείο προς μετακίνηση(μετακινούμενο αρχείο) αποθήκευση οδηγιών και δεδομένων που μπορούν να συνδεθούν με άλλα αρχεία αντικειμένων. Το αποτέλεσμα μιας τέτοιας σύνδεσης μπορεί να είναι ένα εκτελέσιμο αρχείο ή ένα αρχείο κοινόχρηστου αντικειμένου.

2. Κοινόχρηστο αρχείο αντικειμένου(κοινόχρηστο αρχείο αντικειμένου) περιέχει επίσης οδηγίες και δεδομένα, αλλά μπορεί να χρησιμοποιηθεί με δύο τρόπους. Στην πρώτη περίπτωση, μπορεί να συνδεθεί με άλλα αρχεία με δυνατότητα μεταφοράς και κοινόχρηστα αρχεία αντικειμένων, με αποτέλεσμα να δημιουργηθεί ένα νέο αρχείο αντικειμένου. Στη δεύτερη περίπτωση, όταν ένα πρόγραμμα ξεκινά για εκτέλεση, το λειτουργικό σύστημα μπορεί να το συνδέσει δυναμικά με το εκτελέσιμο αρχείο του προγράμματος, με αποτέλεσμα να δημιουργηθεί μια εκτελέσιμη εικόνα του προγράμματος. Στην τελευταία περίπτωση μιλάμε για κοινόχρηστες βιβλιοθήκες.

3. Εκτελέσιμο αρχείοαποθηκεύει μια πλήρη περιγραφή που επιτρέπει στο σύστημα να δημιουργήσει μια εικόνα της διαδικασίας. Περιέχει οδηγίες, δεδομένα, περιγραφές των απαιτούμενων αρχείων κοινόχρηστων αντικειμένων και τις απαραίτητες συμβολικές πληροφορίες και πληροφορίες εντοπισμού σφαλμάτων.

Στο Σχ. Το 2.4 δείχνει τη δομή του εκτελέσιμου αρχείου, με τη βοήθεια του οποίου το λειτουργικό σύστημα μπορεί να δημιουργήσει μια εικόνα προγράμματος και να ξεκινήσει το πρόγραμμα για εκτέλεση.

Ρύζι. 2.4. Δομή ενός εκτελέσιμου αρχείου σε μορφή ELF

Η κεφαλίδα έχει μια σταθερή θέση στο αρχείο. Τα υπόλοιπα στοιχεία τοποθετούνται σύμφωνα με τις πληροφορίες που είναι αποθηκευμένες στην κεφαλίδα. Έτσι, η κεφαλίδα περιέχει μια γενική περιγραφή της δομής του αρχείου, τη θέση των μεμονωμένων στοιχείων και τα μεγέθη τους.

Εφόσον η κεφαλίδα ενός αρχείου ELF καθορίζει τη δομή του, ας το δούμε λεπτομερέστερα (Πίνακας 2.4).

Πίνακας 2.3. Πεδία κεφαλίδας ELF

Πεδίο Περιγραφή
e_ident Μια σειρά από byte, καθένα από τα οποία ορίζει κάποια γενικά χαρακτηριστικά του αρχείου: μορφή αρχείου (ELF), αριθμός έκδοσης, αρχιτεκτονική συστήματος (32-bit ή 64-bit) κ.λπ.
e_type Τύπος αρχείου, καθώς η μορφή ELF υποστηρίζει πολλούς τύπους
e_machine Η αρχιτεκτονική της πλατφόρμας υλικού για την οποία δημιουργήθηκε αυτό το αρχείο. Στον πίνακα Το 2.4 δείχνει τις πιθανές τιμές αυτού του πεδίου
e_έκδοση Αριθμός έκδοσης μορφής ELF. Συνήθως ορίζεται ως EV_CURRENC (τρέχον), που σημαίνει την πιο πρόσφατη έκδοση
e_entry Η εικονική διεύθυνση στην οποία το σύστημα θα μεταφέρει τον έλεγχο μετά τη φόρτωση του προγράμματος (σημείο εισόδου)
e_phoff Θέση (μετατόπιση από την αρχή του αρχείου) του πίνακα κεφαλίδων του προγράμματος
e_shoff Θέση πίνακα κεφαλίδας ενότητας
e_ehsize Μέγεθος κεφαλίδας
e_phentsize Μέγεθος κάθε κεφαλίδας προγράμματος
e_phnum Αριθμός κεφαλίδων προγράμματος
e_shentsize Μέγεθος κάθε κεφαλίδας τμήματος (τμήμα)
e_shnum Αριθμός κεφαλίδων τμήματος (ενότητες)
e_shstrndx Θέση του τμήματος που περιέχει τον πίνακα συμβολοσειρών

Πίνακας 2.4. Τιμές πεδίου κεφαλίδας αρχείου ELF e_machine

Εννοια Πλατφόρμα υλικού
EM_M32 AT&T WE 32100
EM_SPARC Sun SPARC
EM_386 Intel 80386
EM_68K Motorola 68000
EM_88K Motorola 88000
EM_486 Intel 80486
EM_860 Intel i860
EM_MIPS MIPS RS3000 Big-Endian
EM_MIPS_RS3_LE MIPS RS3000 Little-Endian
EM_RS6000 RS6000
EM_PA_RISC PA-RISC
EM_nCUBE nCUBE
EM_VPP500 Fujitsu VPP500
EM_SPARC32PLUS Ήλιος SPARC 32+

Οι πληροφορίες που περιέχονται στον πίνακα κεφαλίδων του προγράμματος λένε στον πυρήνα πώς να δημιουργήσει μια εικόνα διεργασίας από τμήματα. Τα περισσότερα τμήματα αντιγράφονται (αντιστοιχίζονται) στη μνήμη και αντιπροσωπεύουν σχετικά τμήματα της διαδικασίας καθώς εκτελείται, όπως τμήματα κώδικα ή δεδομένων.

Κάθε κεφαλίδα τμήματος προγράμματος περιγράφει ένα τμήμα και περιέχει τις ακόλουθες πληροφορίες:

Ενέργειες τύπου τμήματος και λειτουργικού συστήματος με αυτό το τμήμα

Τοποθεσία τμήματος στο αρχείο

Η αρχική διεύθυνση του τμήματος στην εικονική μνήμη διεργασίας

Μέγεθος τμήματος στο αρχείο

Μέγεθος τμήματος μνήμης

Σημαίες πρόσβασης τμήματος (εγγραφή, ανάγνωση, εκτέλεση)

Ορισμένα τμήματα είναι του τύπου LOAD, που δίνει εντολή στον πυρήνα, κατά την εκκίνηση του προγράμματος για εκτέλεση, να δημιουργήσει δομές δεδομένων που αντιστοιχούν σε αυτά τα τμήματα, που ονομάζονται περιφέρειες, που ορίζουν συνεχόμενες ενότητες της εικονικής μνήμης μιας διεργασίας και τα σχετικά χαρακτηριστικά τους. Το τμήμα, η θέση του οποίου στο αρχείο ELF υποδεικνύεται στην αντίστοιχη κεφαλίδα προγράμματος, θα αντιστοιχιστεί στη δημιουργημένη περιοχή, η εικονική διεύθυνση της αρχής της οποίας υποδεικνύεται επίσης στην κεφαλίδα του προγράμματος. Τα τμήματα αυτού του τύπου περιλαμβάνουν, για παράδειγμα, τμήματα που περιέχουν οδηγίες προγράμματος (κώδικας) και τα δεδομένα του. Εάν το μέγεθος του τμήματος είναι μικρότερο από το μέγεθος της περιοχής, ο αχρησιμοποίητος χώρος μπορεί να γεμίσει με μηδενικά. Αυτός ο μηχανισμός χρησιμοποιείται ιδιαίτερα κατά τη δημιουργία μη αρχικοποιημένων δεδομένων διεργασίας (BSS). Θα μιλήσουμε περισσότερα για τις περιοχές στο Κεφάλαιο 3.

Το τμήμα INTERP αποθηκεύει τον διερμηνέα προγράμματος. Αυτός ο τύπος τμήματος χρησιμοποιείται για προγράμματα που απαιτούν δυναμική σύνδεση. Η ουσία της δυναμικής σύνδεσης είναι ότι τα μεμονωμένα στοιχεία του εκτελέσιμου αρχείου (κοινόχρηστα αρχεία αντικειμένων) συνδέονται όχι στο στάδιο της μεταγλώττισης, αλλά στο στάδιο της εκκίνησης του προγράμματος για εκτέλεση. Το όνομα του αρχείου δηλαδή επεξεργαστή δυναμικού συνδέσμου, αποθηκεύεται σε αυτό το τμήμα. Όταν ένα πρόγραμμα εκκινείται για εκτέλεση, ο πυρήνας δημιουργεί μια εικόνα διεργασίας χρησιμοποιώντας τον καθορισμένο επεξεργαστή συνδέσμων. Έτσι, αρχικά δεν είναι το πρόγραμμα πηγής που φορτώνεται στη μνήμη, αλλά ο επεξεργαστής δυναμικής σύνδεσης. Στο επόμενο βήμα, ο επεξεργαστής δυναμικής σύνδεσης συνεργάζεται με τον πυρήνα του UNIX για να δημιουργήσει μια πλήρη εικόνα του εκτελέσιμου αρχείου. Ο δυναμικός επεξεργαστής φορτώνει τα απαραίτητα αρχεία κοινόχρηστων αντικειμένων, τα ονόματα των οποίων αποθηκεύονται σε ξεχωριστά τμήματα του εκτελέσιμου αρχείου προέλευσης και εκτελεί την απαιτούμενη τοποθέτηση και σύνδεση. Τέλος, ο έλεγχος μεταφέρεται στο αρχικό πρόγραμμα.

Τέλος, το αρχείο τελειώνει με έναν πίνακα κεφαλίδων ενότητεςή ενότητες(Ενότητα). Οι ενότητες ορίζουν τμήματα ενός αρχείου που χρησιμοποιούνται για σύνδεση με άλλες λειτουργικές μονάδες κατά τη μεταγλώττιση ή κατά τη δυναμική σύνδεση. Συνεπώς, οι επικεφαλίδες περιέχουν όλες τις απαραίτητες πληροφορίες για την περιγραφή αυτών των τμημάτων. Κατά κανόνα, οι ενότητες περιέχουν πιο λεπτομερείς πληροφορίες για τμήματα. Για παράδειγμα, ένα τμήμα κώδικα μπορεί να αποτελείται από πολλές ενότητες, όπως έναν πίνακα κατακερματισμού για την αποθήκευση ευρετηρίων συμβόλων που χρησιμοποιούνται στο πρόγραμμα, ένα τμήμα του κώδικα αρχικοποίησης του προγράμματος, έναν πίνακα σύνδεσης που χρησιμοποιείται από τον δυναμικό επεξεργαστή και μια ενότητα που περιέχει την πραγματική οδηγίες προγράμματος.

Θα επιστρέψουμε στη μορφή ELF στο Κεφάλαιο 3 όταν συζητήσουμε την οργάνωση της εικονικής μνήμης διεργασιών, αλλά προς το παρόν θα προχωρήσουμε στην επόμενη κοινή μορφή, το COFF.

Από το βιβλίο The Art of Programming for Unix συγγραφέας Raymond Eric Stephen

Από το βιβλίο Εγχειρίδιο αυτο-οδηγίας για εργασία σε υπολογιστή συγγραφέας Kolisnichenko Denis Nikolaevich

Από το βιβλίο Περίληψη, μαθήματα, δίπλωμα σε υπολογιστή συγγραφέας Balovsyak Nadezhda Vasilievna

5.2.6. Μορφή INI των Windows Πολλά προγράμματα των Microsoft Windows χρησιμοποιούν μια μορφή δεδομένων κειμένου παρόμοια με αυτή που εμφανίζεται στο Παράδειγμα 5.6. Αυτό το παράδειγμα συσχετίζει προαιρετικούς πόρους που ονομάζονται λογαριασμός, κατάλογος, numeric_id και προγραμματιστής με έργα που ονομάζονται python, sng, fetchmail και py-howto. Στην ηχογράφηση

Από το βιβλίο Το νεότερο εγχειρίδιο αυτο-οδηγίας για εργασία σε υπολογιστή συγγραφέας Beluntsov Valery

14.5.3. Μορφή κελιού Η μορφή καθορίζει πώς θα εμφανίζεται η τιμή του κελιού. Η μορφή σχετίζεται στενά με τον τύπο δεδομένων του κελιού. Τον τύπο τον ορίζεις μόνος σου. Εάν εισαγάγατε έναν αριθμό, τότε πρόκειται για έναν αριθμητικό τύπο δεδομένων. Το ίδιο το Excel προσπαθεί να προσδιορίσει τη μορφή με βάση τον τύπο δεδομένων. Για παράδειγμα, εάν εισαγάγατε κείμενο, τότε

Από το βιβλίο The Art of Programming for Unix συγγραφέας Raymond Eric Stephen

Μορφή PDF Το PDF σημαίνει φορητή μορφή εγγράφου. Αυτή η μορφή δημιουργήθηκε ειδικά για την εξάλειψη προβλημάτων με την εμφάνιση πληροφοριών σε αρχεία. Το πλεονέκτημά του είναι ότι, πρώτον, ένα έγγραφο που είναι αποθηκευμένο σε μορφή PDF θα είναι το ίδιο

Από το βιβλίο TCP/IP Architecture, Protocols, Implementation (συμπεριλαμβανομένης της έκδοσης IP 6 και IP Security) από τη Faith Sydney M

Μορφή αρχείου Όταν ένας χρήστης ξεκινά να εργάζεται με ένα αρχείο, το σύστημα πρέπει να γνωρίζει σε ποια μορφή είναι γραμμένο και με ποιο πρόγραμμα πρέπει να ανοίξει. Για παράδειγμα, εάν ένα αρχείο περιέχει απλό κείμενο, τότε μπορεί να διαβαστεί σε οποιοδήποτε πρόγραμμα κειμένου

Από το βιβλίο Yandex για όλους συγγραφέας Abramzon M. G.

5.2.2. Μορφή RFC 822 Η μεταμορφοποίηση RFC 822 προέρχεται από τη μορφή κειμένου των μηνυμάτων ηλεκτρονικού ταχυδρομείου Internet. Το RFC 822 είναι το κύριο πρότυπο RFC Διαδικτύου που περιγράφει αυτήν τη μορφή (αργότερα αντικαταστάθηκε από το RFC 2822). Μορφή MIME (Πολλαπλών χρήσεων Internet Media Extension).

Από το βιβλίο Macromedia Flash Professional 8. Graphics and Animation συγγραφέας Dronov V. A.

5.2.3. Μορφή Cookie-Jar Η μορφή cookie-jar χρησιμοποιείται από το fortune(1) για τη δική του βάση δεδομένων με τυχαία εισαγωγικά. Είναι κατάλληλο για αναρτήσεις που είναι απλώς μπλοκ μη δομημένου κειμένου. Το σύμβολο χρησιμοποιείται ως διαχωριστικό εγγραφών σε αυτήν τη μορφή

Από το βιβλίο Computer Sound Processing συγγραφέας Zagumennov Alexander Petrovich

5.2.4. Μορφή ρεκόρ-βάζα Τα διαχωριστικά καρτελών μορφής cookie-jar λειτουργούν καλά με τη μορφή μεταφοράς RFC 822 για εγγραφές, σχηματίζοντας μια μορφή που ονομάζεται "record-jar" σε αυτό το βιβλίο. Μερικές φορές απαιτείται μια μορφή κειμένου που να υποστηρίζει πολλαπλές καταχωρήσεις με διαφορετικό σύνολο ρητών ονομάτων

Από το βιβλίο UNIX Operating System συγγραφέας Ρομπατσέφσκι Αντρέι Μ.

5.2.6. Μορφή INI των Windows Πολλά προγράμματα των Microsoft Windows χρησιμοποιούν μια μορφή δεδομένων κειμένου παρόμοια με αυτή που εμφανίζεται στο Παράδειγμα 5.6. Αυτό το παράδειγμα συσχετίζει προαιρετικούς πόρους που ονομάζονται λογαριασμός, κατάλογος, numeric_id και προγραμματιστής με έργα που ονομάζονται python, sng, fetchmail και py-howto. Στην ηχογράφηση

Από το βιβλίο Υπολογιστής γραφείου για γυναίκες συγγραφέας Παστερνάκ Ευγενία

19.5 Γενικευμένη μορφή URL Για να συνοψίσουμε τα παραπάνω, σημειώνουμε ότι:? Η διεύθυνση URL ξεκινά με το πρωτόκολλο πρόσβασης που χρησιμοποιείται. Για όλες τις εφαρμογές εκτός από τις διαδικτυακές ειδήσεις και το ηλεκτρονικό ταχυδρομείο, ακολουθεί το διαχωριστικό: //.? Στη συνέχεια, καθορίζεται το όνομα κεντρικού υπολογιστή του διακομιστή. Τελικά

Από το βιβλίο του συγγραφέα

3.3.1. Μορφή RSS Μπορείτε να διαβάσετε νέα του ιστότοπου με διαφορετικούς τρόπους. Ο ευκολότερος τρόπος είναι να επισκέπτεστε τον ιστότοπο από καιρό σε καιρό και να βλέπετε νέα μηνύματα. Μπορείτε να εγκαταστήσετε ένα πρόγραμμα που συνδέεται με ένα κανάλι ειδήσεων και το ίδιο λαμβάνει τίτλους ή περιλήψεις ειδήσεων, σύμφωνα με

Από το βιβλίο του συγγραφέα

Μορφή MP3 Η μορφή MP3 δημιουργήθηκε για τη διανομή αρχείων μουσικής συμπιεσμένα με τον κωδικοποιητή MPEG 1 επιπέδου 3 Επί του παρόντος, είναι η πιο δημοφιλής μορφή για τη διανομή μουσικής μέσω του Διαδικτύου. Υποστηρίζεται από απολύτως όλα τα προγράμματα εγγραφής και επεξεργασίας ήχου, για

Από το βιβλίο του συγγραφέα

Μορφή MP3 Μια μέθοδος συμπίεσης ήχου, καθώς και μια μορφή συμπιεσμένου αρχείου ήχου που προτείνεται από τον διεθνή οργανισμό MPEG (Moving Pictures Experts Group), που βασίζεται σε αντιληπτική κωδικοποίηση ήχου. Εργαστείτε για τη δημιουργία αποτελεσματικών αλγορίθμων κωδικοποίησης

Από το βιβλίο του συγγραφέα

Μορφή ELF Η μορφή ELF έχει διάφορους τύπους αρχείων, τους οποίους μέχρι στιγμής ονομάζαμε με διαφορετικά ονόματα, όπως εκτελέσιμο αρχείο ή αρχείο αντικειμένου. Ωστόσο, το πρότυπο ELF διακρίνει τους ακόλουθους τύπους:1. Ένα αρχείο με δυνατότητα μετεγκατάστασης που αποθηκεύει οδηγίες και δεδομένα που μπορεί να είναι

Από το βιβλίο του συγγραφέα

Μορφή αριθμών Τελικά φτάσαμε στη μορφή αριθμών. Το έχω ήδη αναφέρει περισσότερες από μία φορές, τώρα θα το αναλύσω (αν και ίσως καταλάβατε ήδη τη γενική σημασία Οι αριθμοί στο Excel μπορούν να εμφανίζονται σε διάφορες μορφές). Σε αυτή την ενότητα θα μιλήσουμε για το ποιες μορφές αριθμών υπάρχουν και πώς

Σε αυτήν την ανασκόπηση θα μιλήσουμε μόνο για την έκδοση 32-bit αυτής της μορφής, επειδή δεν χρειαζόμαστε ακόμα την έκδοση 64-bit.

Οποιοδήποτε αρχείο ELF (συμπεριλαμβανομένων των ενοτήτων αντικειμένων αυτής της μορφής) αποτελείται από τα ακόλουθα μέρη:

  • Κεφαλίδα αρχείου ELF.
  • Πίνακας ενοτήτων προγράμματος (μπορεί να απουσιάζει στις ενότητες αντικειμένων).
  • Ενότητες αρχείου ELF.
  • Πίνακας ενοτήτων (ενδέχεται να μην υπάρχει στην ενότητα εκτέλεσης).
  • Για λόγους απόδοσης, η μορφή ELF δεν χρησιμοποιεί πεδία bit. Και όλες οι δομές είναι συνήθως ευθυγραμμισμένες κατά 4 byte.

Τώρα ας δούμε τους τύπους που χρησιμοποιούνται στις κεφαλίδες αρχείων ELF:

Τώρα ας δούμε την κεφαλίδα του αρχείου:

#define EI_NIDENT 16 struct elf32_hdr ( ανυπόγραφο char e_ident; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; /* Entry point */Eff _Λέξη e_fla gs;

Ο πίνακας e_ident περιέχει πληροφορίες για το σύστημα και αποτελείται από πολλά υποπεδία.

Struct ( ανυπόγραφο char ei_magic; ανυπόγραφο char ei_class; ανυπόγραφο char ei_data; ανυπόγραφο char ei_version; ανυπόγραφο char ei_pad; )

  • ei_magic - σταθερή τιμή για όλα τα αρχεία ELF, ίση με (0x7f, "E", "L", "F")
  • ei_class - κλάση αρχείου ELF (1 - 32 bit, 2 - 64 bit που δεν λαμβάνουμε υπόψη)
  • ei_data - καθορίζει τη σειρά byte για αυτό το αρχείο (αυτή η σειρά εξαρτάται από την πλατφόρμα και μπορεί να είναι προς τα εμπρός (LSB ή 1) ή αντίστροφα (MSB ή 2)) Για επεξεργαστές Intel, επιτρέπεται μόνο η τιμή 1.
  • Το ei_version είναι ένα μάλλον άχρηστο πεδίο και αν δεν είναι ίσο με 1 (EV_CURRENT) τότε το αρχείο θεωρείται λανθασμένο.

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

Το πεδίο κεφαλίδας e_type μπορεί να περιέχει πολλές τιμές, για εκτελέσιμα αρχεία θα πρέπει να είναι ET_EXEC ίσο με 2

e_machine - καθορίζει τον επεξεργαστή στον οποίο μπορεί να εκτελεστεί αυτό το εκτελέσιμο αρχείο (Για εμάς, η αποδεκτή τιμή EM_386 είναι 3)

Το πεδίο e_version αντιστοιχεί στο πεδίο ei_version από την κεφαλίδα.

Το πεδίο e_entry ορίζει τη διεύθυνση έναρξης του προγράμματος, η οποία τοποθετείται στο eip πριν ξεκινήσει το πρόγραμμα.

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

Δεν θα απαριθμήσω τον σκοπό όλων των πεδίων δεν χρειάζονται όλα για τη φόρτωση. Θα περιγράψω μόνο δύο ακόμη.

Το πεδίο e_phentsize καθορίζει το μέγεθος της καταχώρισης στον πίνακα της ενότητας του προγράμματος.

Και το πεδίο e_phnum καθορίζει τον αριθμό των καταχωρήσεων στον πίνακα της ενότητας του προγράμματος.

Ο πίνακας των ενοτήτων (όχι των ενοτήτων προγράμματος) χρησιμοποιείται για τη σύνδεση προγραμμάτων. δεν θα το εξετάσουμε. Επίσης, δεν θα εξετάσουμε δυναμικά συνδεδεμένες ενότητες. Αυτό το θέμα είναι αρκετά περίπλοκο και δεν είναι κατάλληλο για μια πρώτη γνωριμία. :)

Τώρα για τις ενότητες του προγράμματος. Η μορφή καταχώρισης του πίνακα ενότητας προγράμματος έχει ως εξής:

Struct elf32_phdr ( Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_memsz; Elf_3_Word p_memsz; Elf_3_Word;

Μάθετε περισσότερα για τα πεδία.

  • p_type - καθορίζει τον τύπο της ενότητας του προγράμματος. Μπορεί να πάρει πολλές τιμές, αλλά μας ενδιαφέρει μόνο μία. PT_LOAD(1). Εάν το τμήμα είναι αυτού του τύπου, τότε προορίζεται να φορτωθεί στη μνήμη.
  • p_offset - καθορίζει τη μετατόπιση στο αρχείο από το οποίο ξεκινά αυτή η ενότητα.
  • p_vaddr - ορίζει την εικονική διεύθυνση στην οποία αυτή η ενότητα θα πρέπει να φορτωθεί στη μνήμη.
  • p_paddr - ορίζει τη φυσική διεύθυνση στην οποία θα πρέπει να φορτωθεί αυτή η ενότητα. Αυτό το πεδίο είναι προαιρετικό και έχει νόημα μόνο σε ορισμένες πλατφόρμες.
  • p_filesz - καθορίζει το μέγεθος της ενότητας στο αρχείο.
  • p_memsz - καθορίζει το μέγεθος του τμήματος μνήμης. Αυτή η τιμή μπορεί να είναι μεγαλύτερη από την προηγούμενη. Το πεδίο p_flag καθορίζει τον τύπο πρόσβασης σε τμήματα στη μνήμη. Ορισμένες ενότητες μπορούν να εκτελεστούν, μερικές μπορούν να γραφτούν. Όλα είναι διαθέσιμα για ανάγνωση σε υπάρχοντα συστήματα.

Φόρτωση μορφής ELF.

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

Int LoadELF (unsigned char *bin) (struct elf32_hdr *EH = (struct elf32_hdr *)bin; struct elf32_phdr *EPH; if (EH->e_ident != 0x7f || // Control MAGIC EH->e_ident != "E" EH->e_ident != EH->e_ident != EH->e_ident != ELFCLASS32 || e_ident != EV_CURRENT ||. // έκδοση EH->e_type != ET_EXEC || // πληκτρολογήστε EH->e_machine != EM_386 || // πλατφόρμα EH->e_version != EV_CURRENT) //. επιστροφή ELF_WRONG = (struct elf32_phdr *)(bin + EH->e_phnum--) (αν (EPH->p_type == PT_LOAD) memcpy (EPH->p_vaddr, bin + EPH-); >p_offset, EPH->p_filesz EPH = (struct elf32_phdr *)((unsigned char *)EPH + EH->e_phentsize)); )

Σοβαρά, αξίζει να αναλύσετε τα πεδία EPH->p_flags και να ορίσετε δικαιώματα πρόσβασης στις κατάλληλες σελίδες και η απλή αντιγραφή δεν θα λειτουργήσει εδώ, αλλά αυτό δεν σχετίζεται πλέον με τη μορφή, αλλά με την εκχώρηση μνήμης. Επομένως, δεν θα μιλήσουμε για αυτό τώρα.

Μορφή PE.

Από πολλές απόψεις είναι παρόμοιο με τη μορφή ELF, και δεν αποτελεί έκπληξη, θα πρέπει επίσης να διαθέτει ενότητες διαθέσιμες για λήψη.

Όπως όλα τα άλλα στη Microsoft:) η μορφή PE βασίζεται στη μορφή EXE. Η δομή του αρχείου είναι η εξής:

  • 00h - Κεφαλίδα EXE (δεν θα το κοιτάξω, είναι τόσο παλιά όσο το Dos. :)
  • 20h - κεφαλίδα OEM (τίποτα σημαντικό σε αυτό).
  • 3сh - μετατόπιση της πραγματικής κεφαλίδας PE στο αρχείο (dword).
  • Τραπέζι κίνησης στέλεχος?
  • στέλεχος;
  • Κεφαλίδα PE.
  • πίνακας αντικειμένων?
  • αντικείμενα αρχείου?

Το stub είναι ένα πρόγραμμα που εκτελείται σε πραγματική λειτουργία και εκτελεί ορισμένες προκαταρκτικές ενέργειες. Μπορεί να απουσιάζει, αλλά μερικές φορές μπορεί να χρειαστεί.

Μας ενδιαφέρει κάτι ελαφρώς διαφορετικό, η κεφαλίδα PE.

Η δομή του έχει ως εξής:

Struct pe_hdr ( ανυπόγραφο μακρύ pe_sign; ανυπόγραφο σύντομο pe_cputype; ανυπόγραφο σύντομο pe_objnum; ανυπόγραφο μακρύ pe_time; ανυπόγραφο μακρύ pe_cofftbl_off; ανυπόγραφο μακρύ pe_cofftbl_size; ανυπόγραφο σύντομο pe_nthdr_size_size; ανυπόγραφο μακρύ μέγεθος pe_code pe_idata_size ;

Υπάρχουν πολλά πράγματα εκεί. Αρκεί να πούμε ότι το μέγεθος αυτής της κεφαλίδας είναι 248 byte.

Και το κυριότερο είναι ότι τα περισσότερα από αυτά τα πεδία δεν χρησιμοποιούνται. (Ποιος φτιάχνει έτσι;) Όχι, έχουν, φυσικά, έναν σκοπό που είναι αρκετά γνωστός, αλλά το δοκιμαστικό μου πρόγραμμα, για παράδειγμα, περιέχει μηδενικά στα πεδία pe_code_base, pe_code_size, κ.λπ., αλλά λειτουργεί καλά. Το συμπέρασμα είναι ότι το αρχείο φορτώνεται με βάση τον πίνακα αντικειμένων. Για αυτό θα μιλήσουμε.

Ο πίνακας αντικειμένων ακολουθεί αμέσως μετά την κεφαλίδα PE. Οι καταχωρήσεις σε αυτόν τον πίνακα έχουν την ακόλουθη μορφή:

Struct pe_ohdr ( ανυπόγραφο char o_name; ανυπόγραφο μακρύ o_vsize; ανυπόγραφο μακρύ o_vaddr; ανυπόγραφο μακρύ o_psize; ανυπόγραφο μακρύ o_poff; ανυπόγραφο char o_reserved; ανυπόγραφο long o_flags; );

  • o_name - το όνομα της ενότητας, είναι απολύτως αδιάφορο για τη φόρτωση.
  • o_vsize - μέγεθος του τμήματος μνήμης.
  • o_vaddr - διεύθυνση μνήμης σε σχέση με το ImageBase.
  • o_psize - μέγεθος ενότητας στο αρχείο.
  • o_poff - μετατόπιση ενότητας στο αρχείο.
  • o_flags - σημαίες ενότητας.

Αξίζει να ρίξετε μια πιο προσεκτική ματιά στις σημαίες.

  • 00000004h - χρησιμοποιείται για κώδικα με μετατοπίσεις 16 bit
  • 00000020h - ενότητα κωδικού
  • 00000040h - αρχικοποιημένη ενότητα δεδομένων
  • 00000080h - ενότητα μη αρχικοποιημένων δεδομένων
  • 00000200h - σχόλια ή οποιοδήποτε άλλο είδος πληροφοριών
  • 00000400h - τμήμα επικάλυψης
  • 00000800h - δεν θα είναι μέρος της εικόνας του προγράμματος
  • 00001000h - γενικά δεδομένα
  • 00500000h - προεπιλεγμένη στοίχιση εκτός εάν ορίζεται διαφορετικά
  • 02000000h - μπορεί να εκφορτωθεί από τη μνήμη
  • 04000000h - δεν έχει αποθηκευτεί στην κρυφή μνήμη
  • 08000000h - χωρίς σελίδα
  • 10000000h - κοινόχρηστο
  • 20000000h - εφικτό
  • 40000000h - μπορεί να διαβαστεί
  • 80000000h - μπορείτε να γράψετε

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

Σε γενικές γραμμές, αυτές οι πληροφορίες είναι ήδη αρκετές για τη λήψη του δυαδικού αρχείου.

Φόρτωση μορφής PE.

int LoadPE (unsigned char *bin) ( struct elf32_hdr *PH = (struct pe_hdr *) (bin + *((unsigned long *)&bin)); // Φυσικά, ο συνδυασμός δεν είναι σαφής... απλά πάρτε το dword σε μετατόπιση 0x3c / / Και υπολογίστε τη διεύθυνση κεφαλίδας PE στην εικόνα του αρχείου struct elf32_phdr *POH if (PH == NULL || // Έλεγχος του δείκτη PH->pe_sign != 0x4550 || // PE signature ("P"; , "E", 0, 0) PH->pe_cputype != 0x14c || >pe_obj_num--) ( if ((POH->p_flags & 0x60) != 0) // είτε κωδικός είτε αρχικοποιημένο αρχείο δεδομένων memcpy (PE->pe_image_base + POH->o_vaddr, bin + POH- >o_poff, POH->o_psize POH = (struct pe_ohdr *)((unsigned char *)POH + sizeof (struct pe_ohdr));

Αυτό πάλι δεν είναι ένα έτοιμο πρόγραμμα, αλλά ένας αλγόριθμος φόρτωσης.

Και πάλι, πολλά σημεία δεν καλύπτονται, καθώς ξεφεύγουν από το εύρος του θέματος.

Αλλά τώρα αξίζει να μιλήσουμε λίγο για τις υπάρχουσες δυνατότητες του συστήματος.

Χαρακτηριστικά συστήματος.

Παρά την ευελιξία των εργαλείων προστασίας που διατίθενται στους επεξεργαστές (προστασία σε επίπεδο πινάκων περιγραφών, προστασία σε επίπεδο τμήματος, προστασία σε επίπεδο σελίδας), στα υπάρχοντα συστήματα (τόσο στα Windows όσο και στο Unix) χρησιμοποιείται πλήρως μόνο η προστασία σελίδας, η οποία: αν και μπορεί να προστατεύσει τον κώδικα από την εγγραφή, αλλά δεν μπορεί να προστατεύσει τα δεδομένα από την εκτέλεση. (Ίσως αυτός είναι ο λόγος για την αφθονία των τρωτών σημείων του συστήματος;)

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

Από αυτή την άποψη, όλες οι μονάδες συνδέονται όχι από αρχικές διευθύνσεις, αλλά με αρκετά μεγάλη μετατόπιση στο τμήμα. Στα Windows, η βασική διεύθυνση στο τμήμα είναι 0x400000, στο Unix (Linux ή FreeBSD) - 0x8048000.

Ορισμένες λειτουργίες σχετίζονται επίσης με την οργάνωση σελίδων της μνήμης.

Τα αρχεία ELF συνδέονται με τέτοιο τρόπο ώστε τα όρια και τα μεγέθη των τμημάτων να εμπίπτουν σε μπλοκ 4 kilobyte του αρχείου.

Και στη μορφή PE, παρά το γεγονός ότι η ίδια η μορφή σας επιτρέπει να ευθυγραμμίσετε τμήματα των 512 byte, η στοίχιση των τμημάτων χρησιμοποιείται στα 4k μια μικρότερη στοίχιση στα Windows.