Repository navigation
EN Reverse engineering
BlaMacfly edited this page Oct 18, 2026
·
4 revisions
The protocol and data formats were rebuilt from the client executable, with Ghidra 12 driven by
REA. The client is an x86-64 PE executable of about 70,000
functions, without symbols but with RTTI for its C++ classes (AgcmLogin, SoundManager…).
- Find a telling string ("LG_LoginMainCreateButtonClick", "Sound_Option"…).
- Go back to the function that uses it, then decompile its calls.
- For packets: decompile the
Agpm*module constructors, which declare every field withAuPacket::SetFieldType.archcore re extract-schemasturns them intodata/re/packet-schemas.json. - Check each hypothesis with the simulator, then with the real client and the
ARCHCORE_TRACE=1log.
| Topic | Finding |
|---|---|
| Server address | The server list file is RC4-encrypted with key MD5("1111") through CryptoAPI; its plain …Test.ini variant is read first |
Game/ini tables |
Same encryption; CP949 text. A second key, "asdfqwer", is used by another loader |
| Packet header | 19 bytes, u32 lengths (u16 in the 32-bit client) |
| Encryption | Blowfish ECB, little-endian words; A1/B1 … AF/BF frames |
| Password | 65 bytes, RC4-encrypted with an 8-character key sent by the server |
| Type 3 | 4-byte field flags, set through a setter rather than a direct write |
| Character creation | The "Create" button reads the race received with login op 3; it only acts for race 1 or 2 |
| Language |
Launcher/LanguageInfo.txt: 17 = French (ini_fr), 5 = English |
| Sound | Modern FMOD, 200 voices; 2D sounds (types 1 and 2) or 3D with linear rolloff (types 3 and 4) |
| Updates | The game patches itself: function addresses change between versions, schemas do not |
ArchCore — github.com/BlaMacfly/ArchCore · Discord · Pages sources dans docs/wiki / Source pages in docs/wiki.