I was playing around with the cracked version of phoenix that was cracked by gianni and predator and decided I wanted to customise it a bit, but since it's obfuscated, it makes it extremely difficult to recover the source code so you need a way to edit the .exe file directly without decompiling.
Looking through the intermediate language from ildasm.exe I noticed all the strings are being fetched from a function with a single integer parameter, after some more following all the functions it seemed that phoenix was opening itself using a binary reader to read the strings from somewhere in the phoenix.exe file. The location of the string in the file was obviously related to the integer passed to this function but how were the strings stored?
The strings within phoenix are encoded using TEA encryption Tiny Encryption Algorithm - Wikipedia, the free encyclopedia and 4 characters are stored within each uint by bitshifting it and adding the next byte. Both that wiki page and this page Tiny Encryption Algorithm (TEA) for the Compact Framework - CodeProject® helped me in writing this program.
So I wrote this tool, if it's useful, use it, if not then don't. Hate me, love me, do whatever :P
Open the supplied "String editor.exe" and click "Open emulator" then find your phoenix.exe file and open it. Now click "Load offsets" and open the supplied offsets.txt file.
The program will now read all the strings from phoenix and populate the list with the strings. Double click a string to open the editor and edit the string as you wish.
Use at your own risk, if you screw up your emulator don't blame me, make a backup of phoenix before you make changes just in case you break it ;)
I'd just like to point out that I've only tested this with the cracked 3.7.1 by gianni and predator. I've not got the original phoenix exe file so I don't know if the offsets for the strings are the same. If you want to edit the official phoenix read this bit:
If you want to find the offset of strings, open up ildasm.exe, load phoenix into it and find the calls to "OverlappedEncode::Set(int32)"
A quick way to find them all (which is what I did) is to dissasemble the .exe to IL code, then loop through each file and find the string "OverlappedEncode::Set(int32)" in each file.
Someone try it with the original phoenix and let me know if it works (or send me a copy and I'll upload an offset.txt file for you)
Have fun :P
String editor.zip
![]()








