473,406 Members | 2,208 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,406 software developers and data experts.

DotNet, is that possible to prevent reverse engineering?

me was sorry if this question are present before

DotNet, no matter VB.Net or C# all they are compiled to IL,
and yes, that IL will totally same as "open-sourse",
every IL will easy to decompile and get the source nicety,
although there have comeout with some "obfuscators" solution,
but the structure still remain exactly same as the source after obfuscate.

me unable to understand what the benefit will IL bring to me,
is that benefit of "cross-platformable" provided with IL?
if is that so, me rather to protect my intellectual property than make my
project "cross-platformable"

and yes, me know all the programming language are able to reverse engineering,
but at least they are not as easy as decompile the IL, so please don't
debate such trouble

will this problem solved in next version of .Net?

or maybe .Net should comeout with option that allow developer to choice :
compile to IL
compile to native code
sry about my poor English
and thnx for reading my post
Nov 22 '05 #1
8 3869
> and yes, me know all the programming language are able to reverse
engineering,
but at least they are not as easy as decompile the IL, so please don't
debate such trouble

I am afraid that reverse engineering of none-NET programs is as easy as
reverse engineering an IL.
There exist mulitple disasseemblers that have a dictionary aproach and
extract parts of the commercial C++ libraries and actually gives it the
original name of that function.

IDA pro is such an example: http://www.datarescue.com/idabase/
The disassebled code is as readable as the original source code if you know
something about assembler language.
The biggest mistake people make is not to encode their strings, so the
disassembler can point you in a fast way where that particular string is
used, so the executable code will be near that string usage.

Typically this way, programs gets hacked in 30 minutes to 2 hours no more.

I propose not to take too much energie into avoiding reverse engineering but
to put your energy to create much better code, so the competition will
always lag behind.

A few techniques that could help to slow down reverse engineering is to
encrypt all your strings so they become unreadable and thus harder to find.
Maybe to add honey pot strings with names that looks like security related
information but actually are used to draw away the attention from the real
security code. Also give your functions misleading names (e.g. call your
security test AboutMe(). And store any key in a stupid name that normally
does not get associated with security (e.g.: string sMyWife="xxxx". Also try
to randomize the detection of the security thing. When you detect that
something is wrong, wait an random interval before you report the
messagebox.

--
http://www.skyscan.be
Nov 22 '05 #2
Xiao,

Every program language that uses a kind of runtimer is using a kind of IL.

The only problem/advance in fact is that it is now a standarized IL for more
program languages.

For the rest search almost every dotNet newsgroup for "obfuscate" and you
find tons of messages.

Cor
Nov 22 '05 #3
"xiao zhang yu" <xiao zhang yu@discussions.microsoft.com> wrote in message
news:DE**********************************@microsof t.com...
[Snip]
me unable to understand what the benefit will IL bring to me,
is that benefit of "cross-platformable" provided with IL?
Yes, along with verification. This verification allows .NET to guarantee
that the program is not hijacked by such things as buffer overruns. Such a
guarantee requires that the CLR can easily analyze the code, therefore it is
easy to reverse engineer.
if is that so, me rather to protect my intellectual property than make my
project "cross-platformable"
Due to the nature of .NET's design this is not possible. If protecting your
IP is your main concern, I'm afraid that you're fighting a doomed battle no
matter what programming platform you use. .NET may make reverse engineering
easier, but the corollary is that it makes development easier and your
programs more secure and stable. As with all things computer-related there's
trade-offs.
and yes, me know all the programming language are able to reverse
engineering,
but at least they are not as easy as decompile the IL, so please don't
debate such trouble

will this problem solved in next version of .Net?
It will never be "solved". Since the verifiable nature of .NET requires a
fairly simple byte-code, it will always be easy to reverse engineer it.
or maybe .Net should comeout with option that allow developer to choice :
compile to IL
compile to native code

NGEN does create a native code DLL, but it includes the IL as well since it
is required for the verification.
sry about my poor English


It's a damn sight better than my Chinese ;-)
Nov 22 '05 #4
as what Olaf Baeyens said, yes that is true, no matter what language also can
be disassemble, but those action only possible done by really pro people, but
not for normal user or normal programmer like myself.
although that disassembler can disassemble it to p-code or something
assemble language, but that totally hard to understand except those pro
familiar with it.

but in .Net, no matter who also can decompile it and get the
structure/design/anything else of my program with nicety,
although there can obfuscate, but after obfuscate, there only add tiny hard
readable to the code, because obfuscators (at least all the obfuscators me
have try) only change the variable/function name to non-meaning style, but
the structure still remian unchanged.

so, if that problem exist, there was no meaning to use .Net to create
application such as games, system tools and others, because finished product
cant hide any secret from users/players.

although like what was Sean Hederman say::"development easier and the
programs more secure and stable"
but me still have to protect my intellectual property...
else there was nothing impetus to make us spend times to design something
"special". What for to spend lot time to develop, but get expose to everyone
in few sec?
is that C++.Net have same happen with VB.Net or C#?
again, thnx for you all reply my post
Nov 22 '05 #5
"xiao zhang yu" <xi*********@discussions.microsoft.com> wrote in message
news:51**********************************@microsof t.com...
as what Olaf Baeyens said, yes that is true, no matter what language also
can
be disassemble, but those action only possible done by really pro people,
but
not for normal user or normal programmer like myself.
although that disassembler can disassemble it to p-code or something
assemble language, but that totally hard to understand except those pro
familiar with it.
Actually, some disassemblers can decompile to C++ or C.
but in .Net, no matter who also can decompile it and get the
structure/design/anything else of my program with nicety,
although there can obfuscate, but after obfuscate, there only add tiny
hard
readable to the code, because obfuscators (at least all the obfuscators me
have try) only change the variable/function name to non-meaning style, but
the structure still remian unchanged.
Obfuscators mangle the internal names, often mess around with class
hierarchies, and call chains. They also encrypt and scatter strings around.
Finally, they litter the code with "honey pots".
so, if that problem exist, there was no meaning to use .Net to create
application such as games, system tools and others, because finished
product
cant hide any secret from users/players.
Yes, but even if one has the unobfuscated source of a program it's still
very tricky to work out exactly whats going on without the documentation and
comments. When obfuscated it's even more difficult since you don't have the
names of the internal members to guide you as to what they do.
although like what was Sean Hederman say::"development easier and the
programs more secure and stable"
but me still have to protect my intellectual property...
else there was nothing impetus to make us spend times to design something
"special". What for to spend lot time to develop, but get expose to
everyone
in few sec?
If you're more concerned about reverse engineering than delivering features,
can I suggest that you write your application as a web app hosted on servers
you control, since that's the only way to really stop it, no matter what
language you use. If you're trying to stop casual reverse engineering,
obfuscation is the way to go. If you're trying to stop professional hackers,
you can forget it, if they want to crack your code they will (as long as
they have access to it).

In my experience, reverse engineering is not really done by your competitors
since they generally feel that their tech is better. I have seen Reflector
used to extract the public interfaces, so that a high-level idea of the
functionality and components can be gleaned, but that's it.
is that C++.Net have same happen with VB.Net or C#?
Yep.
again, thnx for you all reply my post

Nov 22 '05 #6
> In my experience, reverse engineering is not really done by your
competitors
since they generally feel that their tech is better. I have seen Reflector
used to extract the public interfaces, so that a high-level idea of the
functionality and components can be gleaned, but that's it.

This is my experience too. Even though I have the knowledge to reverse
engineer stuff, I never use that since I can think of far better ways to
create the code. Reverse engineering is just a waste of time if you are a
good programmer. And you are stuck on ideas other people create.

One exception is if you create a program that must be compatible with
another program for example sharing files.
But even then you do not look at the code, but you look at the file
structure to determine what byte should be where.

--
http://www.skyscan.be
Nov 22 '05 #7
<"=?Utf-8?B?eGlhbyB6aGFuZyB5dQ==?=" <xiao zhang
yu@discussions.microsoft.com>> wrote:
me was sorry if this question are present before

DotNet, no matter VB.Net or C# all they are compiled to IL,
and yes, that IL will totally same as "open-sourse",


No, it's not. Open source is an entirely different philosophy to "by
reverse engineering you can get some kind of source code, which may be
illegal to do in the first place and won't get you the same source code
the original was compiled from".

<snip>

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 22 '05 #8
xiao zhang yu <xi*********@discussions.microsoft.com> wrote:

<snip>
but in .Net, no matter who also can decompile it and get the
structure/design/anything else of my program with nicety,
although there can obfuscate, but after obfuscate, there only add tiny hard
readable to the code, because obfuscators (at least all the obfuscators me
have try) only change the variable/function name to non-meaning style, but
the structure still remian unchanged.


I suggest you try to understand the decompiled code of a significant
application which has been obfuscated - something more than just a test
class.

Even without obfuscation, understanding a largish application is
difficult without any comments, documentation or anything like that.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 22 '05 #9

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

Similar topics

1
by: Paul | last post by:
With my set up of Visio (2003) and Visual Studio (.Net 2003 Enterprise Architect) I can only reverse engineer C++ code into the class-tree. Is it (supposed to be) possible to generate a static...
10
by: Darren | last post by:
OK, I'm trying to understand the need for this. If I understand correctly without this anyone can reverse engineer and obtain the source code of my application - is this correct? And this tool will...
8
by: xiao zhang yu | last post by:
me was sorry if this question are present before DotNet, no matter VB.Net or C# all they are compiled to IL, and yes, that IL will totally same as "open-sourse", every IL will easy to decompile...
3
by: Stephan Wörmke | last post by:
Hi! I am looking for some tools to help me understand source code of a program written in c++ by someone else. I heard about reverse engineering or uml but does anybody know a goog software? It...
6
by: bluekarthik | last post by:
Hi , Hi, has anyone tried reverse engineering a .drv / .dll file ? Plz tell me some techniques to reverse engineer .drv / .dll files !! karthik bala guru
4
by: Alessandro Riolo | last post by:
I've got a weird thing when reverse engineering a c# project which is declaring and then using an event of type CancelEventHandler as in the following snippet: ... public event...
9
by: Jim | last post by:
With .net having been around for a while now, does anyone know what the uptake of major software houses is in using .net for Windows Application development? e.g. have the likes of Adobe, MS,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
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...
0
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...
0
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...

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.