{"id":21098332,"url":"https://github.com/vankata453/zoneinternetgamesserver","last_synced_at":"2025-08-10T15:08:22.086Z","repository":{"id":236390450,"uuid":"792512248","full_name":"Vankata453/ZoneInternetGamesServer","owner":"Vankata453","description":"Aiming to bring back the functionality of the Internet Games, included in Windows 7 and XP.","archived":false,"fork":false,"pushed_at":"2025-06-26T21:55:20.000Z","size":8213,"stargazers_count":31,"open_issues_count":1,"forks_count":2,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-06-26T23:12:09.781Z","etag":null,"topics":["gameserver","internet-games","reverse-engineering","windows-7","windows-xp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vankata453.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-26T20:33:47.000Z","updated_at":"2025-06-26T21:55:24.000Z","dependencies_parsed_at":"2024-05-08T23:28:22.033Z","dependency_job_id":"372a3216-7772-47c2-b2a2-ec515884e70f","html_url":"https://github.com/Vankata453/ZoneInternetGamesServer","commit_stats":null,"previous_names":["vankata453/zoneinternetgamesserver"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Vankata453/ZoneInternetGamesServer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vankata453%2FZoneInternetGamesServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vankata453%2FZoneInternetGamesServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vankata453%2FZoneInternetGamesServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vankata453%2FZoneInternetGamesServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vankata453","download_url":"https://codeload.github.com/Vankata453/ZoneInternetGamesServer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vankata453%2FZoneInternetGamesServer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269740356,"owners_count":24467757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gameserver","internet-games","reverse-engineering","windows-7","windows-xp"],"created_at":"2024-11-19T22:54:39.976Z","updated_at":"2025-08-10T15:08:22.075Z","avatar_url":"https://github.com/Vankata453.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zone Internet Games Server\n\nThis project aims to bring back the functionality of the Internet Games included in Windows 7 and XP, the servers for which were officially shut down on:\n\n* **Windows XP**: July 31st, 2019\n* **Windows 7**: January 22nd, 2020\n\nThose games include:\n\n* Internet Backgammon (XP, 7)\n* Internet Checkers (XP, 7)\n* Internet Spades (XP, 7)\n* Internet Hearts (XP)\n* Internet Reversi (XP)\n\n## Connecting an Internet Game to a hosted Internet Games Server\n\n1. Ensure you have access to a hosted [Internet Games Server](#internet-games-server), either on `localhost`, your local network or via the Internet.\n2. From the [latest release of this project](https://github.com/Vankata453/ZoneInternetGamesServer/releases), under \"Assets\", download the \"Release\" package for your architecture (x64 or x86).\n3. Extract the downloaded package, containing the [Internet Games Server](#internet-games-server), custom client DLL and injector.\n\n\u003e [!NOTE]\n\u003e\n\u003e Ensure the custom client DLL (`InternetGamesClientDLL.dll`) and the injector (`DLLInjector.exe`) are in the same directory!\n\n4. Start an Internet Game of your choice (preferably keep it on the initial info window).\n5. Run `DLLInjector.exe` with a [target game argument](#command-line-arguments-dll-injector) and a dialog to type a host and port to an [Internet Games Server](#internet-games-server) should appear!\n\n\u003e [!WARNING]\n\u003e\n\u003e `DLLInjector.exe` is likely to be flagged by antivirus software as a threat, namely Win32/DefenseEvasion.A!ml. That is normal, since DLL Injecting is behaviour\n\u003e commonly used in malware to inject malicious code into other processes.\n\u003e\n\u003e DLL injecting, however, is required for preparing the Internet Games to connect to a custom server. Make sure you add `DLLInjector.exe` as an exception in your antivirus software!\n\n\u003e [!TIP]\n\u003e\n\u003e You can create a shortcut to `DLLInjector.exe` with a [target game argument](#command-line-arguments-dll-injector) for ease!\n\n## Includes\n\nThis repository includes, or will include, the following:\n\n### Internet Games Server\n\n![Preview of the Internet Games Server in action](docs/img/README_ServerPreview.png)\n\nA Winsock server, which aims to make the Internet Games playable by acting as a Zone games server.\nIt matches players in lobbies, depending on the game being played, as well as the chosen skill level.\nIt can manage many matches of any of the games at the same time.\n\nEach game has custom messages, which need to be supported by the server in order for it to function properly.\nThe current progress on individual game support is the following:\n\n#### Internet Backgammon (Windows 7)\n\nFully supported, according to my testing.\n\n![Internet Backgammon (7)](docs/img/README_BackgammonPreview.png)\n\n#### Internet Checkers (Windows 7)\n\nFully supported, according to my testing.\n\n![Internet Checkers (7)](docs/img/README_CheckersPreview.png)\n\n\u003e [!NOTE]\n\u003e\n\u003e For Internet Checkers, the server doesn't know when a game has finished with a win,\n\u003e so that leads to the drawback of causing an \"Error communicating with server\" message\n\u003e after a game has finished with a win (even though since the game has ended anyway, it's not really important).\n\n#### Internet Spades (Windows 7)\n\nFully supported, according to my testing.\n\n![Internet Spades (7)](docs/img/README_SpadesPreview.png)\n\n#### Internet Backgammon (Windows XP)\n\nFully supported, according to my testing.\n\n![Internet Backgammon (XP)](docs/img/README_BackgammonXPPreview.png)\n\n#### Internet Checkers (Windows XP)\n\nFully supported, according to my testing.\n\n![Internet Backgammon (XP)](docs/img/README_CheckersXPPreview.png)\n\n#### Internet Spades (Windows XP)\n\nTo-be-done!\n\n#### Internet Hearts (Windows XP)\n\nTo-be-done!\n\n#### Internet Reversi (Windows XP)\n\nTo-be-done!\n\n\n\u003e [!NOTE]\n\u003e\n\u003e For all games, no matter supported or not, there are differences from original server behaviour:\n\u003e\n\u003e * **If an opponent leaves the game, instead of replacing them with an AI player, the server ends the game.**\n\u003e\n\u003e   The reason for this is that AI player logic has originally been developed server-side.\n\u003e   Since this server does not support game logic, they cannot be supported, hence the match is ended\n\u003e   by disconnecting all players, causing an \"Error communicating with server\" error on their game clients.\n\u003e\n\u003e * **Since the server does not support game logic, it will send over any valid event messages, regardless of their legitimacy.**\n\u003e\n\u003e   If a player were to modify event messages being sent to the server to try and cheat, it's up to the opponents' game clients to determine whether the actions are legitimate or not.\n\u003e   Luckily, from my testing, this local validation seems to work nicely. On invalid data, the game ends with a \"Corrupted data\" message.\n\n#### Command line arguments\n\n* `-p` (`--port`): Port to host the server on. *Default: 80*\n* `-l` (`--log`): Enables socket data logging. Allows for specifying a custom folder; if not specified, the *default \"InternetGamesServer_logs\"* folder is used.\n* `--skip-level-matching`: Allows matching players, disregarding their chosen skill level. \n* `--log-ping-messages`: Log empty received messages by sockets, which are used for pinging the server.\n\n### Internet Games Client DLL + DLL Injector\n\nA DLL, which is to be injected into any of the 3 games, using the DLL Injector application. It has two variants for Windows 7 and Windows XP games. The Windows XP variant is only available in x86 builds.\n\n\u003e [!NOTE]\n\u003e\n\u003e The Internet Games Client DLL and the DLL Injector currently do not run on Windows XP, due to them linking to newer libraries.\n\u003e Currently, you can only use them when playing the Windows XP Internet Games on a newer Windows version.\n\n#### Functionality\n\nThe Windows 7 Client DLL performs the following operations:\n\n* Creates the `HKEY_CURRENT_USER\\Software\\Microsoft\\zone.com\\Zgmprxy` registry key, if it doesn't exist.\n* Creates a `DisableTLS` DWORD 32-bit registry value under `HKEY_CURRENT_USER\\Software\\Microsoft\\zone.com\\Zgmprxy`, set to 1.\n* Displays a dialog, where the user can enter a host and port, where an [Internet Games Server](#internet-games-server) is located, to connect to.\n* Puts a hook on the [`GetAddrInfoW`](https://learn.microsoft.com/en-us/windows/win32/api/ws2tcpip/nf-ws2tcpip-getaddrinfow) function from `ws2_32.dll`, setting appropriate arguments, as well as the host and the port, specified in the dialog.\n\nThe Windows XP Client DLL performs the following operations:\n\n* Displays a dialog, where the user can enter a host and port, where an [Internet Games Server](#internet-games-server) is located, to connect to.\n* Puts a hook on the [`inet_addr`](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-inet_addr) and [`htons`](https://learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-htons) functions from `ws2_32.dll`, setting the host and the port, specified in the dialog.\n\n#### Command line arguments (DLL Injector)\n\n* **Exactly one of the following arguments:**\n  * `-b` (`--backgammon`) *OR* `-c` (`--checkers`) *OR* `-s` (`--spades`) **[REQUIRED]**: Specifies a target Windows 7 game to inject the client DLL into.\n  * `-x` (`--xp`): For injecting the client DLL into any Windows XP game **(x86 only!)**.\n* `-r` (`--repeat`): See [Using DLL Injector on multiple instances](#using-dll-injector-on-multiple-instances). *Default: 0*\n\n## Building\n\nTo build any of the projects, open up the respective project file (.vcxproj) in Visual Studio and build from there.\n\n### Running Multiple Instances\n\nFor information on how to run multiple instances of any of the Internet Games, [read this](docs/MultipleInstances.md).\n\n#### Using DLL Injector on multiple instances\n\nTo use the DLL Injector on multiple instances at the same time, provide the `-r` (or `--repeat`) argument to it,\nallowing to skip a select number of previously started processes of the specified Internet Game.\nFor example, to inject the DLL into a second instance of the same game, provide `-r 1` (or `--repeat 1`).\n\n## Credits\n\n* [codereversing.com](https://www.codereversing.com/archives/138) for providing some logs and tons of helpful information, regarding reverse-engineering the Internet Games.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvankata453%2Fzoneinternetgamesserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvankata453%2Fzoneinternetgamesserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvankata453%2Fzoneinternetgamesserver/lists"}