问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

checksum函数在哪个头文件中定义

发布网友 发布时间:2022-04-30 01:38

我来回答

1个回答

热心网友 时间:2022-04-19 05:12

校验和(Checksum)
PE的可选映像头(IMAGE_OPTION_HEADER)里面,有一个Checksum字段,是该文件的校验和,一般EXE文件可以使0,但一些重要的和系统DLL及驱动文件必须有一个校验和.
Windows 提供了一个API函数MapFileAndCheckSum 测试文件的Checksum,它位于IMAGEHLP.DLL链接库里,其原型:
ULONG MapFileAndCheckSum
{
LPSTR FileName, // 文件名
LPDWORD HeaderSum, // 指向PE文件头的CheckSum
LPDWORD new_checksum // 指向新计算出的Checksum
}
程序一旦运行后,new_checksum 地址处将放当前的文件的校验和,old_checksum地址指向PE文件的checksum字段
安全的方法是将此值放在注册表里,需要时比较.
内存映像校验
磁盘文件完整性校验可以抵抗解密者直接修改文件,但对内存补丁却没有效果,必须对内存关键的代码进行校验.
1 对整个代码进行校验
每个程序至少有一个代码区块和数据区块,数据区块属性可读写,程序运行时全局变量通常会放在这里,这些数据会动态变化,因此校验这部分是没什么意义,而代码段只读,存放的是程序代码,在程序中数据数不会变的,因此用这部分进行内存校验是可行的.
具体实现方法:
(1) 从内存中映像中得到PE相关数据,如代码块的RVA和内存大小
(2) 根据得到代码区块的RVA值和内存大小,计算出内存数据的CRC-32值
(3) 读取自身文件先前存储的CRC-32值(PE文件头前一个字段),这个值是通过软件写进去的.
(4) 比较两个CRC-32值.
这样比较内存的代码段校验,只要内存的数据被修改,就能发现。
BOOL CodeSectionCRC32()
{
PIMAGE_DOS_HEADER pDosHeader = NULL;
PIMAGE_NT_HEADERS pNTHeader = NULL;
PIMAGE_SECTION_HEADER pSection = NULL;
DWORD ImageBase,OriginalCRC32;
ImageBase = (DWORD)GetMoleHandle(NULL); // 取基址
pDosHeader = (PIMAGE_DOS_HEADER)ImageBase;
pNtHeader = (PIMAGE_NT_HEADER32)((DWORD)pDosHeader + pDosHeader -> e_lfanew);
// 定位到PE文件头前4个字节值,并读取存储在这里的CRC -32值
OriginalCRC32 = *((DWORD*)(DWORD)pNtHeader - 4);
pSecHeader = IMAGE_FIRST_SECTION(pNtHeader); // 得到第一个区块的地址
//假设第一个区块就是代码区块
if(OriginalCRC32 == CRC32((BYTE*)ImageBase + pSecHeader -> VirtualAddress)
// 为了方便加壳
// 上一句也可为if(OriginalCRC32 == CRC32((BYTE *)0x401000, 0x36AE)
return TRUE;
else
return FALSE;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 NMEA 0183 的 Checksum 如何计算 edid 的CHECKSUM怎么算 WireShark 中为什么会出现 Tcp Checksum Offload tt中放战歌为什么没声音 串口 通信 检验和 QQ巨轮怎么换人。 男人放这首歌代表他心里想表达什么呢! ip checksun 怎么计算 为何做香肠后煮出的香肠全成豆腐渣样? 苹果微信消息删除了怎么恢复 征途指挥刺探的时候YY里放战歌是怎么放的 [串口通讯]关于发送指令时的 CHECKSUM,帮忙解析下通讯协议。 抖音标题跑到评论里怎么改回来 md5 checksum与md5是一样吗 触手tv剑仙,我以前看他直播的时候听过一首歌,当时他说我要放战歌了…。这首歌是送给喷子们的… 除了水煮,香肠还能怎么吃呢? checksum文件 效验怎么算 微信聊天记录中向某账号发送的信息被长按该条消息删除后如何恢复?如 yy里面经常放什么战歌? Checksum计算 未成年QQ被盗,盗号者可以贷款吗? 函授本科可以考公务员本科以上学历的岗位吗?非全日制本科可以吗 我的QQ号被盗了,我在QQ号里面实名认证了,但是没有绑定银行卡,这样的情况下那个盗号者能不能贷款? 实名注册过的qq账号被盗了绑定了银行卡,但是我把银行卡注销了,骗子还能拿我实名注册的QQ号去贷款? 移动宽带和wifi是两个东西吗?办理了宽带 手机的无线网络可不可以上网 QQ密码被人知道了,上面有银行卡,他知道我手机号码我担心他拿去贷款怎么办?怎么办呢? qq号被盗他人能用它来借花呗吗? qq小帆船一个人有另一个没有是怎么回事 QQ密码被人知道了,上面有银行卡,他知道我手机号码我担心他拿去贷款怎么办?非常感谢 被盗会被别人给去贷款什么吗?怎么办? 针灸治疗月经不调扎几天最好 中国地形图中的五岳的名称 店铺里面想用一个点餐系统?求推荐一下,谢谢 黄豆酱 用法 鲜魔芋豆腐怎么做 90岁的老人的生日该怎么过? 90岁的老人的生日该怎么过?老妈90岁生日,她一直都是跟我姐她们一起住,我想回去为她过个有意义的生_百度问一问 蒸鱼的时候需要在鱼肚子你们放生姜这些调料吗? 混凝土中的掺合料是什么? 混凝土掺合料的种类有哪些