站点和App的重要升级公告

篠原 えみり (しのはら えみり) CV:Raica

篠原 えみり

和男主角再会的青梅竹马。
性格天神浪漫,纯真无垢,也很想得开。
从小就一直梦想这成为男主角的新娘。

一心一意,但是又很害羞,H方面基本毫无知识,不过一旦下了决心,就会很大胆。
喜欢做点心,想要开蛋糕店。

永井 智也 (ながい ともや)

平凡的男生,本作的男主角。
在班上被忘名字的次数可以算是NO.1了,各种意义上看都是存在感稀薄的少年。
实际上纤细而温柔,长相也不算很糟。
但是性格并不有趣,体育也不算出众,因此从不被女生所理睬。
偶尔会被一些人说恶心。

所属园艺部,喜欢种蔬菜。
喜欢朴素的工作,他做的菜简直可以称得上绝品。

遠藤 正文 (えんどう まさふみ)

智也的朋友。
在智也看起来他完全就不是一类人,但却总是找上门和智也聊天。
动画・特摄宅,常参加comiket,很耿直。
讨厌学习,成绩经常亮红灯。

小林 祐里 (こばやし ゆり) CV:桜華

綾辻果歩的好友,和男主角不同班。
实际上和遠藤正文是宅友,不过为了隐藏自己的宅身份,当众没和他很亲密。
长相秀美,头脑也很灵活,不过她属于那种没兴趣就不干的类型,成绩很糟糕。
爱憎分明,因此有时和班上人相处不好。

图片鉴赏:

分享到:

全部评论

really bad

2025-04-12 17:55:40
分享

现有的补丁问题都太多了😂,也可能是我电脑的问题 每次 勾选 伪造ui 就会打不开游戏

所以有没有兄弟重新翻一下😀,现有的补丁都是有单个字节,一遇到就会导致整个句子乱码,

研究半天原来是这个JB会社在 第二字节的秘钥 是在 第一字节秘钥 的 基础上 加上 0xd 再异或,而第一字节是直接异或秘钥,进游戏(不转区)的看文本都时候第一字节是已经解密了的,第二字节多余解密导致乱码,所以下面的脚本是反加密,即使不转区也不会出现大部分乱码,除非你句子中有单字节的字符

2025-12-24 23:49:13
分享
368511 回复 自己

import♀struct


def♀find_all_occurrences(data,♀pattern):
♀♀♀♀"""查找二进制数据中所有匹配模式的起始位置"""
♀♀♀♀positions♀=♀[]
♀♀♀♀start♀=♀0
♀♀♀♀while♀True:
♀♀♀♀♀♀♀♀pos♀=♀data.find(pattern,♀start)
♀♀♀♀♀♀♀♀if♀pos♀==♀-1:
♀♀♀♀♀♀♀♀♀♀♀♀break
♀♀♀♀♀♀♀♀positions.append(pos)
♀♀♀♀♀♀♀♀start♀=♀pos♀+♀1♀♀#♀继续向后查找
♀♀♀♀return♀positions

def♀rot_right_bulk(block:♀bytes,♀bits:♀int,♀xor_val:♀int):
♀♀♀♀"""批量处理字节旋转和异或"""
♀♀♀♀#♀创建预处理的查找表♀(256种可能的字节值)
♀♀♀♀table♀=♀bytearray([
♀♀♀♀♀♀♀♀((byte♀>>♀bits)♀|♀((byte♀<<♀(8♀-♀bits))♀&♀0xFF))♀^♀xor_val
♀♀♀♀♀♀♀♀for♀byte♀in♀range(256)
♀♀♀♀])
♀♀♀♀return♀bytes(table[b]♀for♀b♀in♀block)


def♀xor_decrypt(data,♀key):
♀♀♀♀"""
♀♀♀♀使用异或操作解密数据

♀♀♀♀Args:
♀♀♀♀♀♀♀♀data:♀要解密的字节数据
♀♀♀♀♀♀♀♀key:♀密钥字节,可以是任意长度

♀♀♀♀Returns:
♀♀♀♀♀♀♀♀解密后的字节数据
♀♀♀♀"""
♀♀♀♀if♀not♀data:
♀♀♀♀♀♀♀♀return♀b''

♀♀♀♀if♀not♀key:
♀♀♀♀♀♀♀♀raise♀ValueError("密钥不能为空")

♀♀♀♀#♀确保key是bytes类型
♀♀♀♀if♀isinstance(key,♀int):
♀♀♀♀♀♀♀♀key♀=♀bytes([key])
♀♀♀♀elif♀not♀isinstance(key,♀bytes):
♀♀♀♀♀♀♀♀key♀=♀str(key).encode('utf-8')
♀♀♀♀key_length♀=♀len(key)

♀♀♀♀#♀使用列表推导式进行异或解密
♀♀♀♀decrypted♀=♀bytes(data[i]♀^♀key[i♀%♀key_length]♀for♀i♀in♀range(len(data)))

♀♀♀♀return♀decrypted
def♀start(arc='Arc04.dat.old'):
♀♀♀♀try:
♀♀♀♀♀♀♀♀fb♀=♀open(arc,♀'rb')
♀♀♀♀♀♀♀♀b♀=♀fb.read()
♀♀♀♀except:
♀♀♀♀♀♀♀♀fb♀=♀open('Arc04.dat',♀'rb')
♀♀♀♀♀♀♀♀b♀=♀fb.read()
♀♀♀♀♀♀♀♀fb.close()
♀♀♀♀♀♀♀♀fold♀=♀open(arc,♀'wb')
♀♀♀♀♀♀♀♀fold♀.write(b)
♀♀♀♀♀♀♀♀fold.close()
♀♀♀♀♀♀♀♀fb♀=♀open(arc,♀'rb')
♀♀♀♀♀♀♀♀b♀=♀fb.read()


♀♀♀♀#♀查找所有匹配位置
♀♀♀♀pattern♀=♀b'\x00\x00\x00\x53'
♀♀♀♀positions♀=♀find_all_occurrences(b,♀pattern)

♀♀♀♀#♀可选:将文件内容写入新文件(根据你的需求)
♀♀♀♀new♀=♀'new'
♀♀♀♀fa♀=♀open(arc.replace('.old','')♀+♀'',♀'wb')
♀♀♀♀fa.write(b)
♀♀♀♀#♀输出所有位置(十六进制)
♀♀♀♀for♀pos♀in♀positions:
♀♀♀♀♀♀♀♀fb.seek(pos)
♀♀♀♀♀♀♀♀#♀print(fb.read(4))
♀♀♀♀♀♀♀♀fb.read(4)
♀♀♀♀♀♀♀♀size♀=♀fb.read(4)
♀♀♀♀♀♀♀♀key♀=♀size[0]
♀♀♀♀♀♀♀♀size♀=♀struct.unpack('i',size)[0]
♀♀♀♀♀♀♀♀#♀print('pos♀'+hex(pos).replace('0x','')+'h','size♀'+hex(size))
♀♀♀♀♀♀♀♀fb.seek(pos♀+♀4♀+♀size♀+♀3)
♀♀♀♀♀♀♀♀fe♀=♀fb.read(1)
♀♀♀♀♀♀♀♀fe♀=♀struct.unpack('B',♀fe)[0]
♀♀♀♀♀♀♀♀print(hex(fe),'->',hex(fe^size))
♀♀♀♀♀♀♀♀if♀fe^size!=0xfe:
♀♀♀♀♀♀♀♀♀♀♀♀continue
♀♀♀♀♀♀♀♀fb.seek(pos♀+♀4♀+♀4)
♀♀♀♀♀♀♀♀data♀=♀fb.read(size-1)
♀♀♀♀♀♀♀♀#♀data♀=♀rot_right_bulk(data,0,size)
♀♀♀♀♀♀♀♀fb.seek(pos+4)
♀♀♀♀♀♀♀♀key♀=♀fb.read(1)
♀♀♀♀♀♀♀♀key♀=♀((size+0xd)♀^♀size)&0XFF
♀♀♀♀♀♀♀♀key♀=♀struct.pack('B',key)
♀♀♀♀♀♀♀♀key♀=♀b'\x00'♀+♀key
♀♀♀♀♀♀♀♀data♀=♀xor_decrypt(data,key)
♀♀♀♀♀♀♀♀fa.seek(pos♀+♀4♀+♀4)
♀♀♀♀♀♀♀♀fa.write(data)
♀♀♀♀fa.close()
♀♀♀♀fb.close()
♀♀♀♀return♀positions♀♀#♀返回所有位置的列表


#♀调用函数并获取所有位置
all_positions♀=♀start()
#♀print("所有位置:",♀[hex(pos)♀for♀pos♀in♀all_positions])
 

2025-12-24 23:50:37
分享
登陆 后方可回复, 如果您还没有账号请先 注册