Rename classes, methods, etc.

Erases meaningful names of classes, methods and other types of entries. Since some renames are not possible due to reflection, picks plausble but completely random names to confuse the attacker.

BeforeAfter: traditionalAfter: Rummage
class Program

class Settings

class Reflected
    field Count
    method Update

class LicenseChecker
    field LicenseData
    method get_UserName
    method IsLicenseValid
    method ReadLicense
class a

class b

class Reflected
    field Count
    method Update

class c
    field a
    method b
    method c
    method d
class BrowseEntry

class Fixed

class Reflected
    field Count
    method Update

class InfoState
    field Binder
    method SetChanged
    method Remove
    method Service

Using the traditional approach, it is completely obvious which members could not be renamed for whatever reason. The Rummage approach makes them blend in and thus hard to spot.

Rummage looks out for code that uses reflection to access classes and properties and makes an intelligent effort to rename as much as possible while keeping the program functional.