最新要闻
- 全国股份转让系统:北京长峰医院因发生重大风险事件,今日起股票停牌
- 世界快资讯:性能看齐RTX 3060 硬件发烧友打造无风扇显卡
- 世界热讯:被称为“冰箱杀手”的李斯特菌 到底有多恐怖?
- 【环球播资讯】小米13 Ultra拆解出炉:后摄几乎占满了主板
- 全球即时:小米13 Ultra预售秒罄!卢伟冰预言成真:1TB版被抢爆了
- 79元 小米米家多功能充电台灯开启众筹:一灯多用 秒变手电筒
- 热头条丨相扑标准动作详解
- 焦点短讯!4月19日盘前重要公司新闻
- 天天观速讯丨2023年“泼水节” 西双版纳旅游总收入超21亿元
- 孔乙己如何再造一个“孔乙己”?
- SSD数据不能恢复?或许还有的救
- 环球视点!最完美的徕卡镜头!小米13 Ultra摄影套装版图赏
- 新华时评·首季经济形势|巩固企稳回升态势 推动经济运行持续整体好转
- 播报:美股异动 | 爱立信(ERIC.US)跌超7% 警告成熟市场5G支出将继续缩减
- 天天观焦点:哈尔滨还要往北300公里 我国在建最北高铁站取得新进展
- 五一假期返程火车票今日开抢:千万别忘记
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天热议:软件安全之CRC检测
CRC介绍
在玩某些游戏,例如fps类游戏时,你想要修改某些特定的数值实现一些功能,这时你很有可能会被查封账号甚至禁封机器码。因为你更改了游戏中的数据,从而导致接收方收到”错误的数据“。为尽量提高接收方收到数据的正确率,在接收数据之前需要对数据进行差错检测,这种检测就是我们所说的CRC检测。
CRC也叫循环冗余校验码,它属于密码学一类算法,常用于数据校验,一般会用来检测程序是否被脱壳或者被修改,以达到防破解的目的。CRC运算实际上就是将数据k进行模2运算,得到余数n,然后将n拼接到k的后面生成k+n为循环冗余校验码的字长。接着发送k+n到接收方作为被除数进行模2运算,判断余数是否为0,如果余数非0则CRC检测出数据被修改了。简单点说,就是把需要校验的数据与生成多项式进行循环异或处理。
PS:
1.发送方和接受方会约定一个特定的除数,它是一个定值,我们也叫除数为生成多项式。
(资料图)
2.在计算余数时,被除数也就是数据k需要进行补0,补0个数为生成多项式长度-1个0。
3.余数长度一定与补零的长度一致
流程图:
讲了这么多不如来个例子好理解
例子1:这里数据为1110101,生成多项式为101,那么我们要传给接收方的数据就为1110101(数据)+10(余数)=111010110
这个就是CRC的计算原理了
CRC计算的两种方式
1.直接计算法
这里我们通过例子来讲解,例子2:
首先我们看到这里的生成项是1101,然后在计算中的除数(蓝色字体标记)大多是1101而有时是0000,当除数为1101时被除数的首位都是1,而首位不为1时就是0000。那么我们不妨做个假设,既然被除数和除数的首位为1时会被消掉那么我们就不需要四位异或了,改成三位异或,三位异或的话被除数一次就取三个,而除数取后三个,当被除数首位为1时就左移一位让新的三位与除数(生成项)的后三位进行异或;当被除数移出位是0时就异或000,然后不断重复此步骤直至结束。(这里是针对本例题的,当你的生成项为n时,你就取n-1位异或)
那么就会有人问到底需要重复几次才算结束呢?
处理次数=待处理数据位数(被除数位数)=商的位数(本题次数为6次)
例如本题第一次被除数取100,左移一位得001然后与101异或得100。100左移一位得000然后与101异或得101。101左移一位得010然后与101异或得111。111左移一位得110然后与101异或得011。011左移一位得110然后与000异或得110(与000异或值是不变的)。110左移一位得100然后与101异或得001得到余数刚好6次。
【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】
① 网安学习成长路径思维导图 ② 60+网安经典常用工具包 ③ 100+SRC漏洞分析报告 ④ 150+网安攻防实战技术电子书 ⑤ 最权威CISSP 认证考试指南+题库 ⑥ 超1800页CTF实战技巧手册 ⑦ 最新网安大厂面试题合集(含答案) ⑧ APP客户端安全检测指南(安卓+IOS)
2.驱动表法
驱动表法没有直接计算法得直观,但是效率却比直接计算法要高那么如何实现呢?我们知道直接计算法是一步一步从上往下来异或得到得结果,在算得过程中会有异或许多生成项,而生成项又是不变的,那么是不是可以提前计算出与数据前几位符合的生成项之和然后再异或呢?
那么我们就将0000 0000 ~ 1111 1111这个范围的所有生成项计算出来存储为表格,计算的时候取数据的首字节进行索引找到表中对应生成项异或的和与去掉首字节的数据进行异或就行了。
表的形成
终于过度到表了,这里我们来用算法实现表,让你清楚明白它的原理,这里我们拿CRC32表的形成举例首先得了解一下CRC32的生成项是什么
想要了解更多的CRC以及它的生成多项式可以去这里看:http://www.ip33.com/crc.html
#include #include int main(){ DWORD crc; for (DWORD i = 0; i < 256; i++)//256个元素 { crc = i; for (DWORD k = 0; k < 8; k++)//因为这里异或是从数据的高位开始,所以需要计算的数据左移8位,这里就需要计算8次 { if (crc & 1)//判断最高位是否为1 crc = (crc >> 1) ^ 0xEDB88320;//最高位为1,右移一位,然后与0xEDB88320异或 else crc = crc >> 1;//最高位为0时,不用异或,整体数据右移一位。相当于例子2中110与000异或值是不变的 } printf ("0x%08x, ", crc); if (((i+1)%6) == NULL ) printf ("\n"); }}/*CRC32表0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d*/
注意这里用红色标识的右移,这里如果按照直接计算法来说不应该是要左移吗,为什么又右移了呢?
注意看这个表的倒数第二个,CRC32,它的输入和输出都是需要进行反转的,也就是相当于逆向,我们就要将左移修改成右移
当然还会有人问它的多项式不应该是0x04C11DB7吗,怎么又变成了0xEDB88320了呢?
这是它是因为0xEDB88320是0x04C11DB7的反转。这个表的生成很简单,一般是用的是0xEDB88320这个反转多项式,假如用0x04C11DB7这个正常多项式则必须还要交换位,显然会很麻烦。
做一个CRC的检测程序
相信大家差不多能够理解CRC实现的大概过程了,前面主要是对CRC大致了解,而我们真正需要深入了解的是CRC32。CRC32常用于游戏以及一些 ARJ、LHA等压缩工具软件,那么接下来我们来写一个CRC32的检测程序。
#include #include DWORD crc32_table[256]; void CRC32_Table(){ DWORD crc; //DWORD crc32_table[256]; for (int i = 0; i < 256; i++) { crc = i; for (DWORD k = 0; k < 8; k++) { if (crc & 1) crc = (crc >> 1) ^ 0xEDB88320; else crc >>= 1; } crc32_table[i] = crc; //生成并存储CRC32数据表 }} //根据CRC32表计算CRC校验码DWORD Check_CRC32(DWORD crc, PUCHAR Data, DWORD len){ crc = 0xFFFFFFFF; //将CRC初始化为-1 CRC32_Table(); for (DWORD i = 0; i < len; i++) { crc = (crc >> 8) ^ crc32_table[(crc ^ Data[i]) & 0xff]; } return ~crc;//输出的反转} int main(){ SetConsoleTitle("CRC32检测器"); printf("开始检测"); //初始内存校验值 DWORD Original_CRC32 = Check_CRC32(0, (PUCHAR)0x400000, 0x112000); while (1) { //CRC循环校验实现实时检测 DWORD Cycle_CRC32 = Check_CRC32(0, (PUCHAR)0x400000, 0x112000);//这里第二个参数是基址,第三个个参数是一个校验的范围,也就是程序主模块镜像大小。 if (Cycle_CRC32 != Original_CRC32) { MessageBoxA(NULL, "已检测到您修改了代码!", "警告", MB_YESNO); } //为了防止频繁弹出信息框,这里使用的Sleep函数控制检测的周期,每5s弹出一次 Sleep(5000); } getchar();}
这里初始化是因为待测数据的内容和长度是随机的,如果寄存器初始值为 0,那么待测字节是1字节的0x00,与待测字节是 N 字节的 0x00,计算出来的CRC32值都是0,那 CRC 值就没有意义了!所以寄存器用0xFFFFFFFF 进行初始化,就可以避免这个问题了
我这里的文件大小对应的是主模块镜像大小
实践是否能成功
这里我们用CE进行数据的修改
这里我们先手动添加地址,然后再将数值进行更改,我这里是改成了11111,然后过了5秒就弹出了警告。可以看出这个检测程序成功了!
当然有些有点基础的人会问,CRC不是检测代码的吗,为什么这里你修改的是数值也可以检测呢?
因为CRC是在代码段中进行操作实现的,在内存中数据根代码没有实质性的区别。
更多靶场实验练习、网安学习资料,请点击这里>>
关键词:
-
世界新资讯:六(二)、springMVC数据转换 jacson配置,json中的date由Date格式化输出
问题由来:在页面获取列表时,页面列表常有修改时间,创建时间的显示;如果没有配置,则Date类型的数据...
来源: -
[nacos]JAR启动并加载/解析Nacos yml格式的配置文件时,报“java.nio.charset.MalformedInputException:
1问题描述原因1:字符集不匹配nacos中配置文件的字符集为A,应用程序的读取配置文件时使用了字符集B,导...
来源: 天天热议:软件安全之CRC检测
世界新资讯:六(二)、springMVC数据转换 jacson配置,json中的date由Date格式化输出
[nacos]JAR启动并加载/解析Nacos yml格式的配置文件时,报“java.nio.charset.MalformedInputException:
天天看热讯:山西省政府存量债券柜台市场交易流通业务上线
全国股份转让系统:北京长峰医院因发生重大风险事件,今日起股票停牌
世界快资讯:性能看齐RTX 3060 硬件发烧友打造无风扇显卡
世界热讯:被称为“冰箱杀手”的李斯特菌 到底有多恐怖?
【环球播资讯】小米13 Ultra拆解出炉:后摄几乎占满了主板
全球即时:小米13 Ultra预售秒罄!卢伟冰预言成真:1TB版被抢爆了
79元 小米米家多功能充电台灯开启众筹:一灯多用 秒变手电筒
热头条丨相扑标准动作详解
焦点短讯!4月19日盘前重要公司新闻
天天观速讯丨2023年“泼水节” 西双版纳旅游总收入超21亿元
孔乙己如何再造一个“孔乙己”?
SSD数据不能恢复?或许还有的救
环球视点!最完美的徕卡镜头!小米13 Ultra摄影套装版图赏
新华时评·首季经济形势|巩固企稳回升态势 推动经济运行持续整体好转
观察:实例讲解Playwright(二)
Mysql中的数据类型注意事项
观察:新华时评·首季经济形势|巩固企稳回升态势 推动经济运行持续整体好转
播报:美股异动 | 爱立信(ERIC.US)跌超7% 警告成熟市场5G支出将继续缩减
天天观焦点:哈尔滨还要往北300公里 我国在建最北高铁站取得新进展
五一假期返程火车票今日开抢:千万别忘记
【环球报资讯】239元起!小米发布13大新品 价格信息这里一文看
当前观点:今天小米6发售6周年!雷军推荐“钉子户”升级小米13系列
焦点热讯:关于增加东莞银行股份有限公司为东方人工智能主题混合型证券投资基金销售机构同时开通定投及转换业务的公告
今日热门!读SQL进阶教程笔记12_地址与三值逻辑
环球新消息丨312国道宁镇段快速化改造工程进入基层施工新阶段
世界信息:4月18日基金净值:招商瑞泰1年持有混合A最新净值1.0166,涨0.01%
环球焦点!俄罗斯石油被抢:沙特和阿联酋低价购入 再高价卖给欧洲
松下空调怎么样调睡眠模式 松下空调怎么样
Typora 1.5.12 (windows/MacOs版) 简单高效且实用的Markdown编辑器
环球速递!对JSP(Java Server Pages)的一些理解
关注一季度四川民生数据③丨一季度,四川CPI同比上涨1.2%
一图看懂九号电动远行者F90M:新国标能上牌 90km长续航
全球视点!3299元起 锐龙7000X3D游戏神U战未来:AMD、微软合作优化Win系统
199元!小米游戏手柄发布:支持Steam、三模连接
热门:2023刚过了100多天 从主流到高端手机都如何卷?
环球讯息:手慢无?苹果这些机型或许会在iPhone 15系列推出后停产
最新资讯:不拘一格降人才啥意思_不拘一格降人才
宣传好 贯彻好 实施好——甘肃省电力事体制改革势在必行
世界观察:三星s6818处理器_三星6818
焦点关注:郓城农商银行营业部:开展《反电信网络诈骗法》宣传活动
环球看点!择天记第二季
大专院校包括本科不_大专院校包括本科吗?
【环球新视野】纳税太贵玩家拒领终身XGP 日网假图令晓美焰风评被害
中国铁塔与苏交科战略合作签约仪式举行
北京长峰医院住院部东楼发生火情,情况通报
当前关注:马斯克官宣:将推出AI平台TruthGPT;五粮液成立新能源投资公司?工作人员:正在考察光伏和储能方面丨大公司动态
当前热讯:2023医学考博英语常见的内科词汇:泌尿及男性生殖系统
全球今热点:全面打响夏粮丰产丰收攻坚战
环球即时:04月19日周三机会早知道
世界微头条丨医疗纠纷投诉处理流程
【时快讯】铁塔能源联手品胜电子 推出全球首款电变分离式储能电源
信息:亚马逊加速欧洲扩张卖家只需点两下即可上架全部欧盟国家:亚马逊宣布推出欧洲急速拓展计划(EEA),卖家只需进行两次点击,即可将其业务快速拓展至亚马逊的9大欧
每日速读!Elasticsearch搜索功能的实现(一)--搜索引擎为什么选ES
高起_关于高起简述
最新快讯!饲养员拍打大熊猫被停工 多人求情:网友质疑处罚太重
全球播报:信贷紧缩与衰退预期急剧升温!华尔街最准策略师:极度悲观=风险资产反转信号
【天天热闻】“博客书记”张新实被逮捕,71 岁高龄因贪腐问题被查
当前视讯!02 设置工作环境与环境(一)
环球即时看!不坑盒子(Office,WPS接入人工智能)助你高效办公,掐点准时下班回家。
2023天津春秋喜乐汇相声观演指南
天天即时:环境保护局_关于环境保护局介绍
5999元起 安卓影像之王小米13 Ultra发布:高通发文祝贺
观察:499元 小米米家皮皮灯发布:支持手势操控
腾讯自研芯片“沧海”斩获8大全球第一:远超行业GPU
2600岁“古楠木王”被盗割:11人判刑、修复花费29万元
全球今头条!迷你主机卖到白菜价 零刻12代4核CPU准系统688元
天天微动态丨教你用Python画哆啦A梦、海绵宝宝、皮卡丘、史迪仔!
快资讯:R数据分析:生存数据的预测模型建立方法与评价
天天最新:[快讯]创世达公布2022年年度分红实施方案
环球关注:魔域手游直播(魔域手游蜘蛛刷新点)
淘汰8GB内存 小米13 Ultra售价仅5999元:良心升级不涨价
环球微资讯!小米13 Ultra首发环形冷泵散热:温控甩开一众友商
世界快讯:一图看懂小米13 Ultra:拍照巅峰!16GB+1TB只需7299元
环球聚焦:“童话大王”郑渊洁发告别书:维权难 不再发新作
【全球热闻】高端成了 用户暴买好评率超98%!雷军:小米加大创新 今年研发投入预计超200亿
环球热资讯!AI测试101:测试AI系统的实用技巧&ML和AI自动化工具
全球热资讯!Redis---主从复制
浙商证券汽车行业周报:特斯拉Q1交付超预期
给老外来点中国震撼!比亚迪展台被多名大众高管围观:都在看海鸥
7000mAh超大电池仅1799元!华为畅享60X图赏
今日播报!小米13 Ultra亮相:外观像极了相机!
世界快播:小米手机冲高端!小米MIX Fold 2好评率高达99.97%
环球速讯:小米13 Ultra、iPhone 14 Pro Max实拍对比出炉:徕卡光学YYDS
2023年社会工作者职业水平考试什么时间开考?
今日讯!《心渊梦境》多少钱?豪华版和标准版价格分享
定了!本田中国宣布2027年后不再投放燃油新车
王冰冰现身上海车展:跟演员王凯同台
当前视讯!出境易APP:轻松搞定出国必备应用 让你的海外之旅更便利!
【天天报资讯】“五一”出游正升温 文旅市场提前“入夏”
全球资讯:羡慕吗?厦门一公司取消所有法定长假调休:补班改休假 不鼓励加班
当前动态:自行车胎压多少合适 胎压多少合适
当前信息:jenkins配置maven编译tomcat项目并使用Nexus配置私库源
全球视点!比较几种热门Hybrid App前端框架
4月22日丨【云数据库技术沙龙】技术进化,让数据更智能
环球观天下!.net C#加载程序集外dll文件方法
【世界播资讯】ChatGPT们接踵而至,AI会彻底改变我们的工作方式吗?
天天新消息丨买不到票?无所谓全国游客会替你回家