If I wrote a program which would Console.WriteLine() a base64 code, like an easter egg ("a hidden secret" in gaming jargon) or something, for example

string EasterEgg = "dGhlYmlnc2VjcmV0";
Console.WriteLine(b64d(EasterEgg));

And I would let a good obfuscator run through it. Now I know that crackers with enough time and knowledge can reverse engineer a program. From it's almost humanly-unreadable form. And change the Easter Egg or remove it. Meaning they can change value by editing the binary sequence behind it, remove it by leaving a null. But can they read the original value? When a program is compiled and obfuscated. It's obviously not easteregg = "dGhlYmlnc2VjcmV0" in the compiled file, it's something like ?@#[null][null]JJJA??? (just throwing random characters). They can replace these unreadable characters, they can delete these unreadable characters, but can they reverse these unreadable characters and read it's original value?

For example, they can replace int PremiumBought = ?$%?#$@%$$# with int PremiumBought = 1, but can they actually find out what the value of ?$%?#$@%$$# was? (following the logic, of course it was 0, but that's just an example to give you an idea).

If I compiled and obfuscated string EasterEgg = "Johnson"; into it's rogue form. Would someone be able to find out what it's actual value was before the process? They can change, they can remove, can they read?

TLTR

Can crackers reverse engineer the obfuscated and compiled original value of a variable?

And once again (to avoid any unnecessary mean comments about my question or knowledge), I DO KNOW; that every program can be broken into, and that not a single piece of software is 100% safe. You can stop giggling.

Recommended Answers

All 2 Replies

If the program uses the value (and if it doesn't then why have it?) then the program must contain some encoded version of the value and some code to decode it for use. In other words there must be enough information in the program to retrieve the value. So a cracker with enough patience can always retrieve that information and thus get the original value.
The only way round that would be to ensure the program does not itself contain enough information - eg by interacting with a server that contains information inaccessible to the cracker.

commented: Clear, direct and perfect answer. The only next thing I could wish for, was 5 billion bucks. +4

Thank you :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.