我想尝试以下方法:
我有一个C#程序,它需要一个文件作为输入和计算MD5算法这五个MD5。 我的算法对每个文件的唯一值; 这个值是一个128位的值,所以我想用这种技术通过保存md5算法的输出值到我的PE文件,以保护我的节目(假设值X)。 该PE将重新计算的MD5值(为自己)(假设值是Y),然后用Y.比较X如果是相同的值它的确定和运行; 否则,它会退出。
我的问题是:我怎么写我的价值进入PE文件? 重要提示:我的算法已写入C#,所以我想用C#语言的方式来写入PE文件。
我想尝试以下方法:
我有一个C#程序,它需要一个文件作为输入和计算MD5算法这五个MD5。 我的算法对每个文件的唯一值; 这个值是一个128位的值,所以我想用这种技术通过保存md5算法的输出值到我的PE文件,以保护我的节目(假设值X)。 该PE将重新计算的MD5值(为自己)(假设值是Y),然后用Y.比较X如果是相同的值它的确定和运行; 否则,它会退出。
我的问题是:我怎么写我的价值进入PE文件? 重要提示:我的算法已写入C#,所以我想用C#语言的方式来写入PE文件。
一种选择是简单地你的价值附加到文件末尾。 窗户是很高兴的任意数据追加到可执行文件 - 这是自解压压缩文件是如何工作的,例如。
编辑回应哈尼的评论:这对我的作品,使用的cmd.exe为例:
C:\WINDOWS\system32>copy con rjh
This is a test!
^Z
1 file(s) copied.
C:\WINDOWS\system32>copy /b cmd.exe + rjh cmdrjh.exe
cmd.exe
rjh
1 file(s) copied.
C:\WINDOWS\system32>od -cv cmdrjh.exe | tail -4
1367760 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
1370000 T h i s i s a t e s t ! \r
1370020 \n
1370021
C:\WINDOWS\system32>cmdrjh
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>
(你没有做以二进制方式的文件操作,不是吗?)
创建被嵌入并且是在代码/数据段的末尾的空字符串资源数据,计算出的偏移量,其中在所述值写入到该空白区域,其中所述资源位置是。
不过话说回来,什么是在自己保护你的程序的点...?
我不会走这条路线,而是采用了PE文件(本机C / C ++代码/库和.NET)商业保护方案......例如,.NET可执行这是一个PE文件也和他们很容易反向工程(想想反射)...看看很多地方的保护方案破获和使用序列号,这些所谓的盗版软件的...你觉得呢? 如果你还是坚持做自己,然后在上面我的答案第一段应该帮助你。
我的2美分想到这里......最好的问候和好运气在你的保护方案,汤姆。
您可以使用备用数据流 。 。 。 使md5sig是签名的命名空间md5sig:在这里你可以打开和写入文件名类似文件名.exe。 原始文件(居住在unamed默认命名空间)和它的数据是单独留在家中。 TheEruditeTroglodyte