2026年10月30日 · 今日 0 帖 · 会员 6.1万 · 主题 17.4万
登录 · 注册 · 游客,欢迎随便逛逛
返回版块
11273
Lv1韶华一笑间等级图标等级图标等级图标等级图标
勋章勋章勋章勋章勋章勋章
帖子
62
回复
2,324
积分
2,042
注册
2011-02-07
[怀旧国机]

文件剪切手工分离HuR教程

[复制链接]
查看 828 回复 0
楼主 发表于 | 查看全部
2 人收藏

如果你有一个支持按字节剪切的十六进制编辑器,就可以手工分离HuR了。方法如下:

首先你要知道这个HuR中数据的长度。一般HuR的分卷大小为950KB,就是950*1024=972800B。可是最后一卷的大小怎么确定呢?

我们把文件指针跳转到倒数第24字节的位置(从文件开头起第L-24个字节,L是整个文件的长度),然后向后读取4字节,读出来的就是HuR的大小了,它是十六进制无符号整数(小尾)。比如,我们读到了BF 3A 21 58,怎么把它转换为10进制呢?

1.颠倒字节序。手机和电脑的CPU都是一群奇怪的家伙,都是倒着处理数据的,所以这个数也是倒的。我们为了看明白,得把它颠倒过来,变成58 21 3A BF。

2.每位乘权值,得到结果。

A~F=10~15,这个大家都知道吧。

所以58 21 3A BF = 15*16^0 + 11*16^1 + 10*16^2 + 3*16^3 + 1*16^4 + 2*16^5 + 8*16^6 + 5*16^7 = ……

16^3就是16的3次方=16*16*16

16^0=1

慢慢算吧,呵呵。

假设算得的结果是N,那么数据开始的位置就是从文件末尾开始倒数24+N个字节的位置(如果从文件开头算起,就是第L-24-N个字节,L是整个文件的长度),数据的长度就是N。

现在我们可以剪切了。

剪切好后再把各分卷的数据合并,我们就得到了一个完整的文件:)

希望有人可以把它变成程序:)

注:在php中可以用unpack('V',$$int);得到十进制数(不要颠倒字节序,返回的是数组)

在C语言中,用指针指向那四字节(不要颠倒字节序),然后把指针类型改成 无符号长整型(mrp SDK里用uint32,原始的定义关键字自己查)就得到整数了。java和Python中也有unpack()

备注:有的十六进制编辑器(如eHex2.mrp)带进制转换功能,只要颠倒字节序后输入进制转换器就可以知道分卷的大小了。

登录回复

登录后可以回复这个帖子。旧账号可使用原密码登录。

登录 注册新号
← 返回版块