🇺🇸 - 🇧🇷 CrossFire 1.0 — 2012 | Research & Reconstruction Project

Newbie Spellweaver
Joined
Jun 12, 2026
Messages
22
Reaction score
2

🇺🇸 CrossFire 1.0 — 2012 | Research & Reconstruction Project​

Hello, I'm JonyLiveBR, and I'm starting a new project focused on CrossFire 1.0, based on the 2012 version.

The goal is to study, understand, document, and gradually reconstruct the environment required to run this old version of CrossFire, instead of simply relying on old server packages found on the internet.

Everything is being developed and tested locally, in a controlled environment, strictly for study, research, preservation, and development purposes.

The project is based exclusively on materials, files, clients, server packages, and information that have already been publicly available on the internet.

Why am I doing this?​

Over the years, several old CrossFire server packages have been shared online. These materials are extremely useful for understanding how older versions of the game worked, but there is a major problem:

Some of these packages have been modified by third parties and may contain malware, trojans, backdoors, hacks, suspicious DLLs, or modified executables that are unrelated to the legitimate operation of the original server.

During my tests, I also noticed that some suspicious components may affect other files after being executed.

This can create a chain reaction: you start with a few compromised files and, after running the environment, additional executables or components may also become affected.

A common explanation is that these detections happen simply because the software is old or incompatible with modern versions of Windows.

While compatibility issues and false positives can certainly exist with old software, my analysis has also found cases involving files that appear to have actually been modified or compromised.

Because of this, I decided to take a different approach.

Reconstructing the server​

Instead of downloading an old package and trusting everything inside it, I'm analyzing the CrossFire 1.0 / 2012 architecture component by component.

This includes studying:

  • EXE files;
  • DLL libraries;
  • dependencies;
  • server services;
  • communication between services;
  • executable paths;
  • configuration files;
  • database communication;
  • client/server communication;
  • server initialization procedures;
  • internal file structures.
Through reverse engineering and controlled testing, the objective is to understand what each component actually needs to do.

Whenever possible, I'm working toward recreating or replacing components instead of permanently depending on unknown legacy binaries.

Using publicly available server files as reference material, I have already been able to get a server environment running with practically no errors during gameplay.

That working environment provides an important reference for understanding what each service expects and what is actually required for the game to operate.

Breaking old client limitations​

Another important part of this research involves the limitations commonly associated with old CrossFire clients.

One example is the claim that adding additional weapons or expanding certain structures in these old clients is impossible because of fixed limits.

During my research, I managed to work around some of these limitations by expanding the available space in certain structures instead of remaining restricted to the original allocated size.

This opens the possibility of researching additional content while preserving the characteristics and gameplay of the old CrossFire versions.

Custom CrossFire tools​

I'm also developing my own tools to read, analyze, and edit CrossFire files.

Instead of depending entirely on old tools of unknown origin, the goal is to gradually create a cleaner development environment where the game's structures can be studied and modified in a controlled way.

As the research progresses, these tools should also make it easier to document the formats and structures used by this version of the game.

📅 Daily Development Reports​

I also want this project to be documented from the beginning.

For this reason, every day I will publish a development report describing what happened during that day's work.

These reports may include:

  • what was analyzed;
  • files and components being studied;
  • problems and incompatibilities discovered;
  • solutions that were tested;
  • successful and unsuccessful experiments;
  • progress with the server and client;
  • development of new tools;
  • discoveries made through reverse engineering;
  • modifications and improvements;
  • current problems;
  • and the next steps planned for the project.
Not every day will necessarily result in a major breakthrough. Some days may be dedicated entirely to analyzing a single executable, DLL, protocol, file structure, or unexpected problem.

The idea is to document the real development process — including the problems, failed attempts, solutions, and discoveries along the way.

Over time, these daily reports will create a complete development history of the project and may also become useful technical documentation for people interested in researching old CrossFire versions.

The objective​

The objective is not simply to put another private server online.

I want to understand the architecture behind this version of CrossFire and create a cleaner, documented, reproducible, and understandable environment for research and preservation.

Every executable, DLL, dependency, configuration, and required path is being analyzed individually.

This is a long process. We are dealing with software and infrastructure from around 2012, and much of the original technical documentation is no longer easily available.

But that is exactly what makes documenting this process interesting.

If you're interested in old-school CrossFire, reverse engineering, game preservation, server development, or modding, you're welcome to follow the project and its daily progress.

Developer: JonyLiveBR

Discord:

Telegram:
YouTube:

CrossFire 1.0 • 2012 • Reverse Engineering • Research • Development • Game Preservation


🇧🇷 CrossFire 1.0 — 2012 | Projeto de Estudo e Reconstrução​

Olá! Eu sou o JonyLiveBR e estou iniciando um novo projeto focado no CrossFire 1.0, baseado na versão de 2012.

O objetivo é estudar, compreender, documentar e reconstruir gradualmente o ambiente necessário para executar essa antiga versão do CrossFire, em vez de simplesmente depender dos antigos pacotes de servidor encontrados na internet.

Todo o desenvolvimento e todos os testes estão sendo realizados localmente, em ambiente controlado, exclusivamente para fins de estudo, pesquisa, preservação e desenvolvimento.

O projeto utiliza exclusivamente como referência materiais, arquivos, clientes, pacotes de servidor e informações que já foram disponibilizados publicamente na internet.

Por que estou fazendo isso?​

Ao longo dos anos, diversos pacotes antigos de servidores de CrossFire foram compartilhados na internet. Esse material é extremamente útil para entender o funcionamento das versões antigas do jogo, mas existe um grande problema:

Alguns desses pacotes foram modificados por terceiros e podem conter malwares, trojans, backdoors, hacks, DLLs suspeitas ou executáveis modificados que não possuem relação com o funcionamento legítimo do servidor original.

Durante meus testes, também percebi que determinados componentes suspeitos podem afetar outros arquivos depois de executados.

Isso pode criar um efeito em cadeia: você começa com alguns arquivos comprometidos e, depois de executar aquele ambiente, outros executáveis ou componentes também podem acabar sendo afetados.

É comum encontrar a explicação de que essas detecções acontecem simplesmente porque os arquivos são antigos ou incompatíveis com versões modernas do Windows.

Embora problemas de compatibilidade e falsos positivos realmente possam existir em softwares antigos, durante minhas análises também encontrei situações envolvendo arquivos que aparentam ter sido efetivamente modificados ou comprometidos.

Por esse motivo, decidi seguir outro caminho.

Reconstruindo o servidor​

Em vez de simplesmente baixar um pacote antigo e confiar em tudo que existe dentro dele, estou analisando a arquitetura do CrossFire 1.0 / 2012 componente por componente.

O trabalho envolve o estudo de:

  • arquivos EXE;
  • bibliotecas DLL;
  • dependências;
  • serviços do servidor;
  • comunicação entre os serviços;
  • caminhos utilizados pelos executáveis;
  • arquivos de configuração;
  • comunicação com o banco de dados;
  • comunicação entre cliente e servidor;
  • processo de inicialização dos serviços;
  • estruturas internas dos arquivos.
Por meio de engenharia reversa e testes controlados, o objetivo é entender o que cada componente realmente precisa fazer.

Sempre que possível, estou trabalhando na recriação ou substituição de componentes, evitando depender permanentemente de binários antigos e de origem desconhecida.

Utilizando os arquivos já disponibilizados publicamente na internet como material de referência, já consegui colocar um ambiente de servidor em funcionamento com praticamente nenhum erro durante as partidas.

Esse ambiente funcional serve como uma referência importante para entender o que cada serviço espera e o que realmente é necessário para o funcionamento do jogo.

Superando limitações dos clientes antigos​

Outra parte importante da pesquisa envolve algumas limitações normalmente atribuídas aos clientes antigos do CrossFire.

Um exemplo é a afirmação de que seria impossível adicionar novas armas ou expandir determinadas estruturas nesses clientes devido a limites fixos.

Durante minhas pesquisas, consegui trabalhar em algumas dessas limitações, aumentando o espaço disponível em determinadas estruturas em vez de permanecer limitado ao tamanho originalmente reservado.

Isso abre possibilidades interessantes para estudar a implementação de novos conteúdos sem abandonar as características e a jogabilidade das versões antigas do CrossFire.

Ferramentas próprias para CrossFire​

Também estou desenvolvendo minhas próprias ferramentas para ler, analisar e editar arquivos do CrossFire.

Em vez de depender completamente de ferramentas antigas e de origem desconhecida, a ideia é construir gradualmente um ambiente de desenvolvimento mais limpo, onde as estruturas utilizadas pelo jogo possam ser estudadas e modificadas de maneira controlada.

Conforme a pesquisa avançar, essas ferramentas também poderão ajudar na documentação dos formatos e estruturas utilizados por essa versão.

📅 Relatórios diários de desenvolvimento​

Também quero que todo esse projeto fique documentado desde o início.

Por isso, todos os dias pretendo publicar um relatório mostrando o que aconteceu durante aquele dia de desenvolvimento.

Os relatórios poderão incluir:

  • o que foi analisado;
  • arquivos e componentes estudados;
  • problemas e incompatibilidades encontrados;
  • soluções testadas;
  • testes que funcionaram e testes que falharam;
  • progresso no servidor e no cliente;
  • desenvolvimento de novas ferramentas;
  • descobertas feitas através da engenharia reversa;
  • modificações e melhorias realizadas;
  • problemas que ainda precisam ser resolvidos;
  • próximos passos do projeto.
Nem todo dia necessariamente terá uma grande descoberta. Alguns dias poderão ser dedicados completamente à análise de um único executável, DLL, protocolo, estrutura de arquivo ou problema inesperado.

A intenção é mostrar o desenvolvimento como ele realmente acontece — incluindo problemas, tentativas que não funcionaram, soluções encontradas e descobertas feitas durante o caminho.

Com o tempo, esses relatórios formarão um histórico completo da evolução do projeto e também poderão servir como documentação técnica para outras pessoas interessadas em estudar versões antigas do CrossFire.

Objetivo do projeto​

O objetivo não é simplesmente colocar mais um servidor privado online.

Quero compreender a arquitetura por trás dessa versão do CrossFire e construir uma base mais limpa, documentada, reproduzível e compreensível para estudo e preservação.

Cada executável, DLL, dependência, configuração e caminho necessário está sendo analisado individualmente.

É um processo demorado. Estamos trabalhando com software e infraestrutura de aproximadamente 2012, e grande parte da documentação técnica original já não está facilmente disponível.

Mas é justamente por isso que considero importante documentar esse trabalho.

Se você também gosta de CrossFire antigo, engenharia reversa, preservação de jogos, desenvolvimento de servidores ou modding, está convidado a acompanhar diariamente a evolução do projeto.

Desenvolvedor: JonyLiveBR

Discord:

Telegram:
YouTube:

CrossFire 1.0 • 2012 • Engenharia Reversa • Pesquisa • Desenvolvimento • Preservação de Jogos

[DEV LOG #01] CrossFire 1.0 — Rebuilding the Server from Scratch​

Clean gDBGW Reconstruction & Compatibility Research​

Hello, I'm JonyLiveBR.

Before anything else, I want to thank CoderCF for publicly sharing a package containing CrossFire 1.0 Server Files, Client, and Databases.

Finding a complete package like this is extremely rare.

Most of the time, when researching old CrossFire versions, you only find isolated databases, incomplete clients, old tools, or server files from different revisions. Then you have to figure out which files are compatible with each other and make the client, server, and database work together.

Having Client + Server Files + Databases from the same environment is extremely valuable for anyone studying or preserving old versions of the game.

Original post:
https://forum.ragezone.com/threads/...iles-and-tools-client-cf-ph-gameclub.1229454/

Special thanks again to CoderCF for preserving and sharing this material.

Why am I doing this project?​

There is growing concern within the Brazilian CrossFire community about the long-term future of CrossFire Brazil, including rumors and discussions about a possible shutdown of Brazilian operations in the future.

I am not treating those rumors as officially confirmed information.

Regardless of whether that eventually happens or not, I believe it is important to study and document old CrossFire versions while this material is still available.

The purpose of this project is strictly:

  • technical study;
  • research;
  • reverse engineering;
  • documentation;
  • preservation;
  • software development.
Everything is being developed and tested locally, in a controlled environment.

I am using only materials, clients, databases, tools, and server files that have already been publicly shared on the internet.

My CrossFire archive​

Over the years, I have collected a large amount of material related to CrossFire.

At the moment, my archive contains more than 700 GB of files, including:

  • Clients;
  • Server Files;
  • Databases;
  • Tools;
  • Configuration files;
  • Test builds;
  • Old versions;
  • CrossFire 1.0 material;
  • CrossFire 2.0 material;
  • CrossFire 3.0 material.
Several of these environments have worked at some point.

The recurring problem has almost always been the same:

Suspicious or malicious files.

I have found environments that were functional as game servers but contained suspicious executables, DLLs, tools, or other components.

This is one of the main reasons I decided to approach the project differently.

The problem with old server packages​

There is a common belief that antivirus software detects these files only because they are old.

Sometimes that is true.

Old software can trigger:

  • false positives;
  • compatibility warnings;
  • detections caused by obsolete compilers;
  • old libraries;
  • behaviors considered suspicious by modern security software.
However, during my analysis, I also found cases where the behavior could not reasonably be explained only as a false positive.

Some packages appear to contain components that may participate in a real infection chain.

Example:


Compromised file is executed
↓
Other files or components are modified
↓
Additional executables begin showing suspicious behavior
↓
The entire environment becomes increasingly compromised

This can create a snowball effect.

Because of that, simply adding antivirus exclusions is not acceptable for what I want to build.

My approach is different:

Understand the required behavior, document it, and rebuild components when possible.
The first major component selected for this work is:

gDBGW.exe​


What is​

The gDBGW.exe executable works as a gateway between the CrossFire server executables and the SQL Server databases.

The game services do not necessarily access SQL Server directly.

They primarily communicate through:
DBGWManager.dll

The DLL communicates with the gateway through TCP.

Observed architecture:
CrossFire Server
↓
DBGWManager.dll
↓
TCP 127.0.0.1:6666
↓
gDBGW
↓
Selects the corresponding database alias
↓
SQL Server

Rebuilding gDBGW correctly is therefore one of the key steps toward replacing unknown legacy components.

1. Initialization​

The gateway mainly uses two configuration files:

C:\pmang\gDBGW\gDBGW.ini
C:\pmang\DBGWMGR.ini
The gDBGW.ini file contains information such as:

  • TCP port;
  • SQL Server addresses;
  • databases;
  • aliases;
  • connection pool sizes;
  • ping intervals;
  • reconnection settings;
  • logging options;
  • internal gateway settings.
The port currently identified in this environment is:
6666

Main database aliases identified:

AliasDatabase
CF_GAMEDBCF_PH_GAME
CF_GUILDDBCF_PH_GUILD
CF_LOGDBCF_PH_LOG
CF_BILLDBMICROGAMESBILL_DB
CF_AUTHDBMYGAME_MEMBER

2. Connection Pools​

gDBGW does not necessarily work with only one SQL connection per database.

It maintains a connection pool for each alias.

In the current INI configuration, approximately:
10 connections per database

are requested.

The gateway also needs to manage:

  • periodic connection checks;
  • reconnection after failure;
  • selection of an available connection;
  • timeouts;
  • pause;
  • resume;
  • connection pool state.

3. Server Authentication​

When DBGWManager.dll starts communicating with the gateway, it sends an authentication request.

Observed fields include:

  • frame size;
  • message tag;
  • server SSN;
  • authentication/test query.
Confirmed communication example:
Tag: 1
Type: ConnectReq

SSN: 318
Query: select 1

Tag: 1
Type: ConnectReq

SSN: 318
Query: select 1

Expected gateway response:


Tag: 2
Type: ConnectAns

Error: 0

This behavior has already been reproduced in the clean executable being developed.

Most importantly:

THE ORIGINAL DLL ACCEPTED THE RESPONSE.

4. Receiving Queries​

After authentication, the DLL starts sending actual requests.

The request contains information such as:

  • query type or priority;
  • request ID;
  • payload size;
  • command text.
An internal structure observed in logs is similar to:
ALIAS|TYPE|COMMAND|PARAMETERS...

Direct SQL example:
CF_GAMEDB|Q|select CODE_NAME from CF_REF_CODE where MAIN_CODE='36091'

Stored procedure example:
CF_GAMEDB|S|GSP_AL_SERVER_CANCEL|1

Main types identified:
Q = SQL Query
S = Stored Procedure

5. DBGWMGR.ini Catalog​

The file:
acts as a catalog of accepted queries and their parameters.

Conceptual example:
Q6=SP_USER_NICK_CHECK|p_i_nick|I|STR|p_o_result|R|INT

Observed directions:
I = Input
O = Output
R = Return

Observed data types include:
INT
BIG
STR

Other types may also be used depending on the specific version.

The gateway validates information such as:

  • whether the query exists;
  • number of parameters;
  • parameter names;
  • parameter direction;
  • parameter type;
  • corresponding database alias.

6. SQL Server Execution​

After interpreting a request, the gateway needs to:

  1. identify the alias;
  2. select an available SQL connection;
  3. locate the query definition;
  4. convert incoming values;
  5. create SQL parameters;
  6. execute the command;
  7. collect rows and columns;
  8. collect output parameters;
  9. collect stored procedure return values;
  10. serialize the result.
It also needs to handle:

  • NULL values;
  • timeouts;
  • SQL errors;
  • reconnections;
  • invalid parameters;
  • invalid queries.

7. Result Format​

Another important part of the reconstruction was identifying how results are returned to the server.

The result is converted into a text structure delimited by:
|

Examples observed:
S|0|

This may represent a successful query with no additional data.

Another example:
S|0|0|

Larger responses may look like:
S|0|01|QA|QA|-1|3000|192.168.1.5|10008|0|...

When multiple rows are returned, the values are serialized sequentially.

The service that made the request already knows the expected structure for that query and can interpret the columns.

Stored procedures can also produce responses such as:
S|1|
The exact meaning of the second field may depend on the specific operation.

8. Response to​

The gateway returns a new frame containing approximately:

  • frame size;
  • Tag 3;
  • request ID;
  • result size;
  • serialized result.
The request ID is important because it allows the server to match the response to the original request.

During tests with the reconstructed gateway, we already received:
DBGWMInit result=1 error=0
and:
ExecuteQuery result=1 error=0

This confirms that important parts of the protocol expected by the original DBGWManager.dll are already being reproduced.

9. Heartbeat and Maintenance​

The original gDBGW does much more than receive a query and execute SQL.

Other observed or expected systems include:

  • heartbeat;
  • disconnected client detection;
  • reconnection;
  • pause/resume;
  • statistics;
  • executed query counters;
  • queues;
  • priorities;
  • profiling;
  • slow query monitoring;
  • connection pool control;
  • performance monitoring.
These functions will be reconstructed gradually.

10. Logs​

The main log directory used by the original environment is:
C:\LOG\GDBGW

These logs are extremely important for reverse engineering.

They can reveal:

  • received queries;
  • aliases;
  • executed SQL;
  • parameters;
  • serialized results;
  • parsing errors;
  • SQL errors;
  • reconnections;
  • network behavior;
  • gateway behavior.
This allows the following research workflow:
Original gDBGW
↓
Observed behavior
↓
Own implementation
↓
Behavior comparison

What has already been rebuilt?​

The current clean implementation already includes:

  • ✅ Reading gDBGW.ini
  • ✅ Reading DBGWMGR.ini
  • ✅ Recognition of the five identified databases
  • ✅ Successful connection to all five databases
  • ✅ Basic connection pools
  • ✅ Local TCP listener
  • ✅ Port 6666
  • ✅ Authentication compatible with DBGWManager.dll
  • ✅ Frame reading
  • ✅ Request ID identification
  • ✅ Query identification
  • ✅ Correlated responses
  • ✅ Basic response structure:

S|0|...

  • ✅ x86 build
  • ✅ Execution in the local test environment
  • ✅ Current build accepted by Windows Defender without detection
There is still a lot of work ahead, especially with:

  • complete DBGWMGR.ini query support;
  • stored procedures;
  • Input / Output / Return parameters;
  • additional data types;
  • multi-row results;
  • heartbeat;
  • reconnection;
  • pools;
  • queues;
  • priorities;
  • complete error handling;
  • compatibility with the remaining server executables.
But the most important milestone has already happened:

THE ORIGINAL CROSSFIRE SERVER STARTED COMMUNICATING WITH OUR OWN GATEWAY.
That is a major step for this project.

Final Objective​

The objective is not simply to modify an old executable until antivirus software stops detecting it.

The goal is to progressively reduce dependency on unknown legacy binaries.

The intended workflow is:
Public old files
↓
Analysis
↓
Documentation
↓
Reverse Engineering
↓
Reimplementation
↓
Compatibility Testing
↓
Controlled and understandable component

The goal is to understand each part of the CrossFire environment.

One component at a time.

Next Steps​

Development of the new gDBGW will continue with focus on:

  • real execution of DBGWMGR.ini queries;
  • stored procedures;
  • Input / Output / Return parameters;
  • multiple data types;
  • multi-row result handling;
  • heartbeat;
  • reconnection;
  • connection pools;
  • queues;
  • priorities;
  • complete error handling;
  • compatibility with the remaining executables.
After that, other server components may also be analyzed and, when possible, reconstructed.

Daily Development Reports​

From now on, I intend to publish a development report every day showing what happened during the project.

These daily reports may include:

  • components analyzed;
  • discoveries;
  • file structures;
  • protocols;
  • problems;
  • successful tests;
  • failed tests;
  • tools developed;
  • reconstructed components;
  • changes performed;
  • current limitations;
  • next objectives.
Not every day will contain a major breakthrough.

Sometimes an entire day may be spent understanding only a few bytes of a network packet, one function, one DLL, one structure, or one unexpected behavior.

That is exactly what I want to document:

THE REAL DEVELOPMENT PROCESS, INCLUDING ERRORS, FAILED ATTEMPTS, SOLUTIONS, AND DISCOVERIES.
Over time, these reports should create a complete technical history of the project.
 
Last edited:
That’s very good you have a bright future in the world of CrossFire I want you to brush up on your knowledge 👌
 
Back