Forskare vid Kumatori Accelerator-driven reaktor Test Facility (KART) (Economist artikeln om du prenumererar) har upptäckt ett sätt att med våld förfall radioaktivt avfall (neptunium, plutonium, americium, curium, etc.) till mindre -lethal isotoper av element som bara är radioaktiva under många år, i stället för tiotusentals eller tiotals miljoner år. I huvudsak de slam radioaktivt avfall med en neutronstråle som tillför massan till det radioaktiva avfallet, vilket får den att transmutate in ett annat element, vilket i sin tur gör att den avklinga snabbare.
Detta fick mig att tänka, om du kan smälla ett element med en neutronstråle att skapa ett nytt element, ja, kanske du kan göra samma sak till en fil för att undvika "irriterande Anti-Virus"? Tja, verkar det du kan. Ett bra exempel på detta är helige fader Morfin. Morfin fungerar genom att ta sin egen PE lastare. Detta gör det möjligt att sätta hela källbilden till .text delen av nya PE-fil. Den innehåller också en polymorf motor som alltid skapar helt annorlunda decryptor för den nya PE-filen varje gång Morfin körs.
Morfin släpptes i mars 2004 och de stora Antivirus företagen inte har en metod för generiskt detekterings "Morphined" körbara tills Q4 2005. Den privata versionen av morfin fortfarande skapar verisons av binärfiler som är osynligt för alla Antivirus maker på marknaden. Andra idéer är helt enkelt att ordna den körbara så att det gör essentally "samma sak", men ändra underliggande instruktioner av binära. Ett exempel skulle vara att flytta värdet i EDX registret i eax registret. Typiskt program skulle göra en mov EDX att eax instruktion åstadkomma detta.
Tja, en push eax följt av en pop EDX effektivt göra samma sak som en mov EDX, EAX --- ta värdet i EDX och lägg den i EAX. Du ser var jag kommer hit, kan vi helt ändra statiska tecknandet av binära i denna process. Men, gör det att fungera .... .... Tja, inte riktigt. Om jag tar en 3 byte instruktion (mov EDX, EAX) och ersätta den med två 2 byte instruktioner (tryck EAX och pop EDX), har jag ändrat förskjutningen inom programmet med ett byte. Detta innebär att varje hopp, kommer varje samtal i programmet vara avstängd med ett byte, vilket innebär att programmet inte längre att fungera.
Tre möjliga lösningar på detta problem: 1. Endast ersätta lika storlek instruktioner 2. Räkna alla hopp och samtal efter inmatningen eller borttagningen av det totala antalet byte. 3. Skriv en egen trojan /virus, eller vad vi försöker åstadkomma (inte i fok