In a previous article I have demonstrated how easy it is to decompile and reverse engineer .NET assemblies using Reflector and Reflexil. I've also shown that applying a strong name to your assembly does not protect your code from reverse engineering. So, what else is left?

A technique called obfuscating goes a long way in keeping your source code safe. An obfuscator will mangle your code, without changing the actual result, to make it increasingly harder for someone to decompile your code and actually understand it.

Reflector viewing obfuscated assembly

Read more at http://blog.cumps.be/obfuscation-making-reverse-engineering-harder/

with no comments
Filed under: , , ,

Ever heard of the very popular game for the PlayStation 2, called Guitar Hero? Until recently, I only vaguely picked it up here and there, but not being a big PlayStation gamer, I never payed much attention. That is, until today. A friend of mine gave me a link to Frets On Fire, which claims to be the PC variant of Guitar Hero. Seeing it was free, I downloaded it and gave it a try, and I have to admit, it's addictive!

Frets On Fire

Allow me to give you a small introduction on this game.

Read more at http://blog.cumps.be/party-game-guitar-hero-for-pc/

with no comments
Filed under: , ,

Today I was made aware by Filip, a colleague of mine, about the importance of columns used in a where clause with a compound index. I decided to investigate this a bit more in detail, with proper profiling and comparisons on a large data set.

A, B, C

Read more at http://blog.cumps.be/efficient-compound-index-usage/

Over the years, plenty has been written about string performance, lots of comparisons between String.Concat and StringBuilder. Today I decided to do some of my own research into the subject and contribute to the knowledge already out there. More specifically, I'll be taking a look at the memory usage for various concatenation methods and compiler optimizations used to generate the IL.

The test scenario I defined consists out of several methods, each returning the same string. The string I created is supposed to resemble a real-life scenario. I identified five different ways of concatenating strings for my test. I will be taking a look at the numbers when calling each method once and inside a very small loop of 50 calls, which is another real-life number in my case.

GetPlussedString Multiple Calls

Read more at http://blog.cumps.be/string-concatenation-vs-memory-allocation/

with no comments
Filed under: , , ,

In my last post I spoke about reverse engineering .NET assemblies upon which Gregory asked how to protect his code against it.

Initially I thought signing an assembly would be the easiest way to prevent this, and my first tests confirmed this. I signed the CrackMe from my previous post and tried modifying it again, unsuccessfully.

But in the end Code Signing your assembly proved to be useless against reverse engineering.

Strong Name Remove

Read more at http://blog.cumps.be/code-signing-as-reverse-engineering-protection/

with no comments
Filed under: , , , ,

I've always been a big fan of Reflector, allowing me to have a look in assemblies to learn new things, debug in case of problems and provide usefull information when creating bug reports. Combined with the Reflexil Add-in it's now easy to also modify assemblies yourself.

To demonstrate this, I've created a small CrackMe sample program, which consists out of nothing more then a simple password check. This is how it looks when opened in Reflector, with Reflexil displaying the IL code below it.

Reflexil - CrackMe

Read more at http://blog.cumps.be/reverse-engineering-with-reflector-and-reflexil/

with no comments
Filed under: , , ,

Are you concerned about the confidentiality of your files? Take a look at TrueCrypt, a great tool to create encrypted volumes.

 TrueCrypt Mount

Read more at http://blog.cumps.be/open-source-disk-encryption/ 

with no comments
Filed under: , ,

After 21 days of posting something daily, I need a little break, for several reasons:

  • I 'm running out of subjects which I can use for short first-impressing posts. Please leave some comments with subjects you find interesting, perhaps I'll find them interesting as well! :)

Temporary Break

Read more at http://blog.cumps.be/temporary-break-request-for-subjects/ 

with no comments
Filed under:

Wake Up!

Not you... The computer!

Just had some fun enabling Wake On LAN on one of my computers. A great technology for the lazy people among us, you simply sit in your chair and realize you need to access some other computer in your house, but sadly enough it isn't powered on. The fit among us might simply walk to the machine and boot it, but I'd rather open up some program, hit a button and with some magic the machine starts up.

BIOS Wake On Lan Setting

Read more at http://blog.cumps.be/booting-for-lazy-people-wake-on-lan/ 

with 1 comment(s)
Filed under: ,

Long ago, I found something strange in Windows Explorer, which I wanted to retry on Vista today.

In Explorer, first create a very big directory tree, consisting out of small directory names. Now, from the bottom, rename these directories to about 100 characters.

Directory Tree

When you reached the top, try browsing the tree, after some directories it won't allow you to open the directory anymore. You can't select it, it will jump back, you can't rename that one, you can't delete the entire tree at once.

Read more at http://blog.cumps.be/explorer-bug-long-path-damaged-directories/ 

with no comments
Filed under: ,
More Posts Next page »