June 8, 2002
tools
Brent Rector: The Truth about Code Obfuscators
“An obfuscator only delays the inevitable. With unlimited resources (time and money) and physical access to code, all code can be reverse engineered. This was true for native x86 binaries and it’s true for .NET Framework applications. What an obfuscator does is increase the cost of the effort required to reverse engineer obfuscated code. Hopefully, it increases the cost enough to make reverse engineering your code unpractical.”
June 6, 2002
tools
Visual Build Pro
“It’s easy to put Visual Build Pro to work doing all that manual labor for you so you can focus on more important things. Visual Build Pro is a powerful but affordable build management solution that will automate the build process without a huge commitment of time, and it works with the tools you’re using today.”
June 4, 2002
tools
Updated XsdClassesGen
Eric Eric Friedman has submitted code to support namespaces and uninstall. The former fills the biggest hole in XsdClassesGen (thanks Eric), but why would anyone need the latter?!? : )
May 13, 2002
tools
Modern C++ Design
From Razvan Caciula: I like Chris Sells's books, but also i like romanians too :> I'm preparing for a technical interview and i founded
this book very useful.
May 10, 2002
tools
Announcing Genghis
Genghis is a set of extensions built on top of .NET and integrated with WinForms to provide application-level services in the same flavor as the Microsoft Foundation Classes. Genghis gets its name as the functional heir to Attila, a similar set of functionality built on top of ATL.
May 10, 2002
tools
SafeFormatter for .NET
Are you building and deploying .NET applications in a secure
environment, e.g. over the intranet or the internet? If so, they you’ve
probably mourned the loss of the binary and SOAP formatters that can
automatically serialize a graph of objects that are marked as [Serializable]
and that may also implement ISerializable and IDeserializationCallback. Both
of these formatters are dependent on reflection, which will not be available
in a more restrictive security environment. Likewise, even
ISerialization.GetObjectData is verboten if you wanted to do this kind of
thing yourself. As far as that goes, [Serializable] and ISerialization
should be forbidden in a secure environment, as it allows a client to
get and set the private variables of an object, potentially causing harm.
Still, security is the enemy of usability, to paraphrase
Keith Brown. So, in the spirit of a balancing the design need for objects
that can serialize themselves with the goal of complete disclosure in a
secure world, I’ve built my own “safe” formatter. It only uses facilities of
the runtime that work in the most secure environment of the default settings
for the internet zone. So that objects can guard themselves against
malicious data, I define a new interface called ISafelySerializeable that
they need to implement to support this serialization facility. The protocol
is exactly the same as ISerializable, so if that interface is already being
implemented, the implementation of GetObjectData can be shared between both
interfaces.
Currently, the code is in alpha and is riddled with TODO
statements, but its functional enough today for actual usage.
My SafeFormatter and test harness are available
for your feedback. Enjoy.