473,657 Members | 2,449 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Secure .Net Assemblies - any thoughts?

Hi all,

Basically right now, i am interested to learn how to break strong names in
..net assemblies. I had researched a lot and found a blog that mention how to
hack strong name assemblies.
http://blogs.msdn.com/shawnfa/archiv...20/218049.aspx

"
In order to enable post-build modifications, you need to either:

Delay sign your assembly, hack the PE image, and then perform the final
signing; or
Sign your assembly, hack the PE image, and the use SN -R to resign the
assembly
"
I had look and read about Portable Executables, but the problem is most of
them are in concepts.

Do you had any experience in breaking apart a .net strong name assemblies?

It seems that PE are in C++ codes, and in order to hack PE, i need to
write C++ codes, or use binary editors to manually change?

I am looking into possibilities to protected my office .net libraries, at
least make it harder for hacker.

I heard you can apply a ECMA key, and you can secure the libraries, just
like what Microsoft did to some of their .net framework codes, which you
can't use .net reflector to see the codes.

Please correct me if had a wrong understanding :)

I tried the binary editor from Visual Studio .NET, but i can't seem to
understand how to modify anything (hex or ascii), when i change and save back
to the exe, it fails to run. An error related to not a proper win32
executable.

I had tested with ildasm by generating an il, manually delete the lines of
codes that calls the software license and compile back to an exe by using
ilasm. That is easy. I think even you obfuscate the code, it is still
breakable as obfuscation only changes method and class names to
alphanumerics. The codes in there are still the same.

Is there no way way to encrypt all the codes than being shown in there? I
tried obfuscation and strong names, it seems to be the same. No difference. I
can still see codes inside void main (example) using .net reflector by Lutz
Roeder or Anakrino.

Can you share some opinion to me, please?

Thanks.

--
Regards,
Chua Wen Ching :)
Nov 16 '05 #1
5 2053
A strong name does not help for preventing reverse engineering, decompiler
retrieves code exactly the same whether or not an assembly is strong-named.
A strong name might help to prevent unauthorized reference of the signed
assembly. However, as you noted, strong names can be removed, or resigned
with a different key. You can download our obfuscator
(http://www.remotesoft.com/salamander/obfuscator.html), which offers an
option: -delsig to delete strong names. You can also use ildasm/ilasm to
delete or resign with a different strong name.

Obfuscators are often used to make reverse engineering more difficult, but
since the nature is renaming symbols, so the underlying code is still
available to hackers as you mentioned, although the code becomes more
difficult for a human to understand due to the presence of large amount of
non-sense class/method/field names.

If you wanted to hide the underlying code completely, so a hacker does not
have access to the logics, you can try our protector product
(http://www.remotesoft.com/salamander/protector.html). It modifies the MSIL
code, instead of the sybol names. Once protected, the MSIL code is no longer
visible.

Thanks,

Huihong

"Chua Wen Ching" <ch************ @nospam.hotmail .com> wrote in message
news:CA******** *************** ***********@mic rosoft.com...
Hi all,

Basically right now, i am interested to learn how to break strong names in .net assemblies. I had researched a lot and found a blog that mention how to hack strong name assemblies.
http://blogs.msdn.com/shawnfa/archiv...20/218049.aspx

"
In order to enable post-build modifications, you need to either:

Delay sign your assembly, hack the PE image, and then perform the final
signing; or
Sign your assembly, hack the PE image, and the use SN -R to resign the
assembly
"
I had look and read about Portable Executables, but the problem is most of them are in concepts.

Do you had any experience in breaking apart a .net strong name assemblies?
It seems that PE are in C++ codes, and in order to hack PE, i need to
write C++ codes, or use binary editors to manually change?

I am looking into possibilities to protected my office .net libraries, at least make it harder for hacker.

I heard you can apply a ECMA key, and you can secure the libraries, just
like what Microsoft did to some of their .net framework codes, which you
can't use .net reflector to see the codes.

Please correct me if had a wrong understanding :)

I tried the binary editor from Visual Studio .NET, but i can't seem to
understand how to modify anything (hex or ascii), when i change and save back to the exe, it fails to run. An error related to not a proper win32
executable.

I had tested with ildasm by generating an il, manually delete the lines of codes that calls the software license and compile back to an exe by using
ilasm. That is easy. I think even you obfuscate the code, it is still
breakable as obfuscation only changes method and class names to
alphanumerics. The codes in there are still the same.

Is there no way way to encrypt all the codes than being shown in there? I tried obfuscation and strong names, it seems to be the same. No difference. I can still see codes inside void main (example) using .net reflector by Lutz Roeder or Anakrino.

Can you share some opinion to me, please?

Thanks.

--
Regards,
Chua Wen Ching :)

Nov 16 '05 #2
A strong name does not help for preventing reverse engineering, decompiler
retrieves code exactly the same whether or not an assembly is strong-named.
A strong name might help to prevent unauthorized reference of the signed
assembly. However, as you noted, strong names can be removed, or resigned
with a different key. You can download our obfuscator
(http://www.remotesoft.com/salamander/obfuscator.html), which offers an
option: -delsig to delete strong names. You can also use ildasm/ilasm to
delete or resign with a different strong name.

Obfuscators are often used to make reverse engineering more difficult, but
since the nature is renaming symbols, so the underlying code is still
available to hackers as you mentioned, although the code becomes more
difficult for a human to understand due to the presence of large amount of
non-sense class/method/field names.

If you wanted to hide the underlying code completely, so a hacker does not
have access to the logics, you can try our protector product
(http://www.remotesoft.com/salamander/protector.html). It modifies the MSIL
code, instead of the sybol names. Once protected, the MSIL code is no longer
visible.

Thanks,

Huihong

"Chua Wen Ching" <ch************ @nospam.hotmail .com> wrote in message
news:CA******** *************** ***********@mic rosoft.com...
Hi all,

Basically right now, i am interested to learn how to break strong names in .net assemblies. I had researched a lot and found a blog that mention how to hack strong name assemblies.
http://blogs.msdn.com/shawnfa/archiv...20/218049.aspx

"
In order to enable post-build modifications, you need to either:

Delay sign your assembly, hack the PE image, and then perform the final
signing; or
Sign your assembly, hack the PE image, and the use SN -R to resign the
assembly
"
I had look and read about Portable Executables, but the problem is most of them are in concepts.

Do you had any experience in breaking apart a .net strong name assemblies?
It seems that PE are in C++ codes, and in order to hack PE, i need to
write C++ codes, or use binary editors to manually change?

I am looking into possibilities to protected my office .net libraries, at least make it harder for hacker.

I heard you can apply a ECMA key, and you can secure the libraries, just
like what Microsoft did to some of their .net framework codes, which you
can't use .net reflector to see the codes.

Please correct me if had a wrong understanding :)

I tried the binary editor from Visual Studio .NET, but i can't seem to
understand how to modify anything (hex or ascii), when i change and save back to the exe, it fails to run. An error related to not a proper win32
executable.

I had tested with ildasm by generating an il, manually delete the lines of codes that calls the software license and compile back to an exe by using
ilasm. That is easy. I think even you obfuscate the code, it is still
breakable as obfuscation only changes method and class names to
alphanumerics. The codes in there are still the same.

Is there no way way to encrypt all the codes than being shown in there? I tried obfuscation and strong names, it seems to be the same. No difference. I can still see codes inside void main (example) using .net reflector by Lutz Roeder or Anakrino.

Can you share some opinion to me, please?

Thanks.

--
Regards,
Chua Wen Ching :)

Nov 16 '05 #3
Hi Chua,

Strong naming is not a form of encryption. It just guarantees that an
assembly is not tampered and also who signed it (which strong key).
You can delete or change the signature but then the assembly is tampered and
any application using it will notice (if the application was linked or is
linking against original one).
As a form of protection, you should use one of obfuscators out there (just
search for obfuscator - one is included with vs.net, btw).

--
Miha Markic [MVP C#] - RightHand .NET consulting & development
miha at rthand com
www.rthand.com

"Chua Wen Ching" <ch************ @nospam.hotmail .com> wrote in message
news:CA******** *************** ***********@mic rosoft.com...
Hi all,

Basically right now, i am interested to learn how to break strong names
in
.net assemblies. I had researched a lot and found a blog that mention how
to
hack strong name assemblies.
http://blogs.msdn.com/shawnfa/archiv...20/218049.aspx

"
In order to enable post-build modifications, you need to either:

Delay sign your assembly, hack the PE image, and then perform the final
signing; or
Sign your assembly, hack the PE image, and the use SN -R to resign the
assembly
"
I had look and read about Portable Executables, but the problem is most of
them are in concepts.

Do you had any experience in breaking apart a .net strong name
assemblies?

It seems that PE are in C++ codes, and in order to hack PE, i need to
write C++ codes, or use binary editors to manually change?

I am looking into possibilities to protected my office .net libraries, at
least make it harder for hacker.

I heard you can apply a ECMA key, and you can secure the libraries, just
like what Microsoft did to some of their .net framework codes, which you
can't use .net reflector to see the codes.

Please correct me if had a wrong understanding :)

I tried the binary editor from Visual Studio .NET, but i can't seem to
understand how to modify anything (hex or ascii), when i change and save
back
to the exe, it fails to run. An error related to not a proper win32
executable.

I had tested with ildasm by generating an il, manually delete the lines
of
codes that calls the software license and compile back to an exe by using
ilasm. That is easy. I think even you obfuscate the code, it is still
breakable as obfuscation only changes method and class names to
alphanumerics. The codes in there are still the same.

Is there no way way to encrypt all the codes than being shown in there? I
tried obfuscation and strong names, it seems to be the same. No
difference. I
can still see codes inside void main (example) using .net reflector by
Lutz
Roeder or Anakrino.

Can you share some opinion to me, please?

Thanks.

--
Regards,
Chua Wen Ching :)

Nov 16 '05 #4
Hello,

May I suggest that you consider our obfuscator, very easy to use and
reasonably priced:

http://www.xenocode.com

Regards

Lionel Lindemann
XenoCode Europe

"Chua Wen Ching" <ch************ @nospam.hotmail .com> wrote in message news:<CA******* *************** ************@mi crosoft.com>...
Hi all,

Basically right now, i am interested to learn how to break strong names in
.net assemblies. I had researched a lot and found a blog that mention how to
hack strong name assemblies.
http://blogs.msdn.com/shawnfa/archiv...20/218049.aspx

"
In order to enable post-build modifications, you need to either:

Delay sign your assembly, hack the PE image, and then perform the final
signing; or
Sign your assembly, hack the PE image, and the use SN -R to resign the
assembly
"
I had look and read about Portable Executables, but the problem is most of
them are in concepts.

Do you had any experience in breaking apart a .net strong name assemblies?

It seems that PE are in C++ codes, and in order to hack PE, i need to
write C++ codes, or use binary editors to manually change?

I am looking into possibilities to protected my office .net libraries, at
least make it harder for hacker.

I heard you can apply a ECMA key, and you can secure the libraries, just
like what Microsoft did to some of their .net framework codes, which you
can't use .net reflector to see the codes.

Please correct me if had a wrong understanding :)

I tried the binary editor from Visual Studio .NET, but i can't seem to
understand how to modify anything (hex or ascii), when i change and save back
to the exe, it fails to run. An error related to not a proper win32
executable.

I had tested with ildasm by generating an il, manually delete the lines of
codes that calls the software license and compile back to an exe by using
ilasm. That is easy. I think even you obfuscate the code, it is still
breakable as obfuscation only changes method and class names to
alphanumerics. The codes in there are still the same.

Is there no way way to encrypt all the codes than being shown in there? I
tried obfuscation and strong names, it seems to be the same. No difference. I
can still see codes inside void main (example) using .net reflector by Lutz
Roeder or Anakrino.

Can you share some opinion to me, please?

Thanks.

Nov 16 '05 #5
I see... only obfuscator the only way :(

Yeah, i will evaluate it...

"Lionel Lindemann" wrote:
Hello,

May I suggest that you consider our obfuscator, very easy to use and
reasonably priced:

http://www.xenocode.com

Regards

Lionel Lindemann
XenoCode Europe

"Chua Wen Ching" <ch************ @nospam.hotmail .com> wrote in message news:<CA******* *************** ************@mi crosoft.com>...
Hi all,

Basically right now, i am interested to learn how to break strong names in
.net assemblies. I had researched a lot and found a blog that mention how to
hack strong name assemblies.
http://blogs.msdn.com/shawnfa/archiv...20/218049.aspx

"
In order to enable post-build modifications, you need to either:

Delay sign your assembly, hack the PE image, and then perform the final
signing; or
Sign your assembly, hack the PE image, and the use SN -R to resign the
assembly
"
I had look and read about Portable Executables, but the problem is most of
them are in concepts.

Do you had any experience in breaking apart a .net strong name assemblies?

It seems that PE are in C++ codes, and in order to hack PE, i need to
write C++ codes, or use binary editors to manually change?

I am looking into possibilities to protected my office .net libraries, at
least make it harder for hacker.

I heard you can apply a ECMA key, and you can secure the libraries, just
like what Microsoft did to some of their .net framework codes, which you
can't use .net reflector to see the codes.

Please correct me if had a wrong understanding :)

I tried the binary editor from Visual Studio .NET, but i can't seem to
understand how to modify anything (hex or ascii), when i change and save back
to the exe, it fails to run. An error related to not a proper win32
executable.

I had tested with ildasm by generating an il, manually delete the lines of
codes that calls the software license and compile back to an exe by using
ilasm. That is easy. I think even you obfuscate the code, it is still
breakable as obfuscation only changes method and class names to
alphanumerics. The codes in there are still the same.

Is there no way way to encrypt all the codes than being shown in there? I
tried obfuscation and strong names, it seems to be the same. No difference. I
can still see codes inside void main (example) using .net reflector by Lutz
Roeder or Anakrino.

Can you share some opinion to me, please?

Thanks.

Nov 16 '05 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
2364
by: Kelly G. | last post by:
Hi All I am developing a web application in .Net technology. Usually, I create a DLL for all of my modules to protect the logics. And it is possible to decompile the DLL. How do I protect DLL created using VISUAL STUDIO.NET 2002. I want to secure component design. Give me some professional techniques to secure the codes. Any 3rd party software must not be able to decompile it.
6
1710
by: Tom Dacon | last post by:
If you're not putting assemblies in the GAC, but are referencing shared code with copylocal=true into the projects that use them, is there any value to signing the assemblies? In the environment I've just begun to work in, there are customer-facing web sites, internally-accessed maintenance and admin web sites, middle-tier business logic assemblies, services, and Windows Forms apps that run on the middle-tier. The policy is to sign the...
8
1947
by: peter | last post by:
I have taken over the website duties at work. I am still learning PHP and MySQL. I want to have a form where the user enters some finacial info and it is stored in a database. It, obviously, needs to be secure. I know how to make the input form secure. But what about retrieving the data? I was thinking I would use a password-protected secure form for that. Is that enough? What if I happen to view the records using PhpMyAdmin? Does...
0
1570
by: thbst16 | last post by:
After a number of weeks of fruitless research and experimentation, I decided to turn to the group with this issue and see if anyone had any experiences or insights that might help me out. Here's what I'm facing: · Deploying Windows Form client using Zero Touch deployment. · I use a variant of Rocky Lhotka's NetRun utility to bootstrap the application. This utility is client resident and sets permissions to "Full Trust" prior to invoking...
6
1686
by: Jack Addington | last post by:
I have recently spun off a new version of my application for a different project and plan to do some more shortly. I have essentially split it into three parts: 1) Common Company Framework (small/very stable) stored in drive/framework 2) Common Application Framework (large/stable) stored in drive/common 3) New Applications / Skins (small/unstable) stored in drive/project Both my projects are still under some semblance of development...
0
911
by: Jack Addington | last post by:
This is my setup Original Solution /w projects/assemblies: App (Starting Project) AppFrameWork SharedAssemblyA SharedAssemblyB SharedAssemblyC SharedAssemblyD
8
4438
by: 6tc1 | last post by:
Hi all, I'm having a problem where in my solution that contains multiple projects - I instantiate a singleton class in one assembly and then if another assembly tries to use that singleton class another instance of it is created. Basically: --Assembly 1 (the executable)-- -Main.cs-
0
1104
by: Arnie | last post by:
"We use an Authenticode (digital code signing) certificate from Verisign to digitally sign our .NET assemblies, and to ensure the assemblies in a calling tree are authentic as each class and public method in secure assemblies are decorated with this attribute:
5
1693
by: =?Utf-8?B?TWljaGVsQFZvb3JidXJn?= | last post by:
Hi all, i've built a C# dll / component with some wonderful services to the clients Payroll service. As you might guess, i only want MY pogram to use this DLL. If some developer get's hold of a reference to my dll, he or she could easily use all methods to raise his or hers salary.... I tried code access security, bu i can only use that on Class level and not on Assembly level, and i've read that there are ways to work around this kind
0
8310
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
8732
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8503
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
7330
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6166
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5632
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
1
2726
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
1955
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
2
1615
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.