<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>David Cumps</title><link>http://weblogs.asp.net/cumpsd/default.aspx</link><description>#region .Net Blog</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Design Patterns - Decorator Pattern</title><link>http://weblogs.asp.net/cumpsd/archive/2008/06/29/6336430.aspx</link><pubDate>Sun, 29 Jun 2008 19:42:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6336430</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=6336430</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2008/06/29/6336430.aspx#comments</comments><description>&lt;p&gt;Following up on the &lt;a href="http://blog.cumps.be/design-patterns-observer-event-pattern/" title="Observer/Event Pattern"&gt;&lt;b&gt;Observer/Event Pattern&lt;/b&gt;&lt;/a&gt;, it’s time for the third pattern, the &lt;b&gt;Decorator Pattern&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;The definition: "&lt;b&gt;Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.&lt;/b&gt;"&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/decorator/decorator3.gif" mce_src="http://wiki.cumps.be/_media/files/blog/decorator/decorator3.gif" title="" alt="Decorator Pattern"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/design-patterns-decorator-pattern/" title="Design Patterns - Decorator Pattern" mce_href="http://blog.cumps.be/design-patterns-decorator-pattern/"&gt;&lt;b&gt;http://blog.cumps.be/design-patterns-decorator-pattern/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6336430" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Design+Patterns/default.aspx">Design Patterns</category></item><item><title>Design Patterns - Observer/Event Pattern</title><link>http://weblogs.asp.net/cumpsd/archive/2008/06/27/6327751.aspx</link><pubDate>Fri, 27 Jun 2008 15:16:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6327751</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=6327751</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2008/06/27/6327751.aspx#comments</comments><description>&lt;p&gt;Yesterday I described the &lt;a href="http://blog.cumps.be/design-patterns-observer-pattern/" title="Observer Pattern"&gt;&lt;b&gt;Observer Pattern&lt;/b&gt;&lt;/a&gt; and mentioned that the .NET CLR provides this functionality through &lt;b&gt;events and delegates&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Let’s have a look on how to &lt;b&gt;implement&lt;/b&gt; this right now.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/event/event2.gif" mce_src="http://wiki.cumps.be/_media/files/blog/event/event2.gif" title="" alt="Event Pattern"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/design-patterns-observer-event-pattern/" title="Design Patterns - Observer/Event Pattern" mce_href="http://blog.cumps.be/design-patterns-observer-event-pattern/"&gt;&lt;b&gt;http://blog.cumps.be/design-patterns-observer-event-pattern/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6327751" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Design+Patterns/default.aspx">Design Patterns</category></item><item><title>Design Patterns - Observer Pattern</title><link>http://weblogs.asp.net/cumpsd/archive/2008/06/26/6324010.aspx</link><pubDate>Thu, 26 Jun 2008 19:21:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6324010</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=6324010</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2008/06/26/6324010.aspx#comments</comments><description>&lt;p&gt;Yesterday we saw the &lt;a href="http://blog.cumps.be/design-patterns-strategy-pattern/" title="Strategy Pattern"&gt;&lt;b&gt;Strategy Pattern&lt;/b&gt;&lt;/a&gt;. Today I want to talk about the &lt;b&gt;Observer Pattern&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;First, the definition again: "&lt;b&gt;Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.&lt;/b&gt;"&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/observer/observer3.gif" mce_src="http://wiki.cumps.be/_media/files/blog/observer/observer3.gif" title="" alt="ObserverPattern"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/design-patterns-observer-pattern/" title="Design Patterns - Observer Pattern" mce_href="http://blog.cumps.be/design-patterns-observer-pattern/"&gt;&lt;b&gt;http://blog.cumps.be/design-patterns-observer-pattern/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6324010" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Design+Patterns/default.aspx">Design Patterns</category></item><item><title>Design Patterns - Strategy Pattern</title><link>http://weblogs.asp.net/cumpsd/archive/2008/06/25/6318835.aspx</link><pubDate>Wed, 25 Jun 2008 11:50:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6318835</guid><dc:creator>CumpsD</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=6318835</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2008/06/25/6318835.aspx#comments</comments><description>&lt;p&gt;The first pattern I want to talk about is the &lt;b&gt;Strategy pattern&lt;/b&gt;, which always reminds me about the Command &amp;amp; Conquer games so I’ll simply use it as an example :)&lt;/p&gt;

&lt;p&gt;First of all, the definition: "&lt;b&gt;Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.&lt;/b&gt;"&lt;/p&gt;

&lt;p&gt;I’m bad at remembering definitions or trying to imagine what they really mean, so let’s just go ahead and try to &lt;b&gt;create something and learn as we go&lt;/b&gt;, eventually we’ll end up implementing the Strategy pattern and you’ll '&lt;b&gt;get it&lt;/b&gt;' for the rest of your life, without a definition.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/strategy/strategy5.gif" mce_src="http://wiki.cumps.be/_media/files/blog/strategy/strategy5.gif" title="" alt="Strategy Pattern"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/design-patterns-strategy-pattern/" title="Design Patterns - Strategy Pattern" mce_href="http://blog.cumps.be/design-patterns-strategy-pattern/"&gt;&lt;b&gt;http://blog.cumps.be/design-patterns-strategy-pattern/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6318835" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Design+Patterns/default.aspx">Design Patterns</category></item><item><title>Obfuscation - Making Reverse Engineering Harder</title><link>http://weblogs.asp.net/cumpsd/archive/2007/09/29/4245840.aspx</link><pubDate>Sat, 29 Sep 2007 15:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:4245840</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=4245840</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/09/29/4245840.aspx#comments</comments><description>&lt;p&gt;In a previous article I have demonstrated how &lt;strong&gt;easy&lt;/strong&gt; it is to &lt;a href="http://blog.cumps.be/reverse-engineering-with-reflector-and-reflexil/" mce_href="http://blog.cumps.be/reverse-engineering-with-reflector-and-reflexil/" title="Reverse Engineering with Reflector and Reflexil"&gt;decompile and reverse engineer .NET assemblies&lt;/a&gt; using Reflector and Reflexil. I've also shown that &lt;a href="http://blog.cumps.be/code-signing-as-reverse-engineering-protection/" mce_href="http://blog.cumps.be/code-signing-as-reverse-engineering-protection/" title="Code Signing as Reverse Engineering Protection"&gt;applying a strong name&lt;/a&gt; to your assembly does &lt;strong&gt;not protect your code&lt;/strong&gt; from reverse engineering. So, &lt;strong&gt;what else&lt;/strong&gt; is left?&lt;/p&gt;

&lt;p&gt;A technique called &lt;strong&gt;obfuscating&lt;/strong&gt; goes a long way in keeping your source code safe. An obfuscator will mangle your code, without changing the actual result, to make it &lt;strong&gt;increasingly harder&lt;/strong&gt; for someone to decompile your code and actually understand it.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/obfuscation/obfuscator1.gif" mce_src="http://wiki.cumps.be/_media/files/blog/obfuscation/obfuscator1.gif" title="" alt="Reflector viewing obfuscated assembly"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/obfuscation-making-reverse-engineering-harder/" title="Obfuscation - Making Reverse Engineering Harder" mce_href="http://blog.cumps.be/obfuscation-making-reverse-engineering-harder/"&gt;&lt;b&gt;http://blog.cumps.be/obfuscation-making-reverse-engineering-harder/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4245840" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Tweaks/default.aspx">Tweaks</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Security/default.aspx">Security</category></item><item><title>Party Game Guitar Hero for PC</title><link>http://weblogs.asp.net/cumpsd/archive/2007/09/23/4050535.aspx</link><pubDate>Sat, 22 Sep 2007 22:35:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:4050535</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=4050535</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/09/23/4050535.aspx#comments</comments><description>
&lt;p&gt;Ever heard of the &lt;strong&gt;very popular&lt;/strong&gt; 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 &lt;strong&gt;never payed much attention&lt;/strong&gt;. That is, &lt;strong&gt;until today&lt;/strong&gt;. A friend of mine gave me a link to Frets On Fire, which claims to be the &lt;strong&gt;PC variant of Guitar Hero&lt;/strong&gt;. Seeing it was &lt;strong&gt;free&lt;/strong&gt;, I downloaded it and gave it a try, and I have to admit, &lt;strong&gt;it's addictive!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/guitarhero/frets-on-fire.jpg" mce_src="http://wiki.cumps.be/_media/files/blog/guitarhero/frets-on-fire.jpg" alt="Frets On Fire"&gt;&lt;/p&gt;

&lt;p&gt;Allow me to give you a small &lt;strong&gt;introduction&lt;/strong&gt; on this game.&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/party-game-guitar-hero-for-pc/" title="Party Game Guitar Hero for PC" mce_href="http://blog.cumps.be/party-game-guitar-hero-for-pc/"&gt;&lt;b&gt;http://blog.cumps.be/party-game-guitar-hero-for-pc/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4050535" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Personal/default.aspx">Personal</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General/default.aspx">General</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Fun/default.aspx">Fun</category></item><item><title>Efficient Compound Index Usage</title><link>http://weblogs.asp.net/cumpsd/archive/2007/09/20/3981063.aspx</link><pubDate>Thu, 20 Sep 2007 09:57:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3981063</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3981063</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/09/20/3981063.aspx#comments</comments><description>
&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/sql/index-a-b-c.gif" mce_src="http://wiki.cumps.be/_media/files/blog/sql/index-a-b-c.gif" alt="A, B, C" title="A, B, C"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/efficient-compound-index-usage/" title="Efficient Compound Index Usage" mce_href="http://blog.cumps.be/efficient-compound-index-usage/"&gt;&lt;b&gt;http://blog.cumps.be/efficient-compound-index-usage/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3981063" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Tweaks/default.aspx">Tweaks</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Performance/default.aspx">Performance</category></item><item><title>String Concatenation vs Memory Allocation</title><link>http://weblogs.asp.net/cumpsd/archive/2007/09/16/3897618.aspx</link><pubDate>Sun, 16 Sep 2007 17:37:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3897618</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3897618</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/09/16/3897618.aspx#comments</comments><description>
&lt;p&gt;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 &lt;b&gt;contribute to the knowledge&lt;/b&gt; already out there. More specifically, I'll be taking a look at the &lt;b&gt;memory usage&lt;/b&gt; for various concatenation methods and compiler optimizations used to generate the IL.&lt;/p&gt;

&lt;p&gt;The test scenario I defined consists out of several methods, each returning the same string. The string I created is supposed to resemble a &lt;b&gt;real-life scenario&lt;/b&gt;. 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.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/stringperformance/get-plussed-string-loop.gif" title="GetPlussedString Multiple Calls" alt="GetPlussedString Multiple Calls"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/string-concatenation-vs-memory-allocation/" title="String Concatenation vs Memory Allocation" mce_href="http://blog.cumps.be/string-concatenation-vs-memory-allocation/"&gt;&lt;b&gt;http://blog.cumps.be/string-concatenation-vs-memory-allocation/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3897618" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Tweaks/default.aspx">Tweaks</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Code Signing as Reverse Engineering Protection</title><link>http://weblogs.asp.net/cumpsd/archive/2007/09/15/3889237.aspx</link><pubDate>Sat, 15 Sep 2007 21:29:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3889237</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3889237</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/09/15/3889237.aspx#comments</comments><description>
&lt;p&gt;In my last post I spoke about &lt;a href="http://blog.cumps.be/reverse-engineering-with-reflector-and-reflexil/" mce_href="http://blog.cumps.be/reverse-engineering-with-reflector-and-reflexil/" title="Reverse Engineering with Reflector and Reflexil"&gt;reverse engineering .NET assemblies&lt;/a&gt; upon which &lt;a href="http://dnasand.wordpress.com/" mce_href="http://dnasand.wordpress.com/" title="G's Weblog"&gt;Gregory&lt;/a&gt; asked how to &lt;strong&gt;protect his code&lt;/strong&gt; against it.&lt;/p&gt;

&lt;p&gt;Initially I thought &lt;strong&gt;signing an assembly&lt;/strong&gt; 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, &lt;strong&gt;unsuccessfully&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But in the end Code Signing your assembly proved to be &lt;strong&gt;useless against reverse engineering.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/codesigning/sign0.gif" alt="Strong Name Remove"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/code-signing-as-reverse-engineering-protection/" title="Code Signing as Reverse Engineering Protection" mce_href="http://blog.cumps.be/code-signing-as-reverse-engineering-protection/"&gt;&lt;span style="font-weight: bold;"&gt;http://blog.cumps.be/code-signing-as-reverse-engineering-protection/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3889237" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Tweaks/default.aspx">Tweaks</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Tools/default.aspx">Tools</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Security/default.aspx">Security</category></item><item><title>Reverse Engineering with Reflector and Reflexil</title><link>http://weblogs.asp.net/cumpsd/archive/2007/09/06/3769592.aspx</link><pubDate>Thu, 06 Sep 2007 21:32:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3769592</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3769592</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/09/06/3769592.aspx#comments</comments><description>&lt;p&gt;I've always been a big fan of &lt;a href="http://www.aisto.com/roeder/dotnet/" mce_href="http://www.aisto.com/roeder/dotnet/" title="Reflector"&gt;Reflector&lt;/a&gt;, allowing me to have a &lt;strong&gt;look in assemblies&lt;/strong&gt; to learn new things, debug in case of problems and provide usefull information when creating bug reports. Combined with the &lt;a href="http://sebastien.lebreton.free.fr/reflexil/" mce_href="http://sebastien.lebreton.free.fr/reflexil/" title="Reflexil"&gt;Reflexil Add-in&lt;/a&gt; it's now easy to also &lt;strong&gt;modify assemblies&lt;/strong&gt; yourself.&lt;/p&gt;

&lt;p&gt;To demonstrate this, I've created a small &lt;a href="http://en.wikipedia.org/wiki/Crackme" mce_href="http://en.wikipedia.org/wiki/Crackme" title="Wikipedia - CrackMe"&gt;CrackMe&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/reflector/reflexil.gif" mce_src="http://wiki.cumps.be/_media/files/blog/reflector/reflexil.gif" title="Reflexil - CrackMe" alt="Reflexil - CrackMe" height="666" width="778"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/reverse-engineering-with-reflector-and-reflexil/" mce_href="http://blog.cumps.be/reverse-engineering-with-reflector-and-reflexil/" title="Reverse Engineering with Reflector and Reflexil"&gt;&lt;strong&gt;http://blog.cumps.be/reverse-engineering-with-reflector-and-reflexil/&lt;strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3769592" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Tweaks/default.aspx">Tweaks</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Tools/default.aspx">Tools</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Open-Source Disk Encryption</title><link>http://weblogs.asp.net/cumpsd/archive/2007/09/04/3734002.aspx</link><pubDate>Tue, 04 Sep 2007 19:06:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3734002</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3734002</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/09/04/3734002.aspx#comments</comments><description>
&lt;p&gt;Are you concerned about the confidentiality of your files? Take a look at TrueCrypt, a great tool to create &lt;strong&gt;encrypted volumes&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://wiki.cumps.be/_media/files/blog/truecrypt/truecrypt1.gif" title="TrueCrypt Mount" alt="TrueCrypt Mount" mce_src="http://wiki.cumps.be/_media/files/blog/truecrypt/truecrypt1.gif" height="496" width="580"&gt;&lt;/p&gt;
&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/open-source-disk-encryption/" title="Open Source Disk Encryption" mce_href="http://blog.cumps.be/open-source-disk-encryption/"&gt;&lt;b&gt;http://blog.cumps.be/open-source-disk-encryption/&lt;/b&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3734002" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/IT/default.aspx">IT</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Windows/default.aspx">Windows</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General/default.aspx">General</category></item><item><title>Temporary Break - Request for Subjects</title><link>http://weblogs.asp.net/cumpsd/archive/2007/08/23/3599500.aspx</link><pubDate>Thu, 23 Aug 2007 21:37:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3599500</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3599500</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/08/23/3599500.aspx#comments</comments><description>&lt;p&gt;After 21 days of posting something daily, I need a little break, for several reasons:
&lt;/p&gt;&lt;ul&gt;
	&lt;li&gt;I 'm running out of subjects which I can use for short first-impressing posts. Please &lt;strong&gt;leave some comments&lt;/strong&gt; with subjects you find interesting, perhaps I'll find them interesting as well! :)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/sleep.jpg" title="Temporary Break" alt="Temporary Break" height="336" width="284"&gt;&lt;/p&gt;

&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/temporary-break-request-for-subjects/" title="Request for Subjects" mce_href="http://blog.cumps.be/temporary-break-request-for-subjects/"&gt;&lt;b&gt;http://blog.cumps.be/temporary-break-request-for-subjects/&lt;/b&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3599500" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General/default.aspx">General</category></item><item><title>Booting for Lazy People - Wake On LAN</title><link>http://weblogs.asp.net/cumpsd/archive/2007/08/23/3590512.aspx</link><pubDate>Wed, 22 Aug 2007 22:05:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3590512</guid><dc:creator>CumpsD</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3590512</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/08/23/3590512.aspx#comments</comments><description>
&lt;p&gt;&lt;b&gt;Wake Up!&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Not you... &lt;b&gt;The computer!&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Just had some fun enabling &lt;a href="http://en.wikipedia.org/wiki/Wake-on-LAN" mce_href="http://en.wikipedia.org/wiki/Wake-on-LAN" title="Wikipedia - Wake-on-LAN"&gt;Wake On LAN&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://wiki.cumps.be/_media/files/blog/wakeonlan/bios.jpg" title="BIOS Wake On Lan Setting" alt="BIOS Wake On Lan Setting" height="306" width="500"&gt;&lt;/p&gt;
&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/booting-for-lazy-people-wake-on-lan/" title="Booting for Lazy People - Wake On LAN" mce_href="http://blog.cumps.be/booting-for-lazy-people-wake-on-lan/"&gt;&lt;b&gt;http://blog.cumps.be/booting-for-lazy-people-wake-on-lan/&lt;/b&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3590512" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Windows/default.aspx">Windows</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General/default.aspx">General</category></item><item><title>Explorer Bug, Long Path, damaged directories</title><link>http://weblogs.asp.net/cumpsd/archive/2007/08/22/3579506.aspx</link><pubDate>Tue, 21 Aug 2007 22:06:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3579506</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3579506</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/08/22/3579506.aspx#comments</comments><description>&lt;p&gt;Long ago, I found something strange in Windows Explorer, which I wanted to retry on Vista today.&lt;/p&gt;

&lt;p&gt;In Explorer, first create a very big directory tree, consisting out of &lt;strong&gt;small&lt;/strong&gt; directory names. Now, from the bottom, &lt;strong&gt;rename&lt;/strong&gt; these directories to about 100 characters.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://users.pandora.be/tr/blog/pics/longdirs1.gif" mce_src="http://users.pandora.be/tr/blog/pics/longdirs1.gif" title="Directory Tree" alt="Directory Tree" height="642" width="977"&gt;&lt;/p&gt;

&lt;p&gt;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 &lt;strong&gt;select&lt;/strong&gt; it, it will jump back, you can't &lt;strong&gt;rename&lt;/strong&gt; that one, you can't &lt;strong&gt;delete&lt;/strong&gt; the entire tree at once.&lt;/p&gt;&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/explorer-bug-long-path-damaged-directories/" title="Explorer Bug, Long Path, damaged directories" mce_href="http://blog.cumps.be/explorer-bug-long-path-damaged-directories/"&gt;&lt;b&gt;http://blog.cumps.be/explorer-bug-long-path-damaged-directories/&lt;/b&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3579506" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General/default.aspx">General</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Vista/default.aspx">Vista</category></item><item><title>The Selfish Side of Social Bookmarking</title><link>http://weblogs.asp.net/cumpsd/archive/2007/08/21/3569594.aspx</link><pubDate>Mon, 20 Aug 2007 22:05:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3569594</guid><dc:creator>CumpsD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/cumpsd/rsscomments.aspx?PostID=3569594</wfw:commentRss><comments>http://weblogs.asp.net/cumpsd/archive/2007/08/21/3569594.aspx#comments</comments><description>&lt;p&gt;Social bookmarking, one of the Web 2.0 hypes, allows you to share links
with each other. This &lt;a href="http://www.commoncraft.com/bookmarking-plain-english" title="Social Bookmarking in Plain English" mce_href="http://www.commoncraft.com/bookmarking-plain-english"&gt;great video from Common Craft&lt;/a&gt; very clearly
explains what social bookmarking is all about. While this is very
useful, there’s also a &lt;b&gt;selfish advantage&lt;/b&gt; to it.&lt;/p&gt;&lt;p&gt;Read more at &lt;a href="http://blog.cumps.be/the-selfish-side-of-social-bookmarking/" title="The Selfish Side of Social Bookmarking" mce_href="http://blog.cumps.be/the-selfish-side-of-social-bookmarking/"&gt;&lt;b&gt;http://blog.cumps.be/the-selfish-side-of-social-bookmarking/&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3569594" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cumpsd/archive/tags/Tools/default.aspx">Tools</category><category domain="http://weblogs.asp.net/cumpsd/archive/tags/General/default.aspx">General</category></item></channel></rss>