public
static
class
Renamer
{
private
static
readonly
Regex _validNameRegex =
new
Regex(
"^[a-zA-Z_<{$][a-zA-Z_0-9<>{}$.`-]*$"
);
private
static
void
RenameAll(ModuleDef module)
{
foreach
(TypeDef type
in
module.GetTypes())
if
(!type.IsGlobalModuleType)
{
type.Namespace = GenerateNamespaceName();
type.Name = GenerateName();
foreach
(FieldDef field
in
type.Fields)
field.Name = GenerateName();
foreach
(MethodDef method
in
type.Methods)
{
if
(!(method.IsSpecialName || method.IsAbstract || method.IsVirtual))
method.Name = GenerateName();
foreach
(ParamDef param
in
method.ParamDefs)
param.Name = GenerateName();
}
}
}
private
static
string
GenerateName()
{
StringBuilder stringBuilder;
string
name;
do
{
stringBuilder =
new
StringBuilder(_random.Next(10, 30));
for
(
int
i = 0; i < stringBuilder.Capacity; i++)
stringBuilder.Append(_nameChars[_random.Next(_nameChars.Length)]);
name = stringBuilder.ToString();
}
while
(!_validNameRegex.IsMatch(name));
return
name;
}
private
static
string
GenerateNamespaceName()
{
string
name;
name = GenerateName();
foreach
(
string
part
in
name.Split(
'.'
))
if
(!_validNameRegex.IsMatch(part))
return
GenerateNamespaceName();
return
name;
}
}