| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1946 人关注过本帖
标题:[反取证] VB6文件覆写技术,二进制全0全1覆写(反取证技术)
只看楼主 加入收藏
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
结帖率:89.13%
收藏
 问题点数:0 回复次数:17 
[反取证] VB6文件覆写技术,二进制全0全1覆写(反取证技术)
由于Byte 0 的二进制是 0000 0000 ,而Byte 255 的二进制是 1111 1111  ,因此可以实现用字节进行文件二进制全0和全1填充,实现文件覆写的目的。进行35次的全0和全1填充,可有效的防范电子取证技术中的实验室数据恢复。

程序代码:
Function Overwrite(FileName As String) '要覆写的文件
    Dim x As Long, y As Long
    Kill Left(FileName, InStrRev(FileName, "\")) & "0"
   
    '二进制全0和全1覆写文件内容
    For x = 1 To 35  '覆写35x2次
        Dim sum As Long, n As Long, fxByte As Byte
        n = 0
        Open FileName For Binary Access Write As #1
        For sum = 1 To FileLen(FileName)
            n = n + 1
            'MsgBox n  '初始值为1
            fxByte = 255
            Put #1, n, fxByte  '二进制全1覆写1 2 3 ....
        Next sum
        Close #1
        n = 0
        Open FileName For Binary Access Write As #1
        For sum = 1 To FileLen(FileName)
            n = n + 1
            'MsgBox n  '初始值为1
            fxByte = 0
            Put #1, n, fxByte  '二进制全0覆写1 2 3 ....
        Next sum
        Close #1
        DoEvents '释放系统控制权
    Next
   
    '覆写文件名
    For y = 1 To 35  '覆写35x2次
        If Dir(FileName) <> "" Then Name FileName As Left(FileName, InStrRev(FileName, "\")) & "0"
        Name Left(FileName, InStrRev(FileName, "\")) & "0" As Left(FileName, InStrRev(FileName, "\")) & "1"
        Name Left(FileName, InStrRev(FileName, "\")) & "1" As Left(FileName, InStrRev(FileName, "\")) & "0"
    Next
    Kill Left(FileName, InStrRev(FileName, "\")) & "0"
End Function

Private Sub Form_Load()
Me.Hide
Overwrite ("C:\Users\Admin\Desktop\1.php")
End Sub


程序代码:
Private Sub Form_Load()
Dim x As Long, FileName As String

FileName = "1.exe"  '要覆写的文件

For x = 1 To 35  '覆写35x2次
Call qyfx(FileName) '二进制全1覆写
Call qlfx(FileName) '二进制全0覆写
DoEvents '释放系统控制权
Next
MsgBox "任务完成!"
End Sub

Function qlfx(FileName) '二进制全0覆写1 2 3 ....
Dim sum As Long, n As Long, fxByte As Byte
n = 0
Open "1.exe" For Binary Access Write As #1
For sum = 1 To FileLen(FileName)
n = n + 1
'MsgBox n  '初始值为1
fxByte = 0
Put #1, n, fxByte  '二进制全0覆写1 2 3 ....
Next sum
Close #1
End Function

Function qyfx(FileName) '二进制全1覆写1 2 3 ....
Dim sum As Long, n As Long, fxByte As Byte
n = 0
Open "1.exe" For Binary Access Write As #1
For sum = 1 To FileLen(FileName)
n = n + 1
'MsgBox n  '初始值为1
fxByte = 255
Put #1, n, fxByte  '二进制全1覆写1 2 3 ....
Next sum
Close #1
End Function


[此贴子已经被作者于2022-8-27 08:54编辑过]

搜索更多相关主题的帖子: sum 二进制 覆写 For Long 
2022-08-27 08:48
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
想法是不错的。
但你要注意一下,文件存储空间是怎么分配的,
分配给当前 文件的,你重写时,并不一定永远是分配给当前文件的,特别是 SSD 上尤其明显。


授人于鱼,不如授人于渔
早已停用QQ了
2022-08-27 09:37
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
直接对文件内容重写,如果文件内容在磁盘中不是连续存放的,重写也不会受到影响。

如果有影响的话,文件内容是重写不完整的。在WinHex软件下是可以观察到的。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-08-27 11:21
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
如果直接对磁盘重写0和1来覆盖指定的文件,会出现你说的那种情况。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-08-27 11:29
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
需要底层直接对 扇区 或块 直接读写,这个是可以的,就像WinHex 里那样直接读到扇区,写入扇区 ,那样是可以的。

我只知道 FAT 大体的形式
文件保存在磁盘上,占用的扇区是写在分配表中,但占用的顺序是生成一个链,首地址写在目录记录里,其他扇区的地址是写在前一个扇区结尾。形成一个单向链表。
重写时,我不知道VB会不会重置所有的链单元,然后重新申请新链。也许不会,对于磁盘来说,这样的结果是我们期待。
如果是申请新扇区,会导致原的扇区在分配表中标记为未使用,但扇区内容不会去修改,直接下一次IO申请到这个扇区时,直接覆写。

但对于 SSD 时,就不同了,SSD 读 和 写 是二个完全不兼容的操作,写之前,需要把这个块清零,而清零的操作是很慢的操作,所以SSD都支持 TRIM指令,
这个指令的含义是把需要清零的块标记出来,由主控后台操作慢慢的去清零。需要写的数据去写到一个新的块中。。
所以,反删除软件 针对 SSD 来说是没的意义的,原因也在这,主控在后台慢慢清零,哪怕找到了首链,但反删除出来的全是乱码或全是零(这种情况更大一些)。


授人于鱼,不如授人于渔
早已停用QQ了
2022-08-27 20:12
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
我看过很多电子反取证博硕论文、书籍,自有分寸。

你可能没有看过多少电子反取证博硕论文。论文上和你说的不一样。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-08-27 20:46
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
35次的全0和全1覆写,目的是为了将磁盘的磁场拉高拉低,让磁盘的磁场趋于平均化水平,防止“剩磁恢复设备”进行基于磁场的数据恢复。

博硕论文有讲到这些。

因为科学家发现,覆写20多次仍然可以恢复出数据,覆写次数被提高到了35次。这就是“35次随机覆写擦除”算法的理论基础。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-08-27 20:56
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
以下是引用风吹过b在2022-8-27 20:12:31的发言:

需要底层直接对 扇区 或块 直接读写,这个是可以的,就像WinHex 里那样直接读到扇区,写入扇区 ,那样是可以的。

我只知道 FAT 大体的形式
文件保存在磁盘上,占用的扇区是写在分配表中,但占用的顺序是生成一个链,首地址写在目录记录里,其他扇区的地址是写在前一个扇区结尾。形成一个单向链表。
重写时,我不知道VB会不会重置所有的链单元,然后重新申请新链。也许不会,对于磁盘来说,这样的结果是我们期待。
如果是申请新扇区,会导致原的扇区在分配表中标记为未使用,但扇区内容不会去修改,直接下一次IO申请到这个扇区时,直接覆写。

但对于 SSD 时,就不同了,SSD 读 和 写 是二个完全不兼容的操作,写之前,需要把这个块清零,而清零的操作是很慢的操作,所以SSD都支持 TRIM指令,
这个指令的含义是把需要清零的块标记出来,由主控后台操作慢慢的去清零。需要写的数据去写到一个新的块中。。
所以,反删除软件 针对 SSD 来说是没的意义的,原因也在这,主控在后台慢慢清零,哪怕找到了首链,但反删除出来的全是乱码或全是零(这种情况更大一些)


取证人员会先提取SSD分区的完整镜像,得到完整的镜像文件。

这个镜像可以无限次在另一台电脑上重复使用,进行数据恢复操作。

甚至通过磁盘文件系统重构、介质恢复设备、剩磁恢复设备,照样可以提取到需要的数据。(通过分区完整镜像文件,可以把数据完美克隆到另一块新硬盘进行分析



多看看网警的数据取证技术博硕论文、《电子数据取证》、《电子数据取证技术》专业书籍吧。

[此贴子已经被作者于2022-8-27 21:24编辑过]


心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-08-27 21:14
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
先区分 HDD 和 SSD 再说,这二种的存储数据 原理是不同的。

HDD,现在的设备,覆写10+次以内都可以读出来。因为有剩磁。这种读剩磁很多需要开盘。
那你告诉我 SSD 那来的剩磁? 也许用 电镜测量 隔膜 的剩余 厚度能得到一个数据吧。

授人于鱼,不如授人于渔
早已停用QQ了
2022-08-27 23:05
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
参考:https://blog.

以下为论文中的部分:
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2022-8-28 11:56编辑过]


心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-08-28 05:04
快速回复:[反取证] VB6文件覆写技术,二进制全0全1覆写(反取证技术)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019174 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved