Fix a problem with String.StartsWith() on mono
This commit is contained in:
parent
8469b84cc2
commit
08f5b04675
|
@ -268,7 +268,7 @@ namespace de4dot {
|
|||
var inDir = Utils.getFullPath(searchDir.InputDirectory);
|
||||
var outDir = Utils.getFullPath(searchDir.OutputDirectory);
|
||||
|
||||
if (!fileOptions.Filename.StartsWith(inDir, StringComparison.OrdinalIgnoreCase))
|
||||
if (!Utils.StartsWith(fileOptions.Filename, inDir, StringComparison.OrdinalIgnoreCase))
|
||||
throw new UserException(string.Format("Filename {0} does not start with inDir {1}", fileOptions.Filename, inDir));
|
||||
|
||||
var subDirs = fileOptions.Filename.Substring(inDir.Length);
|
||||
|
|
|
@ -326,7 +326,7 @@ namespace de4dot {
|
|||
|
||||
foreach (var val in options.StringDecrypterMethods) {
|
||||
var tokenStr = val.Trim();
|
||||
if (tokenStr.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
|
||||
if (Utils.StartsWith(tokenStr, "0x", StringComparison.OrdinalIgnoreCase))
|
||||
tokenStr = tokenStr.Substring(2);
|
||||
int methodToken;
|
||||
if (int.TryParse(tokenStr, NumberStyles.HexNumber, null, out methodToken))
|
||||
|
@ -398,14 +398,14 @@ namespace de4dot {
|
|||
remaining = "";
|
||||
}
|
||||
|
||||
if (remaining.StartsWith("(", StringComparison.Ordinal)) {
|
||||
if (Utils.StartsWith(remaining, "(", StringComparison.Ordinal)) {
|
||||
stringArgs = remaining;
|
||||
}
|
||||
else if (remaining.Length > 0)
|
||||
throw new UserException(string.Format("Invalid method desc: '{0}'", methodDesc));
|
||||
|
||||
if (stringArgs != null) {
|
||||
if (stringArgs.StartsWith("(", StringComparison.Ordinal))
|
||||
if (Utils.StartsWith(stringArgs, "(", StringComparison.Ordinal))
|
||||
stringArgs = stringArgs.Substring(1);
|
||||
if (stringArgs.EndsWith(")", StringComparison.Ordinal))
|
||||
stringArgs = stringArgs.Substring(0, stringArgs.Length - 1);
|
||||
|
|
|
@ -183,5 +183,13 @@ namespace de4dot {
|
|||
Log.log(logLevel, line);
|
||||
Log.log(logLevel, "\n\nStack trace:\n{0}", ex.StackTrace);
|
||||
}
|
||||
|
||||
// This fixes a mono (tested 2.10.5) String.StartsWith() bug. NB: stringComparison must be
|
||||
// Ordinal or OrdinalIgnoreCase!
|
||||
public static bool StartsWith(string left, string right, StringComparison stringComparison) {
|
||||
if (left.Length < right.Length)
|
||||
return false;
|
||||
return left.Substring(0, right.Length).Equals(right, stringComparison);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -398,7 +398,7 @@ namespace de4dot.deobfuscators {
|
|||
|
||||
foreach (var name in namesToPossiblyRemove) {
|
||||
foreach (var moduleRef in module.ModuleReferences) {
|
||||
if (moduleRef.Name.StartsWith(name, StringComparison.OrdinalIgnoreCase))
|
||||
if (Utils.StartsWith(moduleRef.Name, name, StringComparison.OrdinalIgnoreCase))
|
||||
addModuleReferenceToBeRemoved(moduleRef, reason);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -142,7 +142,7 @@ namespace de4dot.deobfuscators.SmartAssembly {
|
|||
|
||||
void findSmartAssemblyAttributes() {
|
||||
foreach (var type in module.Types) {
|
||||
if (type.FullName.StartsWith("SmartAssembly.Attributes.PoweredByAttribute", StringComparison.Ordinal)) {
|
||||
if (Utils.StartsWith(type.FullName, "SmartAssembly.Attributes.PoweredByAttribute", StringComparison.Ordinal)) {
|
||||
foundSmartAssemblyAttribute = true;
|
||||
addAttributeToBeRemoved(type, "Obfuscator attribute");
|
||||
initializeVersion(type);
|
||||
|
|
|
@ -78,7 +78,7 @@ namespace de4dot.renamer {
|
|||
}
|
||||
|
||||
static string renameResourceString(string s, string oldTypeName, string newTypeName) {
|
||||
if (!s.StartsWith(oldTypeName, StringComparison.Ordinal))
|
||||
if (!Utils.StartsWith(s, oldTypeName, StringComparison.Ordinal))
|
||||
return s;
|
||||
if (s.Length == oldTypeName.Length)
|
||||
return newTypeName;
|
||||
|
@ -152,7 +152,7 @@ namespace de4dot.renamer {
|
|||
|
||||
bool isValid = false;
|
||||
foreach (var validName in validResourceNames) {
|
||||
if (validName.StartsWith(oldName, StringComparison.Ordinal)) {
|
||||
if (Utils.StartsWith(validName, oldName, StringComparison.Ordinal)) {
|
||||
isValid = true;
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user