Ссылка на объект требуется для нестатического c поля, метода или свойства. - PullRequest
0 голосов
/ 28 мая 2020
using System;
using System.Diagnostics;
using System.Reflection.Emit;
using System.Threading;
using EasyExploits;

namespace ConsoleApp1
{
    class Program
    {
        EasyExploits.Module module = new EasyExploits.Module();

        static void Main(string[] args)
        {
            Module.LaunchExploit();
            Console.ForegroundColor = ConsoleColor.Green;
            Label:
            Console.WriteLine("Please Type 'Inject'");
            string proccess1 = Console.ReadLine();
            if (proccess1 == "Inject")
            {
                Console.WriteLine("");
                Console.WriteLine("Injected!");
                goto Begin;
            }
            else
            {
                goto Label;
            }
            Begin:
            Console.WriteLine("");
            Console.WriteLine("Enter a script and press enter to execute it.");
            string answer = Console.ReadLine();
            Module.ExecuteScript(answer);
            goto Begin





        }
    }
}

Итак, я попытался найти решение этой проблемы, но мне не удалось его найти, поэтому я пришел к переполнению стека. Во всяком случае, мое консольное приложение должно вводить EasyExploits.DLL и выполнять сценарий Lua, когда сценарий вставляется во входные данные. Однако я получаю сообщение об ошибке: "Ссылка на объект требуется для нестатического c поля, метода или свойства 'Module.LaunchExploit ()'" и "Объект ссылка требуется для нестатического c поля, метода или свойства 'Module.ExecuteScript (string)' « Я новичок в c# и не очень понимаю эту ошибку, поэтому, если кто-то может меня подвести с помощью простых шагов, удобных для новичков, было бы здорово.

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Здесь есть 2 проблемы

  1. Модуль - это класс, но LaunchExploit() не является stati c, то есть он должен запускаться из object. Вероятно, вы хотели использовать объект module
  2. module также должен быть static, если вы хотите использовать его внутри функции static main

Я бы также упомянул менее актуальную проблему: goto редко бывают хорошей идеей. Ваш код может стать лучше, если вы:

  1. Создадите stati c функцию begin и там, где у вас есть go to Begin, выполните:
begin()
return;
Создайте static функцию label, сделайте то же самое для нее

Это сделает ваш код более читаемым и отлаживаемым.

0 голосов
/ 28 мая 2020

Ваш метод Main - это stati c, и вы можете получить доступ к только членам stati c того же класса из метода stati c. Все, что вам нужно сделать, чтобы получить EasyExploits.Module stati c:

private static readonly EasyExploits.Module module = new EasyExploits.Module();
...