使用crc保护c ++输出文件(pe文件)不被编辑

时间:2009-11-03 11:07:15

标签: file protection crc portable-executable

如何使用crc(循环冗余校验)保护c ++输出文件(pe文件)免于编辑?

                            **Best Regards**

2 个答案:

答案 0 :(得分:1)

您可以使用CRC来有效地检查文件是否被意外更改,但它们对于复制保护或防止游戏中的作弊无效。

通常,当我编程进行某种CRC检查时,我会找到执行检查的代码,并将汇编指令从条件分支更改为无条件分支。这通常很容易找到,因为通常在CRC失败后,程序会显示一条消息并退出。我在消息发生时放置一个断点,并检查堆栈中的所有帧。然后我在堆栈中的每个点上放置断点,再次运行程序,并查看CRC检查哪一个。

这并不是特别困难,人们经常捆绑一些程序,这些程序会对您选择的软件应用相同的更改。

答案 1 :(得分:0)

  1. 您的代码中需要一个静态变量。需要将变量初始化为可以使用十六进制编辑器(例如DEADBEEF)轻松找到的值
  2. 你需要一个crc算法(尝试搜索谷歌)
  3. 棘手的部分。你需要在内存中获得指向exe的开头和结尾的指针。您可以解析代码位置的pe文件头,并从代码的开头到代码的结尾运行crc-algorithm。那你就有了价值。
  4. 当然,您必须使用静态变量中的一个来检查计算值。
  5. 插入值 - 根据您构建的频率,您可能需要编写工具。您始终可以运行程序并在比较中设置断点。然后记下该值并将其十六进制编辑到可执行文件中。或者你创建一个独立的程序来解析pe-header,使用相同的函数(这次在文件上)并对其进行补丁。虽然这可能很复杂,因为我不知道OS在什么时候改变了负荷。