Protect your .NET Applications/Libraries from 'Reflection'

23. December 2009 00:18

.NET Framework Utils 

As a programmer, you put a lot of effort to create an application and incorporate some unique features in your application, which in turn makes your application more feature rich and different from other applications. The question here is, how do you feel when you come to know that someone has played with your code and then make a same application with his name...You did all the hard work and some random guy on this blue planet stole your code and takes all the credit.....Cry????

Well the answer lies in Obfuscation. It is a method to prevent your application from being reverse engineered. It makes the code of your application in unreadable form when it is viewed in any reflection tool. You will find many obfuscator tool, but some of them are not free and others are not ease at use. I do some search over the net and found a totally free and reliable tool for obfuscating my applications and libraries. This free obfuscating tool can be downloaded from here. The version here supports obfuscations for .NET framework 3.5 and for .NET framework 4.0, well we have to wait for the final release as it is still in beta but can be downloaded from here.

Let's see Red Gate's Reflector and Eazfuscator.NET (actual name of the obfuscater tool) in action

First I created a basic simple greeting application in Visual Studio 2008 (.NET Framework 3.5). The application has two buttons which greets the user and world respectively. Now take a look how the binary is diassembled by using reflector.

And now we will use Eazfuscator.NET to obfuscate our application. So first download and install the obfuscator tool form the above link and then simple drag-n-drop application on the right segment. I remommend to read the whole documentation before you start obfuscating your application and assemblies and make sure you have a bacup of your original application before you proceed.

Drag and drop your application here.

As soon as you drop your binary here the obfuscation process will start automatically.

And thats it, your code is now safe and you can distribute you applicaion without any more worries and for those who want to use the code just looking into the reflector and dont' want to scratch the heads we have this >>>> Money mouth!!!!

Now try opening your obfuscated application in reflector....and this is what you will see.Cool

 No Rating

Retrieve Key from Value in Hash Table

16. December 2009 02:10

C# Code Snippets 

Working with hash tables is pretty simple but few days back I was having a problem in retrieving a key from a value in hash table. I was bit lazy to find a way myself, so I searched the net and here is what I got....a simple piece of code which lead to me to complete my task and so I thought I should share it with everyone here.

public string FindKey(string Value, Hashtable HT)
{
       string Key = "";
       IDictionaryEnumerator e = HT.GetEnumerator();
       while (e.MoveNext())
       {
            if (e.Value.ToString().Equals(Value))
            {
               Key = e.Key.ToString();
            }
       }
       return Key;
}
Currently rated 4.2 by 11 people

Use Sql query to write/create a file

11. December 2009 14:33

SQL Server T-SQL 

This SQL stored procedure will allow you to write to the file on your file system. Note the file system will be the the same on which the SQL server is running. If you are using this with your local SQL server then it will write and create files on your local file system and if you are on the remote machine, the file system will be the remote file system.

Create Procedure  [dbo].[USP_SaveFile](@text as NVarchar(Max),@Filename Varchar(200)) 
AS 
Begin 
 
declare @Object int,
        @rc int, -- the return code from sp_OA procedures 
        @FileID Int 
 
EXEC @rc = sp_OACreate 'Scripting.FileSystemObject', @Object OUT 
EXEC @rc = sp_OAMethod  @Object , 'OpenTextFile' , @FileID OUT , @Filename , 2 , 1 
Set  @text = Replace(Replace(Replace(@text,'&','&'),'<' ,'<'),'>','>')
EXEC @rc = sp_OAMethod  @FileID , 'WriteLine' , Null , @text  
Exec @rc = master.dbo.sp_OADestroy @FileID   
 
Declare @Append  bit
Select  @Append = 0
 
If @rc <> 0
Begin
    Exec @rc = master.dbo.sp_OAMethod @Object, 'SaveFile',null,@text ,@Filename,@Append
       
End

Exec @rc = master.dbo.sp_OADestroy @Object 
    
End 

But before you start using this procedure you need to reconfigure some advanced SQL server settings. Use the below configuration query to enable 'OLE Automation Procedures'. If this is not enabled and you try executing the procedure you will get errors.

Use master
GO
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
--To enable Ole automation feature
EXEC sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

The first parameter will take the text to be written to the file and the second parameter will take the complete path of the file to be created with the text in it. You can also use the same procedure to wite binary files to the file system, you just need to check and change the file extension in the second parameter. Usage:

EXEC USP_SaveFile 'Microsoft SQL Server 2008', 'C:\MSSQL.txt' 
Currently rated 4.0 by 1 person

Windows Live: SkyDrive application

5. December 2009 17:16

API Microsoft Utils 

We all know about Windows Live® SkyDrive® and definitely all the user would like to have a tool which would help them in organizing and managing their folders. But unfortunately I am unable to find any tool which helps us to deal in this. And as usual if you want to develop something or need an API just jump to Codeplex. Download the SkyDrive API from here (Codeplex) or from the below. But hey! I got another application with me, exactly can't remember where I got this from but really appreciate Scott's (author of this app) effort for this. It seems to be just a protoype, as it only allows you to view and download the files. Download the application and give a try and don't forget to download the SkyDrive® API also.

Download SkyDrive Application:LiveIDSkyDriveApp.zip (419.12 kb)

SkyDrive® API from Codeplex:SkyDriveWebClient.v0.8.7.zip (72.50 kb)

Currently rated 3.0 by 1 person

T-SQL: Export Table to Excel

2. December 2009 20:31

SQL Server T-SQL 

What you do to export data from SQL to excel. You use data import/export wizard or just simply execute the select query and copy the whole lot of data in an excel file with headers. Copy and paste the data in the excel sheet is the quickest possible solution I can see...but what if you have to data through your code? Still there are many possible ways to accomplish this but how many lines of code you have to write to achieve this? maybe most of the people definately have a simple and reliable way. Ok...lets do this using T-SQL query. The only problem I see here is that you must have a excel file in the location defined in the query before you execute the query.

In one of our application we maintain log in a sql table for all the tasks done in the whole day. The administrator of the application want to take a look at all the tasks done by a particular user, he didn't want any UI to look into this instead he asks us to generate a report at the end of the day in excel on a button click. So lets see the code.

Execute the below query to set the configuration of SQL Server to 1. In my case there was no change as I already executed this query in the past. But, most probably you will see a change in the your case the value could be changed from 0 to 1.

EXEC sp_configure 'show advanced options', 1;
GO RECONFIGURE;
GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO RECONFIGURE;
GO

After you set the configuration option execute a normal select query to get all the column names and paste them in the excel sheet. Then save the excel sheet in your local hard drive.

Select TOP 0 * From Person.Address

--For Office 2003 (.XLS) format
INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=c:\contact.xls;','SELECT * FROM [Sheet1$]')SELECT * FROM authors

--For Office 2007 (.XLSX) format
INSERT INTO OPENROWSET ('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=c:\contact.xlsx;','SELECT * FROM [Sheet1$]')SELECT * FROM authors
Currently rated 5.0 by 2 people