You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Localized strings are stored with a "<0x****>" prefix, where **** is the hex ID of a type 0x0400 record contained in the Dragon.rrc file found in the engine root.
However, these records are XOR encrypted (at least in the German version of the game). By comparing known translated strings with the contents of their corresponding record, I could determine the first 7 bytes of the key: 0D 6A 57 BF FD EE 74
This string is not found in any of the binaries, and I could not find it by inspecting the memory of the running engine. So either the key is generated on the fly, or the engine only keeps it in memory when decoding strings.
There are some type 0x0401 records in the Dragon.rrc file which contain a number of 32 bit integers, the purpose of which I could not yet determine. Other 0x0401 records contain unencrypted text, but the values in these specific ones are all non-printable. Perhaps they are somehow related to the encryption key.
Since some strings that are used for the UI are only found in this location, it is vital that we find this key.
The text was updated successfully, but these errors were encountered:
You can find the decryption loop in Drakan.exe at memory address 0x0042CE91, it's pretty neat. The implementation in the linked patch should be portable.
Localized strings are stored with a "<0x****>" prefix, where **** is the hex ID of a type 0x0400 record contained in the Dragon.rrc file found in the engine root.
However, these records are XOR encrypted (at least in the German version of the game). By comparing known translated strings with the contents of their corresponding record, I could determine the first 7 bytes of the key:
0D 6A 57 BF FD EE 74
This string is not found in any of the binaries, and I could not find it by inspecting the memory of the running engine. So either the key is generated on the fly, or the engine only keeps it in memory when decoding strings.
There are some type 0x0401 records in the Dragon.rrc file which contain a number of 32 bit integers, the purpose of which I could not yet determine. Other 0x0401 records contain unencrypted text, but the values in these specific ones are all non-printable. Perhaps they are somehow related to the encryption key.
Since some strings that are used for the UI are only found in this location, it is vital that we find this key.
The text was updated successfully, but these errors were encountered: