Struktur af softwarekomponenter. System til automatisk oprettelse af signaturer af eksekverbare filer

2.1 Filer

Krav til opbevaring af oplysninger:

    mulighed for at lagre store mængder data

    oplysninger skal opbevares, efter at processen er afsluttet

    flere processer skal have samtidig adgang til information

2.1.1 Filnavngivning

Længden af ​​filnavnet afhænger af operativsystemet; det kan være fra 8 (MS-DOS) til 255 (Windows, LINUX) tegn.

OS'er kan skelne mellem store og små bogstaver. For eksempel er WINDOWS og windows til MS-DOS de samme, men for UNIX er de forskellige filer.

På mange operativsystemer består filnavnet af to dele adskilt af et punktum, for eksempel windows.exe. Delen efter prikken kaldes filtypenavn. Systemet bruger det til at skelne filtypen.

For MS-DOS er udvidelsen 3 tegn. Ved at bruge det skelner systemet mellem typen af ​​fil, og om den kan udføres eller ej.

I UNIX er udvidelsen begrænset til en filnavnstørrelse på 255 tegn, og UNIX kan have flere udvidelser, men udvidelser bruges mere applikationsprogrammer, ikke OS. UNIX kan ikke afgøre, om en fil er eksekverbar eller ej baseret på dens udvidelse.

2.1.2 Filstruktur

Tre hovedfilstrukturer:

    Byte-sekvens- OS er ikke interesseret i indholdet af filen, det ser kun bytes. Den største fordel ved et sådant system er dets fleksibilitet i brugen. Anvendes på Windows og UNIX.

    Rækkefølge af poster- poster med en fast længde (f.eks. et hulkort) læses sekventielt. Ikke brugt nu.

    Indgangstræ- hver post har en nøgle, poster læses med tasten. Den største fordel ved et sådant system er søgehastigheden. Bruges stadig på mainframes.

Tre typer filstrukturer.

2.1.3 Filtyper

Hovedfiltyper:

    Fast- indeholde brugeroplysninger. Anvendes på Windows og UNIX.

    Kataloger - systemfiler, der giver strukturstøtte filsystem. Anvendes på Windows og UNIX.

    Karakter- til input-output modellering. Bruges kun på UNIX.

    Blok- til modellering af diske. Bruges kun på UNIX.

Hovedtyper af almindelige filer:

    ASCII filer- består af tekststrenge. Hver linje slutter med et vognretur (Windows), et linjeskift (UNIX) og begge dele (MS-DOS). Derfor, hvis du åbner en tekstfil skrevet i UNIX i Windows, vil alle linjerne smelte sammen til en stor linje, men under MS-DOS vil de ikke flettes ( dette er en ret almindelig situation). De vigtigste fordele ved ASCII-filer:
    - kan vises på skærmen og sendes til printeren uden konvertering
    - kan redigeres af næsten enhver redaktør

    Binære filer- andre filer (ikke-ASCII). Som regel har de en intern struktur.

Hovedtyper af binære filer:

    Eksekverbar- programmer, kan de behandles af styresystemet selv, selvom de er skrevet som en sekvens af bytes.

    Ikke-eksekverbar- Andet.

Eksempler på eksekverbare og ikke-eksekverbare filer

"Magisk tal"- identifikation af filen som eksekverbar.

2.1.4 Filadgang

Hovedtyper af filadgang:

    Konsekvent- bytes læses i rækkefølge. Brugt når der var magnetbånd.

2.1.5 Fil attributter

Hovedfilattributter:

    Beskyttelse - hvem kan få adgang til filen og hvordan (brugere, grupper, læse/skrive). Anvendes på Windows og UNIX.

    Adgangskode - adgangskode til filen

    Creator - hvem har oprettet filen

    Ejer - nuværende ejer af filen

    Skrivebeskyttet flag - 0 - læse/skrive, 1 - skrivebeskyttet. Brugt på Windows.

    Det "skjulte" flag - 0 - synligt, 1 - usynligt i listen over mappefiler (standard). Brugt på Windows.

    Flag "system" - 0 - normal, 1 - system. Brugt på Windows.

    "Arkiv"-flaget - klar eller ej til arkivering (ikke at forveksle med komprimering). Brugt på Windows.

    Flag "komprimeret" - filen er komprimeret (svarende til zip-arkiver). Brugt på Windows.

    Flag "krypteret" - krypteringsalgoritmen bruges. Hvis nogen forsøger at læse en fil, der ikke har tilladelse til det, vil de ikke være i stand til at læse den. Brugt på Windows.

    ASCII/binært flag - 0 - ASCII, 1 - binært

    Random access flag - 0 - kun sekventiel, 1 - random access

    Flag "midlertidig" - 0 - normal, 1 - for at slette filen i slutningen af ​​processen

    Blokering flag - blokering af adgang til filen. Hvis han har travlt med at redigere.

    Oprettelsestidspunkt - dato og tidspunkt for oprettelse. UNIX bruges.

    Sidste adgangstidspunkt - dato og klokkeslæt for sidste adgang

    Tid sidste ændring- dato og klokkeslæt for sidste ændring. Anvendes på Windows og UNIX.

    Aktuel størrelse er filstørrelsen. Anvendes på Windows og UNIX.

2.1.6 Filhandlinger

Grundlæggende systemopkald at arbejde med filer:

    Opret - oprettelse af en fil uden data.

    Slet - sletning af en fil.

    Åbn - åbn en fil.

    Luk - lukning af filen.

    Læs - læsning fra en fil, fra den aktuelle filposition.

    Skriv - skrivning til en fil, til den aktuelle filposition.

    Tilføj - tilføjer til slutningen af ​​filen.

    Søg - indstiller filmarkøren til en bestemt position i filen.

    Hent attributter - Hent filattributter.

    Indstil attributter - sæt filattributter.

    Omdøb - omdøb filen.

2.1.7 Filer knyttet til hukommelsesadresserum

Nogle gange er det praktisk at vise en fil i hukommelsen (du behøver ikke bruge I/O-systemkald for at arbejde med filen), og arbejde med hukommelsen og derefter skrive den ændrede fil til disken.

Når du bruger sidet hukommelsesorganisation, indlæses ikke hele filen, men kun de nødvendige sider indlæses.

Når du bruger segmenteret hukommelsesorganisation, indlæses filen i et separat segment.

Et eksempel på kopiering af en fil via memory mapping.

Algoritme:

    Der oprettes et segment til fil 1

    Filen vises i hukommelsen

    Der oprettes et segment til fil 2

    Segment 1 kopieres til segment 2

    Segment 2 gemmes på disken

Ulemper ved denne metode:

    Det er svært at bestemme længden af ​​outputfilen

    Hvis en proces har kortlagt en fil i hukommelsen og ændret den, men filen endnu ikke er blevet gemt, vil en anden proces åbne den samme fil og arbejde med den forældede fil.

    Filen kan være stor, større end et segment eller virtuelt rum.

2.2 Mapper

2.2.1 Katalogsystemer på ét niveau

I dette system er alle filer indeholdt i én mappe.

Enkeltbibliotekssystem indeholdende fire filer, to filer A, men forskellige ejere

Systemfordele:

    Enkelhed

    Evnen til hurtigt at finde en fil, ingen grund til at klatre gennem mapper

Ulemper ved systemet:

    Forskellige brugere kan oprette filer med de samme navne.

2.2.2 Katalogsystemer i to niveauer

Hver bruger har sin egen mappe.

Katalogsystem i to niveauer

Når en bruger logger ind på systemet, føres han til sit bibliotek og arbejder kun med det. Dette gør det problematisk at bruge systemfiler.

Dette problem kan løses ved at oprette systemmappe, med generel adgang.

Hvis en bruger har mange filer, kan han også have brug for filer med de samme navne.

2.2.3 Hierarkiske katalogsystemer

Hver bruger kan oprette så mange mapper, som han har brug for.

Hierarkisk katalogsystem

Næsten alle moderne universelle operativsystemer er organiseret på denne måde. Specialiseret OS har muligvis ikke brug for dette.

2.2.4 Stinavn

For at organisere et bibliotekstræ har du brug for en måde at specificere en fil på.

Der er to hovedmetoder til at specificere en fil:

    absolut stinavn- angiver stien fra rodmappe, For eksempel:
    - til Windows \usr\ast\mailbox
    - til UNIX /usr/ast/mailbox
    - for MULTICS >usr>ast>postkasse

    relative stinavn- stien er angivet fra den aktuelle mappe (arbejdsmappe), for eksempel:
    - hvis den aktuelle mappe er /usr/, så absolut vej/usr/ast/mailbox vil blive omskrevet til ast/mailbox
    - hvis den aktuelle mappe er /usr/ast/, vil den absolutte sti /usr/ast/mailbox blive overskrevet i postkassen
    - hvis den aktuelle mappe er /var/log/, vil den absolutte sti /usr/ast/mailbox blive omskrevet til ../../usr/ast/mailbox

./ - betyder den aktuelle mappe

../ - betyder overordnet mappe

2.2.5 Operationer med mapper

Grundlæggende system kræver arbejde med mapper:

    Opret - opret en mappe

    Slet - slet en mappe

    OpenDir - luk mappe

    CloseDir - luk en mappe

    Omdøb - omdøb en mappe

Obfuscatorer

Debuggere

Debugger eller debugger(engelsk debugger) er et udviklingsmiljømodul eller separat ansøgning, designet til at finde fejl i programmet. Debuggeren giver dig mulighed for at udføre trin-for-trin sporing, overvåge, indstille eller ændre værdierne for variabler under programkørsel, installere og fjerne kontrolpunkter eller standsningsforhold mv.

Uklarhed(fra det latinske obfuscare - at obscure, darken; og engelsk obfuscate - to make unobvious, confusing, forvirrende) eller kode obfuscation - bringer kildeteksten eller den eksekverbare kode for et program til en form, der bevarer dets funktionalitet, men gør det vanskeligt at analysere, forstå driftsalgoritmerne og modifikation under dekompilering.

« Sammenfiltring» kode kan udføres på niveau med algoritmen, kildeteksten og/eller assemblyteksten. For at skabe forvirrende samlingstekst kan der bruges specialiserede kompilatorer, der bruger ikke-oplagte eller udokumenterede funktioner miljø for programafvikling. Der er også særlige programmer, der producerer obfuscation, kaldet obfuscators.

Eksekverbart modul, eksekverbar fil- en fil, der indeholder et program i en form, hvori det (efter indlæsning i hukommelsen og lokalt konfigureret) kan udføres af en computer.

Oftest indeholder den binær repræsentation maskininstruktioner til en specifik processor (af denne grund bruges ordet binær i programmeringsslang i relation til det - sporingspapir fra engelsk binært), men kan også indeholde instruktioner på et fortolket programmeringssprog, hvis udførelse kræver en tolk . I forhold til sidstnævnte bruges ofte udtrykket "script".

Eksekveringen af ​​binære filer udføres af hardware- og software-implementerede maskiner. De første inkluderer processorer - for eksempel x86- eller SPARC-familierne. Den anden er virtuelle maskiner, f.eks. virtuel maskine Java eller .NET Framework. Format binær fil bestemt af arkitekturen af ​​den maskine, der udfører den. Der er maskiner implementeret i både hardware og software, for eksempel x86-familieprocessorer og den virtuelle VMware-maskine.

En fils eksekverbarhedsstatus bestemmes oftest af de vedtagne konventioner. I nogle operativsystemer genkendes eksekverbare filer således takket være en filnavnekonvention (for eksempel ved at angive filtypenavnet - . exe eller. beholder), mens eksekverbare filer i andre har specifikke metadata (f.eks. udførelsestilladelsesbitten på UNIX-lignende operativsystemer).

I moderne computerarkitekturer indeholder eksekverbare filer store mængder data, som ikke er det computerprogram: beskrivelse af softwaremiljøet, hvor programmet kan køres, data til fejlretning af programmet, anvendte konstanter, data, der kan være nødvendige operativ system at køre en proces (for eksempel anbefalet heap-størrelse), og endda beskrive de grafiske vinduesstrukturer, der bruges af programmet.



Ofte indeholder eksekverbare filer kald til biblioteksfunktioner, såsom kald til operativsystemfunktioner. Sammen med processorafhængighed (maskinafhængig er enhver binær eksekverbar fil, der indeholder maskinkode), kan eksekverbare filer være karakteriseret ved afhængighed af versionen af ​​operativsystemet og dets komponenter.

Uanset om computeren er tændt eller ej, gemmes alle data og programmer i computerens langtids (eksterne) hukommelse i form af filer – hvorfra de indlæses under udførelse eller behandling.

Fil er et bestemt sæt koder, der vises en vis mængde information relateret til den type eller formål, som den er tildelt unikt navn, og som er gemt i langtidshukommelsen.

Kildeteksterne til programmer, klar til at køre programmer, dokumenter, grafiske billeder og andre data kan gemmes i form af filer. Baseret på typen af ​​organisation og indhold er filer opdelt i to kategorier - tekst og binær (binær). Tekstfiler i overensstemmelse med deres formål gemmer de strenge af tegn tolket som tekster. Eksekverbare filer bestå af programkoder af programmer klar til udførelse.

Unikke navne giver mulighed for at organisere filer og gøre dem tilgængelige for operativsystemer og andre programmer. Filnavnet består af to dele adskilt af en prik: rent faktisk Navn fil og udvidelse , der definerer dens type (program, data osv.) Filnavnet tildeles af brugeren (nogle gange af systemet som standard). Filtypen indstilles normalt automatisk af programmet, når det oprettes, hvilket giver dig mulighed for at automatisere lanceringen af ​​programmer i de fleste tilfælde. For eksempel, .com, .exe– eksekverbare filer (programmer), .txt, .rtf . doktekstfiler, .pas– kildeteksten til et program skrevet på sproget Pascal .

For at organisere placeringen af ​​filer på diske, er deres navne registreret i specielle filer– mapper (i moderne operativsystemer kaldes disse filer mapper) . Katalog dette er en tabelfil (lagret på samme disk som filerne), som gemmer filnavne, information om deres størrelse, tid sidste ændring, filattributter (egenskaber) osv. Hvis en mappe gemmer navnet på en fil, siges filen ofte at være "placeret" i den mappe. I virkeligheden er filen placeret (gemt) i et eller andet hukommelsesområde på computerens disk, ofte i form af flere dele, fragmenter på forskellige spor og diske af pakken (på frie områder af mediet). Relevant information er indeholdt i kataloget.

Hver disk kan have mange mapper - deres antal bestemmes af hensigtsmæssighed og er kun begrænset af diskkapaciteten. Dette gælder også antallet af filer i mappen. Alle moderne diskoperativsystemer giver oprettelsen af ​​et filsystem designet til at organisere datalagring og give adgang til det. Princippet om at organisere filsystemet er tabelformet. Overfladen på en harddisk betragtes som en tredimensionel matrix, hvis dimensioner er overflade-, cylinder- og sektornumre. En cylinder forstås som et sæt af alle spor, der tilhører forskellige overflader og er placeret i lige stor afstand fra rotationsaksen. Data om, hvor på disken en bestemt fil er optaget, gemmes i systemområdet på disken i specielle filallokeringstabeller (FAT-tabeller).

Rækkefølgen, hvori filer gemmes på disken, bestemmes af filsystemets organisation (organiseringen af ​​mapper og den måde, hvorpå placeringen og attributterne for filer er beskrevet i dem).

Hundredtusindvis af filer er gemt på diske, så for at lette søgningen er filer organiseret i form af et filsystem på flere niveauer, som har den struktur, der er vist på figuren.

Den indledende rodmappe indeholder undermapper på 1. niveau, til gengæld har hver af dem undermapper på 2. niveau osv. Hver mappe har et navn (uden udvidelse), og den kan registreres i en anden, forældre katalog. Det skal bemærkes, at mapper på alle niveauer ikke kun kan gemme mapper, men også filer.

Selvom filplaceringsdata faktisk gemmes i tabelform, præsenteres de for brugerens bekvemmelighed som hierarkisk træ strukturer, og alle nødvendige forbindelser leveres af operativsystemet.

Filomfatter følgende operationer udført under kontrol af operativsystemet:

    oprettelse og navngivning af filer;

    oprettelse og navngivning af mapper;

    omdøbning af filer og mapper;

    kopiering og flytning af filer mellem computerdrev og mellem mapper på det samme drev;

    sletning af filer og mapper;

    navigation gennem filstrukturen for at få adgang til en given fil eller mappe;

    håndtering af filattributter.

Formater eksekverbare filer

Den virtuelle hukommelse af en proces består af flere segmenter eller regioner hukommelse. Størrelsen, indholdet og placeringen af ​​segmenter i hukommelsen bestemmes både af selve programmet, for eksempel brugen af ​​biblioteker, størrelsen af ​​kode og data og formatet af den eksekverbare fil i dette program. På de fleste moderne operationsstuer UNIX systemer to er brugt standard format eksekverbare filer - COFF (Common Object File Format) og ELF (Executable and Linking Format).

En beskrivelse af eksekverbare filformater kan virke overflødige, men en forståelse af dem er nødvendig for at beskrive den grundlæggende funktionalitet af operativsystemkernen. Især giver oplysningerne gemt i eksekverbare filer i COFF- og ELF-formaterne dig mulighed for at besvare en række spørgsmål, der er meget vigtige for driften af ​​applikationen og systemet som helhed:

Hvilke dele af programmet skal indlæses i hukommelsen?

Hvordan skabes et område for uinitialiseret data?

Hvilke dele af processen skal gemmes i diskbytteområdet (særligt område diskplads, beregnet til midlertidig lagring af fragmenter af procesadresserummet), for eksempel ved udskiftning af sider, og hvilke kan læses fra en fil, hvis det er nødvendigt, og dermed ikke kræver lagring?

Hvor er programinstruktioner og data placeret i hukommelsen?

Hvilke biblioteker er nødvendige for at køre programmet?

Hvordan er den eksekverbare fil på disken, programbilledet i hukommelsen og diskbytteområdet relateret?

I fig. 2.3 er givet grundlæggende struktur hukommelse til processer indlæst fra eksekverbare filer i henholdsvis COFF- og ELF-formater. Selvom layoutet af segmenterne er forskelligt mellem de to formater, er de grundlæggende komponenter de samme. Begge processer har kode (tekst), data og staksegmenter. Som du kan se på figuren, kan størrelsen af ​​datasegmenterne og stakken ændre sig, og retningen af ​​denne ændring bestemmes af formatet på den eksekverbare fil. Stakstørrelsen ændres automatisk af operativsystemet, mens datasegmentstørrelsen styres af selve applikationen. Vi vil diskutere disse problemer i detaljer i afsnittet "Hukommelseallokering" senere i dette kapitel.

Ris. 2.3. Eksekverbare programbilleder i COFF- og ELF-formater

Datasegmentet inkluderer initialiserede data, som kopieres ind i hukommelsen fra de tilsvarende sektioner af den eksekverbare fil, og ikke-initialiserede data, som er fyldt med nuller, før processen begynder at udføres. Ikke-initialiserede data kaldes ofte et BSS-segment.

Fra bogen Photoshop CS2 og digital fotografering (Tutorial). Kapitel 1-9 forfatter Solonitsyn Yuri

Fra Linux til brugerbogen forfatter Kostromin Viktor Alekseevich

11.4.2. Skrifttype filformater I nyere tid, bogstaveligt talt hver grafik editor eller udgivelsesprogram brugte deres eget skrifttypefilformat, og som regel understøttede nogle programmer ikke andres formater. Over tid, antallet af formater, der faktisk blev brugt

Fra bog Adobe Photoshop CS3 forfatter Zavgorodniy Vladimir

Kapitel 4 Formater grafiske filer Til opbevaring raster grafik eksisterer et stort antal af forskellige formater filer. Blandt dem er der begge universelle formater, ikke bundet til nogen specifikt program, og specifikke "personlige" rasterformater

Fra bogen Adobe InDesign CS3 forfatter Zavgorodniy Vladimir

Grafiske filformater Adobe InDesign kan importere grafiske filer i forskellige formater - både de mest almindelige AI, BMP, EPS, GIF, JPEG, PDF, PSD, TIFF og de mere sjældne DCS, EMF, PCX, PICT, PNG, SCT (ScitexCT ), WMF.All grafiske formater og filer er adskilt efter typen af ​​information, de

Fra bogen Internet Solutions fra Dr. Bob af Swart Bob

1. Internet-filkodningsformater Internet-filformater kan opdeles i flere grupper. For det første filoverførselsformater via FTP, som uuencode/decode-skemaet blev udviklet til for længe siden, senere erstattet af xxencode/decode. Senere kom der et afslag til fordel for Base64 og MIME,

forfatter Raymond Erik Stephen

3.1.6. Binære filformater Hvis dit operativsystem bruger binære formater til vigtige data (f.eks Regnskaber brugere), er det sandsynligt, at traditionen med at bruge læsbar tekstformater for ansøgninger vil ikke blive genereret. I detaljer

Fra bogen Photoshop CS3: Træningskursus forfatter Timofeev Sergey Mikhailovich

Grafiske filformater Alle grafisk billede uanset om det er vektor eller raster, kan gemmes i en computer udelukkende ved at skrive det til separat fil. Hver fil har altid et bestemt format, hvilket formatet angiver

Fra bogen Kunsten at programmere til Unix forfatter Raymond Erik Stephen

3.1.6. Binære filformater Hvis et operativsystem bruger binære formater til følsomme data (såsom brugerkonti), er det sandsynligt, at der ikke vil være nogen tradition for at bruge læsbare tekstformater til applikationer. Flere detaljer vedr

Fra bog Netværksværktøjer Linux af Smith Roderick W.

Skrifttypefilformater Der er to typer skrifttyper: bitmap- og konturskrifttyper (konturskrifttyper kaldes ofte skalerbare skrifttyper). Disse skrifttyper har forskellige egenskaber og behandles forskellige veje. De fleste skrifttypeservere designet til at køre i

Fra bogen HTML 5, CSS 3 og Web 2.0. Udvikling af moderne hjemmesider. forfatter Dronov Vladimir

Fra bogen HTML 5, CSS 3 og Web 2.0. Udvikling af moderne hjemmesider forfatter Dronov Vladimir

Filformater og kodningsformater Der er lige så mange multimediefilformater, som der er grafiske filformater. Som med internetgrafik understøtter ikke alle webbrowsere multimedieformater, men kun få. (Jeg vil gerne have forfatteren

Fra bogen Computer Sound Processing forfatter Zagumennov Alexander Petrovich

Ad Lib-eksempel på SMP-lydfilformater.Anvendt format lyd kort Ad Lib Gold til at indlæse instrumentprøver i den. Understøtter 8/16-bit lyd, mono/stereo, 4-bit Yamaha ADPCM-komprimering. Filer i dette format har filtypenavnet . smp.Amiga SVXDenne filtype bruges på

Fra bogen Creating a Virus and Antivirus forfatter Guliev Igor A.

Appendiks A EXE-filoverskriftsformater Overskriftsformat af en almindelig EXE-fil I begyndelsen af ​​EXE-filen er den formaterede del af EXE-filoverskriften (tabel A-1) Dernæst kommer Relocation-tabellen, der består af lange pointere (offset: segment ) på dem

Fra Photoshop CS4-bogen forfatter Zhvalevsky Andrey Valentinovich

Grafiske filformater Et format er en måde at optage et billede på som en fil. Der er en del grafikfilformater, men i de fleste tilfælde bruges kun få. Hver af dem har egenskaber, så vi anbefaler

Fra bog Digital fotografering. Tricks og effekter forfatter Gursky Yuri Anatolievich

Filformater Der er mange måder at gemme billedinformation på og derfor mange filformater. Opmærksomhed! For at undgå tab af data skal du gemme dem i, når du arbejder med billeder TIFF-format eller i redigeringsprogrammets "native" format. JPEGВ

Fra bogen Windows 10. Hemmeligheder og enhed forfatter Almametov Vladimir