远征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条目
: 这远征管理面板是什么,大佬 mj123456789 发表于 2026-4-23 08:34
这远征管理面板是什么,大佬
是后台管理 楼主历害呀 感谢分享
页:
[1]