fil6怎么释放,FIL这几天暴涨是怎么回事

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

fil6怎么释放,FIL这几天暴涨是怎么回事

一、FIL这几天暴涨是怎么回事

1.目前,市场每天增加的可流通币是由矿工挖的FIl以及SAFT等6个月线性释放的FIL组成,4月15日SAFT他们的线性释放结束了,意味每天增加的可流通币,只有矿工挖的了。所以这个消息是指每天可流通币减少了(减少的是SAFT他们线性释放的部分)不影响矿工的产出与收益,反而对币价的稳定和积极意义。

2.以灰度为代表全球知名投资机构正式把Filecoin列入信托产品,意味着大型机构开始布局Filecoin,这会有很强的带动作用,其他中小型投资机构都会跟进。

3.每日新增算力大幅上升,新增算力成本为12.84F/T。大约5600人民币/T。昨天新增28.8P,1P=1024T;算力大幅上升,必然购买FIL抵押,供求变化,导致FIL上涨。反身性会进一步加强。

4.欧洲最大,世界第三大云存储服务商一中心化机房大火,损失惨重。集中储存数据显示出其弊端,加速了以IPFS为代表的分布式存储的发展。

5.以美国摩根为代表的财团投行进场区块链数字货币,已提交美证监会通过。而FIL又是唯一一个通过美证监会备案的区块链项目。

二、驱动里有病毒么

对于一个经常写程序的人来说,写驱动不是一件困难的事情。因为网络上有很多现成的

代码,要实现某个功能,直接 Ctrl+C和Ctrl+V就能解决问题。但是写出来了驱动能不能加

载进入内核就是另外一回事了,准确的说是能不能存在于别人的硬盘上就是另外一回事了。

因为很多杀毒软件(特别像360这种没技术含量的)见到后缀名为sys的文件就直接删除,

甚至连调用NtLoadDriver的机会都没有。对于一般的软件来说,给出一个声明说明一下解

决方法就算了。但是对于恶意程序,是不能给出声明的。于是很多恶意软件的作者另辟蹊径,

利用大公司写好的而且有数字签名的驱动来做坏事。

有人说,大公司做好的驱动怎么可能被用来做坏事呢?其实,这是很容易理解的事情。

很多安全类或者系统优化类的软件,甚至系统毫不相关的软件(比如:迅雷)都附带有驱动。

这些驱动都带有一定的通用性。q_lai_a_qu网友在其博客里说:“ComputerZ.sys……没事

逆了逆是鲁大师的驱动,发现这个驱动功能齐全,而且没有调用者验证!既可以读、写Msr

寄存器,也可以用in、out指令读写端口,而且char/short/long数据长度齐全!”。这个是

个人之言,可信度请自行揣度。下面说个可信度比较高的例子:曾经有病毒利用了360的

AntiRK.dll来删除杀毒软件的文件(请自行用谷歌搜索“360 antirk.dll”,会有惊喜发现。

AntiRK.dll虽然不是驱动,但也是被非法利用了)。破坏杀毒软件的病毒已经算是小儿科了,

其实利用某些驱动还能破坏硬件!我最近在笔记本上折腾硬件,“本友会”上的网友给我推

荐了几款软件:SetFSB、ThrottleStop、NvFlash、WinFlash。它们分别是修改CPU外频、设

置CPU倍频(可以调节CPU电压)、读写显卡BIOS和读写主板BIOS的软件。一言概括他们的特性,

就是它们都支持NT x86/x64,它们的驱动都有正规数字签名(特别是最后两个,分别带的是 NVIDIA和ASUS的数字签名)。

最为重要的是,他们的驱动没有加花加壳,没有校验调用者,

如果利用这几个驱动,加上一丁点的逆向知识,就能做出破坏性的病毒(以下摘自我在紫水

晶编程论坛的帖子):

1.SetFSB能调节处理器的外频,如果直接把外频调到600MHz,电脑会瞬间黑屏,可能

会损坏 CPU或主板;

2.ThrottleStop能调节 CPU的倍频(如果CPU没有锁倍频),如果直接把倍频调到 31,

电脑会瞬间黑屏,可能会损坏CPU或主板;ThrottleStop还能调节CPU的核心电压,如果

把CPU的核心电压调到3V,能直接烧毁CPU甚至主板;

3.NvFlash、WinFlash等软件能直接读写BIOS(显卡BIOS和主板BIOS),我们可以把

BIOS全部写零;

4.如果做病毒的话,先写坏显卡BIOS和主板BIOS,然后通过调节电压烧掉显卡和CPU

(有可能会连同主板一起损坏);

解决方案

由此可见,没有验证调用者的驱动实在是有着巨大的危害。我最近受学院委托,做一个

需要驱动的软件(那个驱动会被加上数字签名)。为了防止上述悲剧发生,我决定在正式写

驱动之前,先解决如何防止自己的驱动被恶意利用。以前我曾经在紫水晶编程论坛上问过这

个问题,网友的回答五花八门,不过大概是可以分成三类:第一类是信息验证,比如应用程

序发个信息给驱动来验证一下是“自己人”;第二类是加壳保护,比如给驱动和应用程序加

上极强难脱的壳,利用VMP加密通信部分(类似XueTr的做法);还有人提出混合应用,综

合第一类和第二类的做法。

这三种想法看似都不错,但是我认为不妥。第一种:别人只要把驱动全部逆向完毕就行

了;第二种:虽然VMP保护和加保护壳使得破解不容易,但是不是使破解变得不可能。而且

VMP和保护壳能使程序执行的效率降低,我不太喜欢。最可恶的是,杀毒软件对加了壳(甚

至包括 UPX)和 VMP的程序一律报毒,得不偿失。于是我想出了第三种思路:校验调用者的

特征。如果符合,就执行功能语句,否则不予执行。如何校验调用者的特征码呢?不少人想

到的是使用CRC32或者 MD5。使用它们不是不可以,不过我还有自己的想法。我的想法是自

己设计一套验证算法,它的规则如下:

1.获得调用者的EPROCESS

2.通过调用者的EPROCESS获得调用者的文件路径

3.获取调用者的文件全部内容,放到字节数组buff里

4.把 buff里所有的元素依次相加减(fb1+ fb2- fb3...),得到y1

5.把 buff里所有的元素依次异或(0 XOR fb1 XOR fb2 XOR fb3...),得到y2

把 y1和 y2与已经计算出来的数值对比,如果都相同则执行功能代码,如果不相同则不

执行功能代码

获得调用者的EPROCESS直接用 PsGetCurrentProcess()就行了,获得调用者的文件路

径比较麻烦,大家可以使用我以前向高手购买的代码(已经封装为函数,方便调用):

//依据 EPROCESS得到进程全路径

VOID GetFullPathByEprocess( ULONG eprocess, PCHAR ProcessImageName)

{

ULONG object;

PFILE_OBJECT FileObject;

UNICODE_STRING FilePath;

UNICODE_STRING DosName;

STRING AnsiString;

FileObject= NULL;

FilePath.Buffer= NULL;

FilePath.Length= 0;

*ProcessImageName= 0;

//Eprocess->sectionobject(offset_SectionObject)

if(MmIsAddressValid((PULONG)(eprocess+offset_SectionObject)))

{

object=(*(PULONG)(eprocess+offset_SectionObject));

//KdPrint(("[GetProcessFileName] sectionobject:0x%x\n",object));

if(MmIsAddressValid((PULONG)((ULONG)object+0x014)))

{

object=*(PULONG)((ULONG)object+0x014);

//KdPrint(("[GetProcessFileName] Segment:0x%x\n",object));

if(MmIsAddressValid((PULONG)((ULONG)object+0x0)))

{

object=*(PULONG)((ULONG_PTR)object+0x0);

//KdPrint(("[GetProcessFileName]

ControlAera:0x%x\n",object));

if(MmIsAddressValid((PULONG)((ULONG)object+0x024)))

{

object=*(PULONG)((ULONG)object+0x024);

if(NtBuildNumber>= 6000) object=((ULONG)object&

0xfffffff8);

//KdPrint(("[GetProcessFileName]

FilePointer:0x%x\n",object));

}

else

return;

}

else

return;

}

else

return;

}

else

return;

FileObject=(PFILE_OBJECT)object;

FilePath.Buffer= ExAllocatePool(PagedPool,0x200);

FilePath.MaximumLength= 0x200;

//KdPrint(("[GetProcessFileName]

FilePointer:%wZ\n",&FilePointer->FileName));

ObReferenceObjectByPointer((PVOID)FileObject,0,NULL,KernelMode);

RtlVolumeDeviceToDosName(FileObject-> DeviceObject,&DosName);

RtlCopyUnicodeString(&FilePath,&DosName);

RtlAppendUnicodeStringToString(&FilePath,&FileObject->FileName);

ObDereferenceObject(FileObject);

RtlUnicodeStringToAnsiString(&AnsiString,&FilePath, TRUE);

if( AnsiString.Length>= 216)

{

memcpy(ProcessImageName, AnsiString.Buffer, 0x100u);

*(ProcessImageName+ 215)= 0;

}

else

{

memcpy(ProcessImageName, AnsiString.Buffer, AnsiString.Length);

ProcessImageName[AnsiString.Length]= 0;

}

RtlFreeAnsiString(&AnsiString);

ExFreePool(DosName.Buffer);

ExFreePool(FilePath.Buffer);

}

以上代码需要三个硬编码,分别是NtBuildNumber(系统版本号)、EPROCESS中的

SectionObject项和UniqueProcessId项的偏移。我测试的操作系统是Windows 2003。所以

我在代码里如下定义:

#define offset_SectionObject 0x124

#define offset_UniqueProcessId 0x94

ULONG NtBuildNumber=3790;

获得进程路径后就校验特征码。由于流程已经说清楚了,所以直接给出代码:

VOID CalcChar(PUNICODE_STRING logFileUnicodeString, LONG*XorChar, LONG

*AnSChar)

{

OBJECT_ATTRIBUTES objectAttributes;

IO_STATUS_BLOCK iostatus;

HANDLE hfile;

NTSTATUS ntStatus;

FILE_STANDARD_INFORMATION fsi;

PUCHAR pBuffer;

ULONG i=0,y1=0,y2=0;

//初始化 objectAttributes

InitializeObjectAttributes(&objectAttributes,

logFileUnicodeString,

OBJ_CASE_INSENSITIVE,//对大小写敏感

NULL,

NULL);

//创建文件

ntStatus= ZwCreateFile(&hfile,

GENERIC_READ,

&objectAttributes,

&iostatus,

NULL,

FILE_ATTRIBUTE_NORMAL,

FILE_SHARE_READ,

FILE_OPEN,//即使存在该文件,也创建

FILE_SYNCHRONOUS_IO_NONALERT,

NULL,

0);

if(!NT_SUCCESS(ntStatus))

{

dprintf("The file is not exist!\n");

return;

}

//读取文件长度

ntStatus= ZwQueryInformationFile(hfile,

&iostatus,

&fsi,

sizeof(FILE_STANDARD_INFORMATION),

FileStandardInformation);

dprintf("The program want to read%d bytes\n",fsi.EndOfFile.QuadPart);

//为读取的文件分配缓冲区

pBuffer=(PUCHAR)ExAllocatePool(PagedPool,

(LONG)fsi.EndOfFile.QuadPart);

//读取文件

ZwReadFile(hfile,NULL,

NULL,NULL,

&iostatus,

pBuffer,

(LONG)fsi.EndOfFile.QuadPart,

NULL,NULL);

dprintf("The program really read%d bytes\n",iostatus.Information);

//异或计算

for(i=0;i<iostatus.Information;i++)

y1=y1^(LONG)(*(pBuffer+i));

*XorChar=y1;

//加减计算

for(i=0;i<iostatus.Information;i++)

{

if(i%2==0)

y2=y2+(LONG)(*(pBuffer+i));

else

y2=y2-(LONG)(*(pBuffer+i));

}

*AnSChar=y2;

//关闭文件句柄

ZwClose(hfile);

//释放缓冲区

ExFreePool(pBuffer);

}

接下来就要调用了。我们需要编写一个函数VerifyCaller,在此函数里有两个值需要

固化在驱动里,就是合法调用者的两个特征值。为了方便计算这两个特征值,我特地写了个

应用程序,核心代码如下:

Option Explicit

Private Function ReadFile(ByVal strFileName As String, Optional ByVal

lngStartPos As Long= 1, Optional ByVallngFileSize As Long=-1) As Byte()

Dim FilNum As Long

FilNum= FreeFile

Open strFileName For Binary As#FilNum

If lngFileSize=-1 Then

ReDim ReadFile(LOF(FilNum)- lngStartPos)

Else

ReDim ReadFile(lngFileSize- 1)

End If

Get#FilNum, lngStartPos, ReadFile

Close#FilNum

End Function

Private Function WriteFile(ByVal strFileName As String, bytData() As Byte,

Optional ByVal lngStartPos As Long=-1,Optional ByVal OverWrite As Boolean=

True)

On Error GoTo erx

Dim FilNum As Long

FilNum= FreeFile

If OverWrite= True And Dir(strFileName)<>"" Then

Kill strFileName

End If

Open strFileName For Binary As#FilNum

If lngStartPos=-1 Then

Put#FilNum, LOF(FilNum)+ 1, bytData

Else

Put#FilNum, lngStartPos, bytData

End If

Close#FilNum

erx:

End Function

Private Sub Command1_Click()

Dim buff() As Byte, i As Long, y As Long, ub As Long

'text1.text is the file name

buff= ReadFile(Text1.Text, 1,-1)

ub= UBound(buff)

'calc xor char

y= 0

For i= 0 To ub

y= y Xor buff(i)

Next

Text2.Text= CLng(y)

DoEvents

'calc add/sub char

y= 0

For i= 0 To ub

If i Mod 2= 0 Then

y= y+ CLng(buff(i))

Else

y= y- CLng(buff(i))

End If

Next

Text3.Text= CLng(y)

End Sub

Private Sub Form_Load()

Me.Icon= LoadPicture("")

End Sub

驱动里的 VerifyCaller代码如下:

LONG VerifyCaller(void)

{

PEPROCESS cur_ep;

char cur_pp[260];

char*nt_cur_pp;

ANSI_STRING asCur_pp;

UNICODE_STRING usCur_pp;

LONG xorc, ansc;

cur_ep=PsGetCurrentProcess();

GetFullPathByEprocess((ULONG)cur_ep, cur_pp);

//在文件名前面加上\??\

nt_cur_pp=cs("\\??\\",cur_pp);

DbgPrint("%s",nt_cur_pp);

RtlInitAnsiString(&asCur_pp, nt_cur_pp);

RtlAnsiStringToUnicodeString(&usCur_pp,&asCur_pp, TRUE);

DbgPrint("%wZ",&usCur_pp);

CalcChar(&usCur_pp,&xorc,&ansc);

DbgPrint("XorChar:%ld; AnSChar:%ld",xorc,ansc);

//这个就是事先算好的合法程序的特征码,【必须】固化在驱动里!

if(xorc==186&& ansc==136176)

return 1;

else

return 0;

}

在 DispatchIoctl函数的每个功能执行之前,都调用VerifyCaller()校验一下调用者:

switch(uIoControlCode)

{

case IOCTL_VERIFY:

{

DbgPrint("[MyDriver] DispatchIoctl- IOCTL_VERIFY");

if(VerifyCaller()==1)

DbgPrint("[MyDriver]{IOCTL_VERIFY} Function code run now!");

else

DbgPrint("[MyDriver]{IOCTL_VERIFY} You're illegal caller!");

status= STATUS_SUCCESS;

break;

}

//下面省略

}

运行测试

3.首先把合法的调用者,非法的调用者(用eXeScope随便把合法的调用者Patch一下,

比如删掉程序的版本信息)和驱动复制到虚拟机

4.用合法的调用者来加载驱动并执行

5.用非法的调用者来加载驱动并执行

6.对比以上两者在DbgView的输出

调用者合法时:

调用者非法时:

写在最后

写完这篇文章,我必须再次重申:只有当驱动程序携带正式数字签名时,验证调用者的

代码才有使用价值。为什么这么说呢?因为别人无法patch带有正式数字签名的驱动(一旦

驱动被 patch,签名就失效了,就像被破处的女人,不值钱了。这个比喻虽然粗俗,但是很

恰当)。而没有加上签名的驱动,本来就没有使用价值。即使别人要使用,直接把驱动扔到

IDA里,什么代码都出来了。

三、FIL代币是怎么分配的有什么标准吗

通过官方通证白皮书可以得到:Filecoin的代币为FIL,一共有20亿枚,还有投资者剩余的0.35亿还没有披露该怎么样释放矿工奖励:14亿枚(70%,挖矿获取)开发团队:3亿枚(15%,6年线性释放)投资者:1.65亿枚(官方最新更新数据),按照折扣不同,也就会有不同的释放周期;分别有:6个月(0%),1年(7.5%),2年(15%),3年(20%)基金会:1亿枚(5%,6年线性释放)(图一)开发团队、基金会、投资者每日释放量,来源:IPFS原力区,2020-08-10开发团队和基金会都为6年线性释放,但是现在还不知道具体释放细则是怎样的,所以暂时定位平均每天均等释放,分别每天释放13.69863万枚和4.5662万枚;投资者披露数据有所调整,以1.639亿枚为准,现在的具体情况投资者分布也不是很了解,所以还是以平均每天均等释放,每天释放15.0684万枚。总体来说,现在能够大概预测投资者、基金会和开放团队日总释放量是13.69863万枚+4.5662万枚+15.0684万枚=33.33万枚。

我们通过以上关于FIL代币是怎么分配的有什么标准吗内容介绍后,相信大家会对FIL代币是怎么分配的有什么标准吗有一定的了解,更希望可以对你有所帮助。

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/biquanzx/4005.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年11月02日
下一篇 2024年11月02日

相关推荐

  • 扣除手续费怎么算,fcoin创始人

    一、fcoin创始人 fcoin创始人为张建。张健于2018年5月24日正式上线加密数字货币交易所FCoin,发行平台币FT,推出了“交易即挖矿,持币即分红”的全新模式。 FCoin曾宣布于2020年2月10日23:50(GMT+8)临时停机维护,据张健介绍,FCoin目前面临的最大问题不是系统无法恢复的问

    2025-05-01 00:55:01
    2 0
  • 区块链的币目前有多少种,区块链游戏炒币怎么玩,区块链炒币是什么

    一、区块链只能发币炒币说法不正确说法不正确。区块链不仅仅用于发币炒币。是一种分布式账本技术,可以应用于金融、供应链管理、医疗保健等领域,提高交易效率、降低成本,改善信任和协作方式。区块链的核心特点是去中心化和不可篡改的账本记录,应用潜力远远超出了发币炒币的

    2025-04-30 22:55:02
    3 0
  • 怎么查钱包地址币的数量,持币地址怎么查询

    一、在aicoin怎么看持币地址怎么看题主是否想询问“在AICoin上怎么看某个数字货币的持币地址”?可以按照以下步骤进行:1、登录AICoin网站,并进入相应的数字货币交易页面。2、在页面上方找到市场或交易对等选项,选择需要查询的数字货币种类。3、在页面下方找到“深度”、“

    2025-04-30 22:00:01
    4 0
  • 区块链币是什么,区块链自媒体怎么变现(区块链怎么盈利)

    一、区块链自媒体怎么变现(区块链怎么盈利)区块链是通过什么样的方式快速赚钱?赚钱的话,建议可进行以下的几种方式进行赚钱:3,做矿场挖矿,这个是目前为止我认为最稳定的回报但首先得拥有属于自己的矿机,再去选择矿场,记好自己的账号密码地址,然后给矿机插上电和网线就

    2025-04-30 18:00:01
    4 0
  • 区块链开发,区块链系统怎么设计数据库,区块链如何设计

    一、区块链系统怎么设计数据库,区块链如何设计区块链开发学什么数据库比较好?区块链是去中心化的系统,但是由于区块链中的区块能保存的数据有限,因而区块链+数据库(云存储、分布式数据库等)这种形式是在区块链项目中应用比较多的一种设计。在这种前提下,可以选择的数据库

    2025-04-30 16:00:01
    12 0
  • 怎么做区块链,如何学习区块链技术

    一、区块链需要哪些技术区块链技术主要依赖于分布式账本、加密算法、共识机制和智能合约等核心组件。1.分布式账本:区块链的基础是分布式账本技术,它是一个去中心化的数据库,记录所有交易历史并分布在多个网络节点上。每个节点都拥有完整的账本副本,这确保了信息的透明性和

    2025-04-30 14:55:01
    6 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载