Skip to content

Commit

Permalink
Initial code commit.
Browse files Browse the repository at this point in the history
This is a full rewrite of the boot loader to bring it up to date and current with latest client. I took the time to do a full rewrite and overhaul of this loader because it was much needed to be in a more maintainable state for the project. There is a lot of debug information on our forums which will be released soon that I took the time to create and explain how this loader works and is created.

Please use our forums for more information regarding this project.
You may use the issues/wiki on Github to report problems with this loader.
  • Loading branch information
atom0s committed Feb 7, 2014
1 parent 003376a commit 1ce7afb
Show file tree
Hide file tree
Showing 17 changed files with 3,851 additions and 0 deletions.
8 changes: 8 additions & 0 deletions README.md
Expand Up @@ -2,3 +2,11 @@ xiloader
========

FFXI Server Emulator Boot Loader -- Launches client without PlayOnline.
Visit our forums and IRC to keep in touch with the latest developments.

**Forums:** https://forums.dspt.info/index.php

**IRC Channel**
* **Server:** irc.rizon.net
* **Port:** 6667
* **Channel:** #darkstarproject
62 changes: 62 additions & 0 deletions documentation/Information.txt
@@ -0,0 +1,62 @@
Information For xiloader
==========================================================================

:: Locating INET Mutex Function

The current method of obtaining this function is via:

const char* module = (g_Language == xiloader::Language::European) ? "polcoreeu.dll" : "polcore.dll";
auto result = (DWORD)xiloader::functions::FindPattern(module, (BYTE*)"\x8B\x56\x2C\x8B\x46\x28\x8B\x4E\x24\x52\x50\x51", "xxxxxxxxxxxx");
return (*(DWORD*)(result - 4) + (result));

As of 01/29/2014, the function that this is scanned from looks like this:

1001B812 - 8D 4C 24 1C - lea ecx,[esp+1C]
1001B816 - 51 - push ecx
1001B817 - E8 84CCFFFF - call 100184A0
1001B81C - 83 C4 10 - add esp,10
1001B81F - E8 7CE3FFFF - call 10019BA0 <-- Call to INET Mutex function.
1001B824 - 8B 56 2C - mov edx,[esi+2C]
1001B827 - 8B 46 28 - mov eax,[esi+28]
1001B82A - 8B 4E 24 - mov ecx,[esi+24]
1001B82D - 52 - push edx
1001B82E - 50 - push eax
1001B82F - 51 - push ecx
1001B830 - 55 - push ebp
1001B831 - E8 BA7C0000 - call 100234F0
1001B836 - 83 C4 10 - add esp,10

The inner-call function body looks like this:

10019BA0 - 00 05 C8A80A10 - add [100AA8C8],al
10019BA6 - 01 00 - add [eax],eax
10019BA8 - 00 00 - add [eax],al
10019BAA - C3 - ret

The above function can be located with the signature of:
00 05 ?? ?? ?? ?? 01 00 00 00 C3


:: Locating POL Connection Function

The current method of obtaining this function is via:

const char* module = (g_Language == xiloader::Language::European) ? "polcoreeu.dll" : "polcore.dll";
auto result = (DWORD)xiloader::functions::FindPattern(module, (BYTE*)"\x81\xC6\x38\x03\x00\x00\x83\xC4\x04\x81\xFE", "xxxxxxxxxxx");
return (*(DWORD*)(result - 10));

As of 01/29/2014, the function that this is scanned from looks like this:

1001E980 - 56 - push esi
1001E981 - E8 7AD00000 - call 1002BA00
1001E986 - BE 204B4010 - mov esi,10404B20 : [00000000] <-- Pointer to connection object.
1001E98B - 56 - push esi
1001E98C - E8 0FB8FFFF - call 1001A1A0
1001E991 - 81 C6 38030000 - add esi,00000338
1001E997 - 83 C4 04 - add esp,04
1001E99A - 81 FE 00584010 - cmp esi,10405800 : [00000000]
1001E9A0 - 7C E9 - jnge 1001E98B
1001E9A2 - E8 99D00000 - call 1002BA40
1001E9A7 - 5E - pop esi
1001E9A8 - C3 - ret

22 changes: 22 additions & 0 deletions xiloader.sln
@@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30110.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xiloader", "xiloader\xiloader.vcxproj", "{1F160572-CDDD-4485-BBE4-AE854E36A2E6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1F160572-CDDD-4485-BBE4-AE854E36A2E6}.Debug|Win32.ActiveCfg = Debug|Win32
{1F160572-CDDD-4485-BBE4-AE854E36A2E6}.Debug|Win32.Build.0 = Debug|Win32
{1F160572-CDDD-4485-BBE4-AE854E36A2E6}.Release|Win32.ActiveCfg = Release|Win32
{1F160572-CDDD-4485-BBE4-AE854E36A2E6}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

0 comments on commit 1ce7afb

Please sign in to comment.