游戏介绍
男主角・永井智也一天偶然目击了暗恋对象,班长・綾辻果歩在OB>C。
智也顿时惊呆了,再加上果歩还发现了他,他顿时陷入混乱。
果歩一步一步接近,直接将他推到,半强制的和智也发生了关系。
“这样一来,你也是共犯了呢”,丢下这句话,她便离开了。第二天,班级里传言会有美少女转校而来,不过智也却一直思考着昨天和果歩的事情。
果歩明明和他在教室里H过了,但却若无其事,依然是优等生的样子。
“为什么……和我H了呢……?”
完全不明所以就和自己暗恋对象发生了关系,智也满怀失落地回到家中。
而在他家门前却站着一名素不相识的美少女。
“好久不见,ともちゃん(男主角昵称)”
被亲切的搭了话。而智也却完全不知道她是谁,只得询问她的名字。
“我是えみり啊,ともちゃん的青梅竹马篠原えみり啊”
少女如此说道,智也感到一惊,而她接下来的发言更是让他目瞪口呆。
“えみり我啊……是为了向ともちゃん告白而回到这里的哟?”
就这样,完全呆住的智也什么话也没有说出来。第二天,えみり来到了班上,原来她正是之前传言的美少女转校生。
人物介绍:
而且她还毫不忌讳的向智也搭话,甚至还挽起他的手,两人顿时成了众人注目的对象。
正在智也感觉无比不自在时候,课桌里写有“放学后,到屋顶来”的纸条引起了他的注意。
放学后,智也如约来到了屋顶,等待他的,正是纸条的主人——果歩。
“你愿意,当我的炮友么?”
身为优等生的果歩,说出了这么一句超乎想象的话。綾辻 果歩 (あやつじ かほ) CV:榎津まお
男主角暗恋的同学,模范优等生。
容姿端丽,身材拔群,举止爽朗,成绩年级顶尖。
被同学喜欢,同时也被老师信赖着。
名副其实的高岭之花,因此很少有男生追求她。实际上是个表里极其不一的人,有着非常腹黑的一面。
暗中喜欢玩游戏,视力不佳,平时戴着隐形眼镜。
感想点评
目前还没有该游戏的感想点评,添加一篇



really bad
现有的补丁问题都太多了😂,也可能是我电脑的问题 每次 勾选 伪造ui 就会打不开游戏
所以有没有兄弟重新翻一下😀,现有的补丁都是有单个字节,一遇到就会导致整个句子乱码,
研究半天原来是这个JB会社在 第二字节的秘钥 是在 第一字节秘钥 的 基础上 加上 0xd 再异或,而第一字节是直接异或秘钥,进游戏(不转区)的看文本都时候第一字节是已经解密了的,第二字节多余解密导致乱码,所以下面的脚本是反加密,即使不转区也不会出现大部分乱码,除非你句子中有单字节的字符
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])