Find encryption key of strings in Dragon.rrc #9
Labels
Comments
|
Give this patch a try: https://gist.github.com/UCyborg/e16d39f716e397869655d6c1b5d4c69e 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. |
|
This works like a treat! Thank you so much |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 74This 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: