| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3176 人关注过本帖, 1 人收藏
标题:求解存档文本的checksum校验范围
只看楼主 加入收藏
ragnarok
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-1-24
结帖率:33.33%
收藏(1)
已结贴  问题点数:20 回复次数:12 
求解存档文本的checksum校验范围
小弟是一名游戏爱好者,平时喜欢自己轻度修改下游戏的存档,但是有些游戏的存档有checksum校验功能,修改数值会造成存档无法使用,所以特来此论坛求助各位大神帮忙小弟看看,小弟因刚注册本论坛还没有积分,所以没法悬赏,如有大神愿意帮助小弟解开本人愿意现金酬谢(不低于200块RMB),首次发帖不知道是不是符合版规,如不符合请版大手下留情,小弟急求

如有大神愿意帮忙小弟请麻烦联系我下或者留言,必有重谢!


[此贴子已经被作者于2017-1-24 16:33编辑过]

搜索更多相关主题的帖子: 爱好者 游戏 
2017-01-24 16:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
先抛开$不谈~这个好像和C扯不上什么关系耶~那些修改软件的应该是用金山游侠之类的~虽然我见过简单的修改text文档里面的内容也行~但感觉修改游戏软件太多方法太灵活了~还是谈谈C或者弄个简单的游戏设计软件玩玩比较好~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-24 16:56
ragnarok
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-1-24
收藏
得分:0 
以下是引用九转星河在2017-1-24 16:56:55的发言:

先抛开$不谈~这个好像和C扯不上什么关系耶~那些修改软件的应该是用金山游侠之类的~虽然我见过简单的修改text文档里面的内容也行~但感觉修改游戏软件太多方法太灵活了~还是谈谈C或者弄个简单的游戏设计软件玩玩比较好~


感谢版大回复,由于小弟也不懂这个checksum的校验属于汇编的哪一类知识,所以只好发到这个版块还请原谅,那小弟问下如果想自己学习这部分知识的话,应该从什么部分开始学起?这个checksum的校验属于汇编中的哪部分知识?小弟并没有任何汇编方面的知识,还请版大能指引下方向,谢谢了
2017-01-24 18:06
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
我认现阶段我只会C汇编的我完全懵逼~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-24 18:21
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:10 
有checksum就是要确保数据完整性,修改就有可能破坏了完整性而造成无法使用吧。
不清楚你的效验和算法,一般有分:8位、16位,反码、补码。
如16位反码:
unsigned short checksum(unsigned short *buffer, int size)  
{  
    unsigned long cksum=0;  
    while (size > 1)  
    {  
        cksum += *buffer++;  
        size -= sizeof(unsigned short);  
    }  
    if (size)  
    {  
        cksum += *(unsigned short *)buffer;  
    }  
    while (cksum >> 16)  
        cksum = (cksum >> 16) + (cksum & 0xffff);  
    return (unsigned short)(~cksum);  
}
2017-01-25 20:43
ragnarok
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-1-24
收藏
得分:0 
回复 5楼 吹水佬
大神您好,谢谢您指引了下方向,不过由于小弟并无这类汇编方面的基础,所以您发的帖子我看的不是很懂,请问可以拜托您帮着解一下么?

之前也修改过有类似checksum校验机制的存档,不过都是些论坛方面的大神查找出来现成的check范围,自己用msc校验了下而已,而且小弟只会那种格式的,小弟用的软件为:MemorySumChecker 1.49,一般论坛大神给出的校验范围是以下格式的,请问如何做成你编写的那种格式?

ENDIAN(LITTLE)
CSUM == 0
CSUM <= ADD(0, 5FC0F, 1)
WRITE( 5FC14, 4)
SHOW

还有种类似大神做的这种 010 Editor v1.0 Script File的脚本文件,不过感觉这种更高深!,请问下面这种脚本格式的编写如何改成上面那种msc格式的?

//-----------------------------------
//--- 010 Editor v1.0 Script File
// Define variables
quad  pos = 0;
int   sum1 = 0, sum2 = 0;

// Check that a file is open
if( FileCount() == 0 )
{
    MessageBox( idOk, "error", "No file is opened." );
    return -1;
}

// Check that is ed_zero savedata



while( pos < FileSize()-8 )
{
    sum2--;
    sum1 += ReadInt(pos);
    pos += 4;
}

sum2 -= sum1;

if( sum1 == ReadInt(pos) && sum2 == ReadInt(pos+4) )
{
    // MessageBox( idOk, "ok", "No set is needed" );
    Printf("No set is needed\n");
    return -1;
}

WriteInt(pos,sum1);
WriteInt(pos+4,sum2);
FileSave();

// MessageBox( idOk, "ok", "set ok" );
Printf("set ok\n");

最后感谢大神能回答我的问题,如方便的话小弟想加大神好友详细请教下,必有重谢!也祝大神新年快乐!
2017-01-27 01:56
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
首先,我上面写的代码是C代码,在这与汇编有关有代码极少见,这段效验和代码通常用在网络通信。
因无现场只好猜测,从你提供脚本代码看,是针对文件流操作。其中sum1是文件流每4字节数累计和,sum2减法计数,最后与sum1累减,要注意的是文件最后8个字节是用来分别存放sum1和sum2的结果。
可能的话,将要效验的文件传上来,这样才好写码测试。

2017-01-27 07:33
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
以下是引用ragnarok在2017-1-27 01:56:17的发言:
最后感谢大神能回答我的问题,如方便的话小弟想加大神好友详细请教下,必有重谢!也祝大神新年快乐!

在这个个人都是友好的交流讨论学习,个个都是好友。
有问题在坛子上提出是最好的方式,这样可以与更多的人从不同的角度讨论、分析、解决问题,分享大家的经验。
老实讲,本人来这也是想在问题中找学问,在帮人解决问题中学习新知识。不怕你说错,就怕你不说。
2017-01-27 07:46
ragnarok
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-1-24
收藏
得分:0 
以下是引用吹水佬在2017-1-27 07:46:43的发言:


在这个个人都是友好的交流讨论学习,个个都是好友。
有问题在坛子上提出是最好的方式,这样可以与更多的人从不同的角度讨论、分析、解决问题,分享大家的经验。
老实讲,本人来这也是想在问题中找学问,在帮人解决问题中学习新知识。不怕你说错,就怕你不说。


感谢版大百忙之中的解答,小弟这就将对比用的数据上传给您,您看下能不能找到解决方法,谢谢啦!

对比用存档.zip (10.77 KB)


存档6为第一个存档,存档7为过了10秒钟后的存档,理论上来讲应该除了时间以外没有任何其他变动的数据,麻烦版大帮忙看下

[此贴子已经被作者于2017-1-27 12:39编辑过]

2017-01-27 12:38
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
看了一下那两个文件,好象不存在sum1和sum2的数据,应该不是6楼那段代码处理的文件。
2017-01-27 15:42
快速回复:求解存档文本的checksum校验范围
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014151 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved