/// <summary> /// Perform "position" verb. /// </summary> /// <param name="options">Options</param> static void DoPosition(MonoOptions options) { IPositionTranslator translator = PositionTranslator.DefaultInstance; Int64 position = 0; if (options.Key.HasValue) { // This doesn't work yet: Command line parser can't parse Nullable? position = translator.ToPosition(options.PositionString, options.Key.Value); } else if (options.AssemblyPath != null) { EazModule module; if (!TryLoadModule(options.AssemblyPath, out module)) { return; } MethodStub method = module.FindFirstVirtualizedMethod(); if (method != null) { try { position = translator.ToPosition(options.PositionString, method.ResourceCryptoKey); } catch (FormatException e) { Console.WriteLine(e.Message); return; } } else { Console.WriteLine("No virtualized methods found in specified assembly"); return; } } else { Console.WriteLine("Provide either the crypto key or assembly from which to extract the crypto key"); return; } Console.WriteLine("{0} => {1:X8}", options.PositionString, position); }
/// <summary> /// Perform "position" verb. /// </summary> /// <param name="options">Options</param> static void DoPosition(MonoOptions options) { Int64 position = 0; if (options.AssemblyPath != null) { EazModule module; if (!TryLoadModule(options.AssemblyPath, out module)) { return; } IPositionTranslator translator = module.PositionTranslator; MethodStub method = module.FindFirstVirtualizedMethod(); if (method != null) { try { position = translator.ToPosition(options.PositionString, method.ResourceCryptoKey); } catch (FormatException e) { Console.WriteLine(e.Message); return; } } else { Console.WriteLine("No virtualized methods found in specified assembly"); return; } } else { Console.WriteLine("Provide either the crypto key or assembly from which to extract the crypto key"); return; } Console.WriteLine("{0} => {1:X8}", options.PositionString, position); }