Исходник C# Поиск строк в процессе

Новичок
Статус
Оффлайн
Регистрация
14 Окт 2024
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Именно на C# нигде не мог найти рабочую реализацию поиска строк в процессе, так что покажу свою:

Source:
using s_buffer = System.String;

public class Memory
{
    public static class MemoryProcessor
    {
        public const string DLL_PATH = "mem.dll";

        #region DLL Import
        [DllImport(DLL_PATH)]
        private static extern int setPID(int pID);

        [DllImport(DLL_PATH)]
        private static extern void setString(string str);

        [DllImport(DLL_PATH)]
        private static extern IntPtr getResult(int index);

        [DllImport(DLL_PATH)]
        private static extern int run();

        [DllImport(DLL_PATH)]
        private static extern int getIndex();

        [DllImport(DLL_PATH)]
        private static extern void clearALL();
        #endregion

        public static void Run() => run();
        public static string getRegion()
        {
            StringBuilder buffer
                 = new StringBuilder();

            int index = getIndex();
            for (int i = 0; i < index; i++)
            {
                buffer.AppendLine(Marshal.PtrToStringAnsi(getResult(i)));
            }
            return buffer.ToString();

        }
        public static void startRegion(int pID) => setPID(pID);
        public static void setRegion(string str) => setString(str);
        public static void stopRegion()
        {
            clearALL();
        }
    }

    public static string SearchString(int pID, params string[] search)
    {
        //Создаем буффер типа string,
        //   и запускаем регион с нашим pID
        s_buffer buffer;
        MemoryProcessor.startRegion(pID);

        //Проходимся по всем параметрам
        //   и добавляем в setRegion
        foreach (string line in search)
        {
            MemoryProcessor.setRegion(line);
        }

        //Запускаем наш процесс
        MemoryProcessor.Run();

        //Получаем итоговый результат
        //    типа string.
        buffer = MemoryProcessor.getRegion();

        //Очищаем наш процесс, для
        //    наших будущих процессов.
        MemoryProcessor.stopRegion();

        //Возвращаем итоговый результат.
        return buffer;
    }
}

Обязательно Для работы рядом нужна mem.dll!!!
Click ->
Пожалуйста, авторизуйтесь для просмотра ссылки.
<- Click
(
Пожалуйста, авторизуйтесь для просмотра ссылки.
)

Пример использование:
How use:
int pid = Process.GetProcessesByName("telegram")[0].Id;

string result
    = Memory.SearchString(pid, "hello");

Console.WriteLine(result);
 
Сверху Снизу