bfdz49 发表于 2026-4-20 16:17:29

远征ol解密修改DBProcedure_dbs工具

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 = * 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 = (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 if idx * 2 < len(hash_buffer) else 0
      hi = hash_buffer if idx * 2 + 1 < len(hash_buffer) else 0
      qw_val = (hi << 32) | lo
      seed2 = (seed2 + qw_val) & 0xFFFFFFFFFFFFFFFF
      
      block = struct.unpack('<Q', data)
      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 ^= 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 =
   
    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 :
      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条目

dnmjs 发表于 2026-4-21 00:47:27

:

mj123456789 发表于 2026-4-23 08:34:26

这远征管理面板是什么,大佬

bfdz49 发表于 2026-4-24 19:31:34

mj123456789 发表于 2026-4-23 08:34
这远征管理面板是什么,大佬

是后台管理

szdxzhao 发表于 2026-4-28 13:10:13

楼主历害呀 感谢分享
页: [1]
查看完整版本: 远征ol解密修改DBProcedure_dbs工具

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