藏宝湾网游单机站

 找回密码
 注册

QQ登录

只需一步,快速开始

★69 元包站 Gm 手游平台★

★69 元包站 Gm 手游平台★

★Gm 游戏平台【无限资源包站平台,真正体验gm和土豪感觉】★

★白嫖放置传奇 玩通关算你赢★

★白嫖放置传奇 玩通关算你赢★

★白嫖长久耐玩型 放置类挂机传奇游戏 充值可打 安全挂机 可交易 无PK★

★@梦幻长久耐玩全新大唐九黎★

★@!!——梦幻长久耐玩全新大唐九黎——!!★

★★新增全新门派九黎城, ★侵烛系统 ★静脉系统 ★赐福系统 ★战斗动作声效系统 ★全场景NPC、召唤兽迭代最新 ★17个副本,完全还原 ★独家PK系统,享受极致免费PK★★

承接推广
★承接推广★

★承接推广★

☆ 六一活动开放-放置传奇☆

★ 六一活动开放-放置传奇★

★可白嫖 上班摸鱼类 放置文字传奇游戏(放置休闲)qq群756025698★

★三职业复古★开局送神装★爆率100%★零氪首选★

★三职业复古★开局送神装★爆率100%★零氪首选★

★〖双线〗〖无忧传奇〗〖每日新区〗〖开局送神装 100%高爆率 装备元宝打怪爆〗★

承接推广

★承接推广★

★承接推广★

承接推广

★承接推广★

★承接推广★

★DNF★全职业平衡★公益服★
★DNF★全职业平衡★公益服★

【dnf86版本】【怀旧服】【全职业平衡】【非变态服】【非商业服】【774031300】

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

查看: 720|回复: 4

[原创] 远征ol解密修改DBProcedure_dbs工具

[复制链接]
 楼主| 发表于 2026-4-20 16:17:29 | 显示全部楼层 |阅读模式
DBProcedure是服务端数据库文件 增加新东西必须修改他 我查看源代码是有这个加密工具 打开文件安装Python File


通过网盘分享的文件:完整修复工具包.zip 解压密码290076648
链接: https://pan.baidu.com/s/1YtAZH1-tBx7niszwzaWasA 提取码: jdc4



"""
DBProcedure.dbs 解密/修改/加密工具
═════════════════════════════════════
加密算法来源: /home/server/Cluster/DBEngine/readscheme.cpp
密钥: ENCRYPT_KEY = '8f$L' (0x3866244C)
文件格式: XML (TinyXML解析)

用法:
    1. 复制此文件到Windows服务器
    2. 安装Python 3.6+ (https://python.org)
    3. 双击运行 或 CMD执行: python DBProcedure_dbs_解密修改工具.py
"""

import struct
import os
import shutil
from datetime import datetime

# ═══════════════════════════════════════════════════════════
# 加密/解密核心算法 (与C++代码完全一致)
# ═══════════════════════════════════════════════════════════

ENCRYPT_KEY = 0x3866244C  # '8f$L' 小端序


def init_hash_buffer():
    """初始化g_hashBuffer (完全按C++ readscheme.cpp第50-71行)"""
    hash_buffer = [0] * 0x500
    dwSeed = 0x00100001
   
    for dwIndex1 in range(0x100):
        dwIndex2 = dwIndex1
        for i in range(5):
            dwSeed = (dwSeed * 125 + 3) % 0x2AAAAB
            dwTemp1 = (dwSeed & 0xFFFF) << 0x10
            
            dwSeed = (dwSeed * 125 + 3) % 0x2AAAAB
            dwTemp2 = (dwSeed & 0xFFFF)
            
            hash_buffer[dwIndex2] = (dwTemp1 | dwTemp2)
            dwIndex2 += 0x100
   
    return hash_buffer


def encrypt_decrypt(data, key=ENCRYPT_KEY):
    """
    加密/解密函数 (C++ readscheme.cpp第77-117行)
    XOR加密是自逆的: 加密(解密(数据)) = 原始数据
    """
    hash_buffer = init_hash_buffer()
   
    # 初始化种子 (第88-93行)
    seed1 = (key ^ 0xEEEEEEEE)
    seed1 = (seed1 << 32) | ((~(key ^ 0xEEEEEEEE)) & 0xFFFFFFFF)
    seed2 = 0xEEEEEEEEEEEEEEEE
   
    data = bytearray(data)
    size = len(data)
    size8 = size >> 3       # 8字节块数
    size_trail = size & 7   # 尾部字节数
   
    pos = 0
    # 处理8字节块 (第98-116行)
    for _ in range(size8):
        idx = 0x200 + (seed1 & 0x7F)
        lo = hash_buffer[idx * 2] if idx * 2 < len(hash_buffer) else 0
        hi = hash_buffer[idx * 2 + 1] if idx * 2 + 1 < len(hash_buffer) else 0
        qw_val = (hi << 32) | lo
        seed2 = (seed2 + qw_val) & 0xFFFFFFFFFFFFFFFF
        
        block = struct.unpack('<Q', data[pos:pos+8])[0]
        ch = block ^ ((seed1 + seed2) & 0xFFFFFFFFFFFFFFFF)
        
        not_seed1 = (~seed1) & 0xFFFFFFFFFFFFFFFF
        seed1 = ((not_seed1 << 0x2A) + 0x1111111111111111) & 0xFFFFFFFFFFFFFFFF
        seed1 |= ((ch) >> 0x16)
        
        seed2 = (seed2 + (seed2 << 0xA) + 3) & 0xFFFFFFFFFFFFFFFF
        
        struct.pack_into('<Q', data, pos, ch & 0xFFFFFFFFFFFFFFFF)
        pos += 8
   
    # 处理尾部字节 (第115行)
    seed1_bytes = struct.pack('<Q', seed1 & 0xFFFFFFFFFFFFFFFF)
    for i in range(size_trail):
        data[pos + i] ^= seed1_bytes
   
    return bytes(data)


# ═══════════════════════════════════════════════════════════
# XML处理函数
# ═══════════════════════════════════════════════════════════

import xml.etree.ElementTree as ET
import re


def add_cmdid_3407(xml_text):
    """
    在XML中添加cmdid=3407条目
    参考已有条目格式
    """
    # 查找所有cmdid条目
    cmdid_pattern = re.compile(r'cmdid\s*=\s*"(\d+)"', re.IGNORECASE)
    existing_cmdids = [int(x) for x in cmdid_pattern.findall(xml_text)]
   
    print(f"  现有cmdid数量: {len(existing_cmdids)}")
    print(f"  cmdid范围: {min(existing_cmdids) if existing_cmdids else 'N/A'} - {max(existing_cmdids) if existing_cmdids else 'N/A'}")
   
    if 3407 in existing_cmdids:
        print("  [!] cmdid=3407 已存在!")
        return xml_text
   
    # 找到cmdid=3406或附近的条目作为参考
    reference_cmdid = None
    for ref in [3406, 3405, 3400, 3399]:
        if ref in existing_cmdids:
            reference_cmdid = ref
            break
   
    if reference_cmdid:
        # 提取参考条目的XML格式
        ref_pattern = re.compile(
            r'(<procedure\s+cmdid\s*=\s*"' + str(reference_cmdid) + r'"[^>]*>.*?</procedure>)',
            re.DOTALL | re.IGNORECASE
        )
        match = ref_pattern.search(xml_text)
        if match:
            ref_xml = match.group(1)
            print(f"  参考条目(cmdid={reference_cmdid}):")
            # 显示参考条目的前几行
            ref_lines = ref_xml.split('\n')
            for line in ref_lines[:5]:
                print(f"    {line.strip()}")
            
            # 基于参考条目创建新的3407条目

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2026-4-21 00:47:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2026-4-23 08:34:26 | 显示全部楼层
这远征管理面板是什么,大佬
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-4-24 19:31:34 | 显示全部楼层
mj123456789 发表于 2026-4-23 08:34
这远征管理面板是什么,大佬

是后台管理
[发帖际遇]: bfdz49 被钱袋砸中进医院,看病花了 3 枚 金币. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

发表于 2026-4-28 13:10:13 | 显示全部楼层
楼主历害呀 感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明

排行榜|联系我们|小黑屋|手机版|Archiver|游戏藏宝湾 |

GMT+8, 2026-6-4 14:53 , Processed in 0.166148 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表