Hozzon létre egy pe-vírus №1
Vírusok váltak szerves része a számítógép (és nem csak) az élet. Ahhoz, hogy ezt a cikket írni késztetett, amit véleményem, nem elég információt az interneten, a legtöbb teljesen közlése minden írás folyamata, a vírus. Legutóbb azt kell írni egy egyszerű samorasprostranyayuschuyusyu program, amely nem gyakorol semmilyen káros hatása a rendszer, de ugyanakkor használta volna a vírus terjedési mechanizmusok. Azt fogja mondani, hogy miután az összes internetes tájékoztatást a témában. És még ott a forrás az ilyen programok. De mind a hosszú és nehéz megérteni, ha azt akarjuk, hogy tegyen valamit magának. Tehát bizonyos szempontból többé-kevésbé ismert, szeretném megosztani veletek - az olvasók - információkat.
Ez a cikk meg fogja vizsgálni az írás folyamata egyszerű vírus fertőzi a futtatható fájlokat méret PE (Portable Executable) EXE. Emellett írható orvos program, amely megkeresi a megadott könyvtárat és az összes alkönyvtárat fertőzött fájlok által vírus.
Ha nem ért egyet, kérjük, ne olvassa ezt a cikket, és távolítsa el az összes meglévő média.
Röviden PE méret
Tehát, ha belenézel egy tipikus futtatható fájl, látni fogjuk a következő szerkezetű egyszerűsített formában:
PE-fájlt a nagyon korai (MZ-header) tartalmaz egy programot a DOS. Ez a program az úgynevezett csonk, valamint a szükséges kompatibilitást a régebbi operációs rendszereket. Ha fut a PE-fájlt a DOS operációs rendszer, vagy OS / 2, akkor megjelenik a konzol szöveg, amely tájékoztatja a felhasználót, hogy a program nem kompatibilis ezzel a verziót az operációs rendszer. Amikor összeköti a programozó megadhat bármilyen program DOS, bármilyen méretben. Miután ez a program DOS-szerkezet, amely az úgynevezett IMAGE_NT_HEADERS (PE-fejléc). Ez a szerkezet a következőképpen jellemezhető:
IMAGE_NT_HEADERS első eleme - az aláírásra PE-fájlt. PE-fájlokat kell állítani «PE \ 0 \ 0" . Következik egy úgynevezett fájl fejlécét, és definiáljuk IMAGE_FILE_HEADER. A fájl fejléce tartalmazza a leggyakoribb tulajdonságokat a PE-fájlt. Miután a fájl fejlécében opcionális fejléc - IMAGE_OPTIONAL_HEADER32. Ez tartalmaz konkrét paramétereit PE-fájlt. táblázat szakaszokat (Object táblázat) után kezdődik opcionális fejléc. Információkat tartalmaz az egyes részekben. A táblázat után a szakaszok az eredeti adatokat a szakaszok. Végén a PE-fájl segítségével rögzíthetünk különböző információkat, és ez nem fogja megváltoztatni a működését a program (ha nincs jelen ellenőrző vagy valami ilyesmi).
Módszerek a fertőzés PE
Eddig még nem mondott semmit arról, hogy milyen módon fogjuk megfertőzni a fájlt, mert közülük több:
- A bevezetés a PE-header
- A bővítés az utolsó szakasz
- Egy új szakasz
A mi oktatási megközelítés a vírus az egyik legegyszerűbb módja a bővülő az előző részben. Azt kell mondanom, hogy a nagy hátránya az utolsó két módszer az, hogy a cél fájl mérete jelentősen nő a fertőzés során, mivel Mi hozzáfűzi a vírus kódját a fájl végére. Bár mondjuk, hogy a második módszer lehet perverz, hogy tud írni egy üres overlay végén az utolsó rész, így a fájl mérete kismértékben változhat, vagy nem változott. Az első módszer nem változtatja meg a fájl méretét, de a hátránya ennek a módszernek - nem mindig lehet találni egy EXE, úgy, hogy a cím volt elég hely a kódot a vírus. Vagy meg kell megfertőzni egy nagyon kis számú program, vagy súlyosan korlátozza a lehetőségeket a vírus, mert csökkenti a kód méretét. Eljárás, hogy egy új szakasz egy kicsit bonyolultabb, így nem kell figyelembe venni. Csak azt tudom mondani, hogy a fájl néhány új szakasz jobban néznek ki, gyanús.
Számunkra, hogy írjon a vírus ahhoz, hogy tudja, hogy ha egy fájl fertőzött, meg kell
megváltoztatni bizonyos értékek (mi - olvasható alább) a PE-fejléc, változtassa meg a leíró az utolsó rész, adja hozzá a kódot a mi vírus végén az utolsó rész, és változtassa meg a belépési pont a program, hogy ellenőrizzék a futtatás után eltelt első a vírus, és csak akkor - maga a program. Az alábbi ábrán a piros szín jelzi a részek a fájlt kell módosítani a fertőzés során:
Számoljuk ki a delta ofszet
Ahhoz, hogy a vírus munkákat kell írni, bazonezavisimom kódot. Ebben a tekintetben, van egy másik fogalom - delta ellensúlyozni.
Sok adatbázis keresési módszereket kernel32, amelyek közül az egyik - a használata a strukturális mechanizmus kezelésére kivételek PSZ (Structured Exception
Kezelés).
Így a delta offset általunk azonosított. Most bemutatjuk a Keresési kód kernel32:
Most nézzük meg néhány területen PE-fejléc, szükségünk van:
De amikor keresi a megfelelő funkció nem fogjuk összehasonlítani a neveket és a hash-nevek (pre-kiszámításánál ezt az értéket minden kívánt nekünk funkció). Ie Tegyük fel, hogy már találtak néhány nevet a névtábla kernel32. Kiszámítjuk a hash értéket a név, és hasonlítsa össze a kívánt értéket a hash tábla hash. Ha a mérkőzés -, akkor talált. Ha nem - keres
továbbá:
De hogyan számíthatók ki előre a hash értékét egy adott név? Erre írtam egy kis programot Visual C ++ inline szerelvény egy linket, amely megtalálható a végén a cikk (forráskód).
A teljes szerkezet a vírus kódját
Mindez csak a kezdete az írás folyamata a vírus. Most kezdődik a móka. Fogunk írni egy vírus MASM. Miért én inkább ezt a csomagot? Egyszerűen szeretem őt.
Írjuk fel az összes fájlt main.asm, amely tartalmazni fogja a kód egy részét:
Nézzük a kódot, akkor adja meg legalább két kérdést:
- Miért van szükség egy makró szText?
- Miért csatlakozni kernel32.lib könyvtár és hívja a ExitProcess funkció megkezdése előtt tag?
Itt található az ezt a cikket egy ismerősének: