CRC校验小程序开发c语言,为pe文件添加CRC32自效验的小程序(vc)

今天看到看雪上的一篇文章《为pe文件添加CRC32自效验的小程序(vc)》很是高兴,这正好能帮助我的程序更好的保护水印不被篡改,所以好好学习了下。

对于学习过程中的了解的知识总结一下,以后再看也方便。

一、汇编中的nop指令:

1.NOP"指令即空指令。

2. 运行该指令时单片机什么都不做,但是会占用一个指令的时间。

3. 当指令间需要有延时(给外部设备足够的响应时间;或是软件的延时等),可以插入“NOP”指令。

二、关于找不到DWORD_PTR的定义的问题:

网上说是由于SDK版本过低的问题,但是参考我那少的可伶的汇编知识,这个应该就是转换成DWORD的意思吧,所以将它替换成DWORD应该没问题,但是实在不知道定义的语句在哪,所以就在出错的文件头里添加了定义:#define DWORD_PTR DWORD,编译链接运行都没问题,看来我的猜想基本上是正确的。至于运行后得到的会是正确的结果吗?我也不知道,因为我都不知道理论上应该是什么样的结果。

三、为pe文件添加CRC32自效验的操作流程:

大牛的总结,我只是学习···

步骤:pe文件通过比较自己的CRC32效验值,来判断自己是否被改写。

(1)为原pe文件添加一个新的节,将自效验部分(Loader)写入该新节。

(2)将原pe文件的ep改为新节的开始。

(3)计算原pe文件部分(在程序里计算的是从pe文件的开头到+0xe5)的CRC32效验值,并将该效验值保存在Loader中。

(4)修改后的pe文件开始运行时,先计算相应部分的(在程序里计算的是从pe文件的开头到+0xe5 )CRC32效验值。与原pe文件的CRC32效验值比较,若相等则跳转到原pe的ep,否则直接调用ExitProcess退出。

测试:

(1)打开程序CRC32为记事本添加自效验。

(2)运行已添加自效验的记事本,能正常运行。

(3)修改从记事本开头到0xe5范围内的任意一个字节(不要修改关键数据,如“MZ“),再运行,记事本直接ExitProcess,退出。

0818b9ca8b590ca3270a3433284dd417.png

好像也没有问题,不过源程序无法运行了。

0818b9ca8b590ca3270a3433284dd417.png

最后一个节···

可是导致程序不能运行了。

0818b9ca8b590ca3270a3433284dd417.png

这里就不一样。

0818b9ca8b590ca3270a3433284dd417.png

后面也有不一样,看来我刚才改的不对,没有得到正确结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值