Virus KillerPo wczytaniu, VK (tak w skrócie nazywam swój program) sprawdza, czy w pamięci komputera znajduje się wirus. Jeśli go znajdzie, unieszkodliwia go, zmieniając wektor procedury CLOSE tak, aby wskazywał miejsce w procedurze wirusa, oznaczone przez JBW etykietą GOCL. Sprawia to, iż po wywołaniu procedury CLOSE wirus skacze do procedury CLOSE oryginalnego handlera. Po wczytaniu kopiowanego programu VK - sprawdza, czy jest on zawirusowany. Jeśli tak jest, to wówczas zmniejsza o długość wirusa wartość słowa, zawierającego długość aktualnie wczytanego pliku. Po zakończeniu tej operacji VK ponownie sprawdza zawirusowanie pliku. Ma to na celu całkowite odwirusowanie pliku, do którego wirus dołączył swój kod kilkakrotnie. Odwirusowane pliki najlepiej zapisać na tej samej dyskietce, pod tą samą nazwą. Powoduje to jednoczesne skasowanie zawirusowanego pliku. Prezentowany przeze mnie program został połączony z "Relocatorem 1.1", w celu zwiększenia pojemności bufora. Aby otrzymać działający program, należy poniższy listing przetworzyć przy pomocy "Zgrywusa+", który drukujemy na stronie 24. 1000 REM *--------------------------* 1002 REM : VIRUS KILLER : 1004 REM : autor: K. Kowalski : 1006 REM : (c) 1993 Tajemnice ATARI : 1008 REM *--------------------------* 1010 DATA ffff00801d83208b8120f48020 1020 DATA aa80a202a5d005d1f001e82072 1030 DATA 8030ecde4803d00ea5d005d1f0 1040 DATA 1da90085d085d1f0d9a5d005d1 1050 DATA f0062076814c038020558120c6 1060 DATA 814c03806c0a00a000ca300ab9 1070 DATA 1482c8c99bd0f8f0f38aa2009d 1080 DATA 480318986d08829d4403a9009d 1090 DATA 49036d09829d4503a9099d4203 1100 DATA 4c56e4204280a200a9059d4203 1110 DATA ad06829d4403ad07829d45039d 1120 DATA 49034c56e42092808a48209b80 1130 DATA 684a4a4a4a290f0930c93a9002 1140 DATA 690699af828860a5d0a6d1ac0e 1150 DATA 82208e8038ade502ed0a8285d2 1160 DATA ade602ed0b8285d3aaa5d2ac10 1170 DATA 82208e80a200204280a2064c42 1180 DATA 802056e4100cc088f010a60420 1190 DATA 4280a0ff60a205a5d005d1f0f2 1200 DATA a00160a210a90c9d42032056e4 1210 DATA a9038d0fd29830db60a2109d4a 1220 DATA 03a9039d4203a03acc1f83f007 1230 DATA cc2083f002a900186d0c829d44 1240 DATA 03a9006d0d829d4503ad0fd229 1250 DATA 080a0a0a0a9d4b032056e430a2 1260 DATA bd4a0309039d4203ad0a829d44 1270 DATA 03ad0b829d45039860a9042007 1280 DATA 813019a5d29d4803a5d39d4903 1290 DATA 20d880300abd480385d0bd4903 1300 DATA 85d160a908200781300da5d09d 1310 DATA 4803a5d19d490320d88060a930 1320 DATA 0d01038d1c83a90085d085d1a2 1330 DATA 01204280bd1a03c944f008e8e8 1340 DATA e8e02490f260a906dd1c03d0f8 1350 DATA a96d8d9d06ce4402a200204280 1360 DATA a2074c428018ad0a8265d085ce 1370 DATA ad0b8265d185cf38a5cee90c85 1380 DATA ceb002c6cfa00bb1ced90f83d0 1390 DATA 1b88d0f6a200204280a2082042 1400 DATA 8038a5d0e9b785d0b002c6d14c 1410 DATA c68160001e83148296831b8309 1420 DATA 00180000009b20111212121212 1430 DATA 12121212121212121212121212 1440 DATA 12121212121212121212121212 1450 DATA 1212052020207c564952555320 1460 DATA 4b494c4c455220312e30206279 1470 DATA 20415441524920534f4c444945 1480 DATA 527c2020201a12121212121212 1490 DATA 12121212121212121212121212 1500 DATA 12121212121212121212121212 1510 DATA 039b536f757263653a9b546172 1520 DATA 6765743a9b492f4f206572726f 1530 DATA 72219b4f7574206f66206d656d 1540 DATA 6f72799b5573656420242e2e2e 1550 DATA 2e206279746573206f6620242e 1560 DATA 2e2e2e9b564952555320772070 1570 DATA 616d6965636920756e6965737a 1580 DATA 6b6f646c6977696f6e792e9b56 1590 DATA 495255532077206b6f70696f77 1600 DATA 616e796d20706c696b7520736b 1610 DATA 61736f77616e792e9be202e302 1620 DATA 0406e202e302040644303a9683 1630 DATA 4d84207581a90085cfade70285 1640 DATA d48de002ade80285d58de10238 1650 DATA a90085d2e5d485d0a98085d3e5 1660 DATA d585d1a000f0033866cfa5d2c9 1670 DATA 96a5d3e98390016024cf706330 1680 DATA 27b1d285ce91d4204184aaf0e0 1690 DATA c920f017c940f0dbc960f0d729 1700 DATA 0dc908f0d190418a291fc909f0 1710 DATA 3ab1d2c8c900b1d288e9809012 1720 DATA b1d2c8c997b1d288e983b006a5 1730 DATA d0a6d1900724cf30a3a900aa85 1740 DATA d686d738b1d2e5d691d4204184 1750 DATA b1d2e5d74c3984b1d291d42041 1760 DATA 844cc583e6d2d002e6d3e6d4d0 1770 DATA 02e6d560e202e3029683 Krzysztof Kowalski
|