CSK.Blog--个人原创Weblog

利用动态修改API函数创建“同名”文件及其利用

作者该文章保留对文章的版权,转载时请注明出处。 文章中需要WinFileKiller工具,你可以在我的blog:blog.csksoft.net找到说明文章和下载地址 工具下载地址:[url]http://www.csksoft.net/blog/post/11.html[/url] 不要被标题那拗口的文字弄晕了,不过用这种办法可以做很多事情哦~~ 首先要从和一个朋友的对话说起:他曾经在用FlashGet下载文件时候突然发些在桌面上产生了类似于这样的两个文件 download.rar download.rar. 注意第二个文件名后面有一个点"."。我一开始也没觉得有什么大不了的,但后来他对我说这两个文件中只能删除其中一个,假设删除了"download.rar."。这是奇怪的事情发生了:留下的“download.rar”或自动更名成为“download.rar.”。然后就删不掉了。 我不知道为什么FlashGet会产生这样的文件,但当时我的朋友正苦于想办法删除那两个文件,于是我想到了以前发布过的WinFileKiller,就是那个用来创建con.txt的工具(请参见[url]http://www.csksoft.net/blog/post/11.html[/url]),毕竟那个是通过修改内核进行工作的,可能管用,于是就传给他,用里面的删除功能。果然有效!文件被删掉了。 后来经过我研究,WinFileKiller还可以创建这样的文件:即文件名以"."作为结尾。同样这样的文件是用正常办法无法删除的。 不过如果问题就仅仅如此简单那也就罢了。下面就来说说这个以"."结尾的文件的一些有趣的问题: 除了上面所说的无法删除和自动更名以外,如果你在创建一个前面文件名字相同,但没有最后的"."的文件,比如: file.txt file.txt. 你会发现它们2者均能正常访问,如果用记事本修改其中一个的数据,那个打开另外一个文件时,会发现显示出来的数据是相同的! 当然还有更有趣的现象,那就是能创建出“同名”的文件(对于这个的解释后面会详细说明) 这是在windows explorer里面显示的情况: 上面的图绝对不是我处理出来的哦。其实只要在explorer里面把test1.txt.改名为test1.txt即可。但我是给重名文件加上引号的,因为这种重名现象很不稳定,你只要刷新下explorer显示就会回到前面的状态了。 但我不是要重点说这个的,现在就来分析下产生这些现象的原因吧。 首先在explorer中是无法直接创建以"."结尾的文件的:比如我要创建"file.txt.",如果起先没有"file.txt"这个文件,那么当你在创建文件输入文件名"file.txt."以后,系统会自动为你改名,你实际就创建了"file.txt"。对于原先存在"file.txt"的情况,当你要创建"file.txt."以后,系统就会提示你有同名文件存在。 可以说是系统把最后面的"."给略去了,这样正好能解释上面的现象。那为什么要略去呢?我们来研究下文件系统吧。 一般文件名分为标题名和扩展名两部分,这大部分人是知道的,比如上面的file.txt。他的标题名是file,扩展名是txt。这没问题,那么请问中间的"."属于什么呢?可能只能算是分割符吧。 但实际上文件系统中文件名是不保存分割符"."的,所以上面的file.txt在磁盘上其实就记录成下面的形式 file txt。其中空格可能是用一个0字节来将2部分分割开来了(当然本文不是要论述文件系统的,具体解释请参考资料)。 所以上面的“file.txt”,实际上那个"."是不记录在文件系统里面的,只是在显示的时候由文件系统负责加上去了而已。 知道了这点那么我们就来研究“file.txt.”这样的文件: 按照规定,扩展名部分是文件末端到由右向左出现的第一个"."位置的部分,如果没有出现".",则表示没有扩展名。 于是得出的结论是上面这个“file.txt.”是没有扩展名的。按照上面的说法,文件系统中他的记录形式可以是: file.txt<分割字节><空字符串> 也就是说最后面的"."是被去掉也是无所谓的。但他和“file.txt”实际上不是同名的文件。 但是我们知道除了文件系统内部,一般程序都是用以“.”作为分割符的文件名的,对于普通程序,由于略去了最后的“.”,“file.txt.”和“file.txt”在字符串形式上就成了同名文件。 如果你打开了“file.txt.”,由于略去了最后的".",实际上最后访问了“file.txt”。这就是为什么修改了其中的一个文件,另外一个文件就会跟着改变的原因。 而对于文件的删除,由于2个文件的等效性,无论删除哪一个,实际上都是“file.txt”被删除。所以总会留下那个“file.txt.”,因此就会感觉是自动被改名了。 同样,如果再想删除留下的那个“file.txt.”,因为实际要删除的是“file.txt”,但这个文件已不存在了,所以系统当然就会报错,那也就无法删除了。 这样一来,上面的问题就解释好了,不过为什么系统会显示file.txt.而不把"."在显示中略去的原因我还没有弄清楚。 这里顺便说一下以前看到的建立带有"\"文件夹的办法,大家还记得创建的方法吗? md c:\aa..\ 为什么在文件夹后面要带上“.”。同时建立的文件夹也和我这里说的带有点的文件具有相同的性质!后来经过我反汇编CreateDirectoryW API发现,其中调用完RtlDosPathNameToNtPathName_U以后,没有对文件名正确性进行检查。这和我的WinFileKiller修改的目的一致:绕过了正确性检查。 而我尝试用WinFileKiller建立如下文件“file..\”。但失败了,“\”在RtlDosPathNameToNtPathName_U调用完毕以后就被略去了,在CreateDirectoryW 中也是如此(这是说的是WinNT内核下面的情况) 所以我猜测其实md c:\aa..\是建立了以“.”作为结尾的文件夹而不是先前认为的带有“\”。 呵呵,扯远了。 下面就来说说利用的问题。 接着上面说的“file.txt.”和“file.txt”。因为按照常规的操作,实际上都只是“file.txt.”这个文件被访问,所以“file.txt.”可以被认为是“中立”了。 但是如果我们想办法把数据写入到其中,在需要时在通过特殊手段读取出来不是很好玩吗? 比如我把很重要的数据注入“file.txt.”,又附上“file.txt”里面存着无关的数据。这样可以很好的保护自己的信息,别人即使打开“file.txt.”,那也是在看“file.txt”得文件,而要删除“file.txt.”,那也是删除了“file.txt”,呵呵,很有趣不是? 如果有种病毒能利用这个原理复制自己的话,那我想目前所有的杀毒软件都会失效^_^ 对于这种文件的制作和数据植入我已经在WinFileKiller里面实现了,具体办法可以看[url]http://www.csksoft.net/blog/post/11.html[/url]。对于写入数据其实就是用同样办法修改MoveFile API。 说下简单的文件注入: 启动了WinFileKiller以后,选择2:"copy a File".此时按照提示,现输入要注入数据的源文件路径,然后输入带有"."结尾的文件路径即可。 其实这只是利用了文件系统的一些运作机制而已,并无高深技术。 本文适用于windowsXP和win2k,理论上支持winNT内核系统。测试环境winxp sp2_RTM

帮我表弟做下宣传~

我表弟Somnia(其实我更喜欢叫他阿呆^_^)最近又新作品发布了。呵呵,这是由他带来的Trance新作Cascade,Original mix FTP下载地址:[url]ftp://FTP_visitor:visitor@ftp.csksoft.net/Public/DJ_SOMNIA/Cascade.mp3[/url] 希望各位能喜欢,他的Blog地址[url]http://spaces.msn.com/members/djsomnia/[/url]

即将告别FTTB+LAN和我现在的家

随着日子的邻近,下周我就要住进新家了,虽然说环境和现在没得比,但有一点令我不爽,那就是网络。 我现在的小区不知什么原因使全上海最早推行FTTB+LAN(光纤到小区,局域网到户)的10个小区之一,所以我很早就享受其宽待的实惠。用过的人都因该知道FTTB绝对要比ADSL性能好,光从支持上传下载双通道上就能说明问题了。 但我的新家属于新城区,那里有些地方连基本通讯设施都没,别说什么光纤了,而且可能永远都不会有FTTB+LAN了……于是无奈只能开始习惯ADSL了,真想狠心把电信给hack了,...

Win32编程经验

呵呵,其实也不是什么原创的东西。只是拿出来和大家分享^_^ 第一回 1.如何减小程序尺寸 有没有发现如下短短的代码用VC编译出来的Release版也要46kb呢? 而如果你用MASM写换等效的汇编只有2kb左右。虽然我们可以用AsPack或者UPX加壳,但如果本来程序就能控制的很小岂不更好? 2.如何删除程序本身和正在运行的程序 其实不算删除,只是移位。但对付病毒和流氓软件足矣! 3.如何变出在一行上显示比如"正在计算:80%完成"的console?

也来说说我的设计作品

其实与其说我喜欢编程,更确切的说是喜欢搞设计,当然平面设计是一个方面。但设计是包含在几乎所有领域的事情。但这里我说的还是平面设计为主的事。 因为感觉我经常发布自己的程序和破解作品,但很少有设计作品,所以就展示一下吧。 首先放出的就是我网站一直能看到的标志了,你要问这是什么我想也就只能解释的今天的地步了:-p ................

关于国产软件和信仰

今天无聊,于是到网上逛逛,看到了下面这个帖子。原本只是看看,但发现他们吵了3天,于是也就写点什么了,同时blog一周每写了,就把回复也发上来吧... [url]http://www.pcshow.net/bbs/viewthread.php?tid=350767926&extra=page%3D1[/url] 我原本也认为WPS很LJ,并且我现在也觉得它和MSO比还是有一定差距。但我对这里的斑竹态度表示不理解。 目前WPS推出个人版下载,一时间也红了起来)、。我前一段时间因为好...

爱好、热情、责任,现实和我的唯心观

从标题中就应该能猜到这个话题比较严肃了。也是我不太喜欢的说话风格了。 但有时候这些事情一直困扰着我,也许也困扰着很多人。而现在blog重新恢复它应有的作用时,似乎也是我开始说出自己心里话的时候了。 其实以前一直有一种想法:我喜欢一样东西,那正表示我不能一直接触它。而当我的生活中充满了这样东西时或许我就会渐渐的厌倦。其实这就是喜新厌旧。但我说的不是具体的“东西”(Object)。就比如我初高中很喜欢物理,但随着学科内容变多,我慢慢的变成了被动的学习,到现在完全丧失这方面的优势。 而现...

[开源][下载]VC工程转化器

VS.net 2003出来以后,我第一感觉就是今后不太会使用VC6.0了,因为操作很人性(当然VC6的编译器好)。但有个问题时有时候你的工程要在别人机器上打开,比如我现在学数据结构要交作业。而对方用VC6就打不开VS.net2003的程序了。 现在VS.net 2005又出来了,但同样2003打不开2005的工程。这时候就要用到工程转化器了。 其实2005->2003的转化不难,改几个版本信息就可以,但VS.net->VC6的转化就要涉及重新翻译的问题。以前国外有人写了个命令行的2003->VC6的转化器,但有一定bug,同时操作不方便,所以我就做了修改,同样也是开源的^_^

 

下载地址:

http://www.csksoft.net/data/legacyftp/Products/APP/UnPrjConvertor.rar

源代码:

http://www.csksoft.net/data/legacyftp/Products/APP/SRC_AllVersionPrj.rar

 

 

 

[下载]PicPicker

这就是游戏的画面,用Flash编写的,其实游戏本身是很老的一种记忆翻牌游戏,但相信它的画面和刺激的音乐能够吸引你的兴趣哦 这个游戏原先是为了计算机协会迎新大会时现场游戏特别做的,但做好发现很好玩,我一度因为觉得好玩拖延了开发周期^_^ 不说废话了,下载地址:

http://www.csksoft.net/data/legacyftp/Products/games/PicPicker.rar

 

关于我最近怎么了?以前怎么了?马上又要怎么了?

新版blog采用原先的域名访问:[url]http://blog.csksoft.net[/url] 而原先的blog可以通过域名[url]http://blog2.csksoft.net[/url]访问。 呵呵,别以为说这话的是个疯子。 其实我想说的是为什么最近我网站像死亡了一样。 首先是我05年暑假要达成的由ReformCore管理我网站的计划因为各种原因拖延了,加上开学后繁忙的事情,虽然有一些作品和想法,但因为怕草草发布了会影响将来ReformCore的资料收集,所以就放着... 其实这个blog也是很早就存在于我的电脑上的了。 上面是一个原因,其次是我网站一再的被服务商封闭,原因是“提供了下载”。这令我不解,也和他们吵过几次。但最好我屈服了:取申请了一个1G的FTP。将来我的作品就放上面了。 大家可以去看看,虽然上面还没什么东西:[url]ftp://FTP_visitor:visitor@ftp.csksoft.net[/url] 所以导致我担心转移blog会造成将来的不稳定.........
分页:[«][13][14][15][16][17][18][19][20][21][22]23[24][25][26][27][»]

日历

<< 2015-6 >>

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Copyright Shikai Chen 2000-2012. Powered By Z-Blog(CSK Modified)