Hi,
Manchmal geht das wohl, daß das Problem behoben werden kann.
Nein, das funktioniert nur, und wirklich und ausschließlich nur, wenn das Originalprogramm bekannt ist.
Reparaturversuche sind also recht witzlos.es funktioniert immer dann, wenn der programmierer des viruses weenigstens sauber gearbeitet hat,
Für wen sauber? Für die Zwecke der Beseitigung oder für die Zwecke des Virus' also eben _nicht_ entdeckt zu werden und _nicht_ entfernt werden zu können?
d.h., der virus das programm befällt, ohne relevanten programmcode des programms zu überschreiben. wenn der virus einen bug hat und teile des programmcodes überschreibt, kann dieser nur wiederhergestellt werden, wenn die prüfsumme des programms nicht auch vom virus angepasst wurde und der überschriebene programmcode so klein war, dass mit hilfe der prüfsumme der orginalcode noch zu rekonstruieren ist.
Eine Prüfsumme kann nur prüfen, ob etwas geändert wurde aber nicht was genau. Und wie Du selebr sagtest: bei ungeschickter Wahl des Prüfsummenalgorithmus' kann der Virus das Programm entsprechend anpassen. Das muß er noch nicht einmal selber fummeln, dafür gibt es fertiges im Netz. Da das Programm immer gleich ist und auch im Vornherein beziehbar, kann der Chracker ganz gemütlich zu Hause die Anzahl der einzufügenden Noops (na, etwas geschickter ist das schon geregelt, ist hier aber egal) herausfinden lassen.
ist der virus bugfrei und beschädigt das wirtsprogramm beim befallen nicht, kann der virenscanner aufgrund der kenntnis über den befallsmechanismus des viruses diesen auch wieder aus dem programmcode entfernen.
Da er den genauen Programmcode nur kennt, wenn er den gesammten Code vergleichen kann. Prüfsumme funktioniert ja nicht 100% und Viren sind im Gegensatz zum Programm so klein, das selbst die minimale Unsicherheit bei guten Prüfsumen schon ausreicht, dieses Vorgehen durchfallen zu lassen.
die meisten viruse hängen ihren programcode an das ende des befallenen programmes mit an und verbiegen die entrypoint-adresse, so dass zuerst der virus aus der datei gestartet wird und dieser dann den orginalen entrypoint anspringt und damit das programm startet.
Na, das ist aber schon lange her, das wird heutzutage sehr viel geschickter gehandhabt.
eine weitere möglichkeit wäre, den virencode in einer eigenen datei abzulegen und diese beim starten des programmes mit aufzurufen.
Ja, auch das ist möglich, erfordert aber eine zusätzliche Datei, ist also relativ einfach festzustellen.
einige viren nutzen auch bereiche im wirtsprogramm für den befall, die beim compilieren entstehen und keinen auszuführenden code enthalten (opcode: nop = 90). diese art des kann man nicht an einer geänderten gesamtgrösse des wirtsprogramms feststellen.
Ja, genau _so_ einfach geht das schon lange nicht mehr.
Man kann also Viren nicht aus Programmen entfernen, ohne das Originalprogramm zur Hand zu haben.
Wenn man also Bedarf nach Binaries hat, oder nur Binaries zu haben sind, dann sind diese aus zuverlässiger Quelle mit zuverlässigen Mitteln zu beziehen. Ideal, wenn die Virenfreiheit schriftlich garantiert wird und auch ausreichenden Deckung für evt Haftung vorhanden ist.
so short
Christoph Zurnieden