Wyciągnięcie opisu procesu

0

Potrzebuję wyciągnąć opis procesu lub też opis który jest podany we właściwościach pliku na zakładce ogólne. Porady jakie znalazłem mówią, że to powinien być ten sam opis co na zakładce szczegóły niestety tamta zakładka jest pusta więc wszelkie próby wyciągnięcia tego z FileVersionInfo dają pusty wynik. Ma ktoś jakiś pomysł?

0

Ale o jaki plik chodzi z własnego pliku czy innego? Ten plik jest napisany pod .NET?
Jak pod .NET (zwykłych Win32 chyba się tak nie da) to coś w stylu:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace TestApp
{
    class Program
    {
        static void Main(string[] args)
        {
            AssemblyTitleAttribute title;
            AssemblyDescriptionAttribute desc;

            Assembly aAssembly = Assembly.GetExecutingAssembly();
            title = (AssemblyTitleAttribute)
                       AssemblyTitleAttribute.GetCustomAttribute(
                   aAssembly, typeof(AssemblyTitleAttribute));

            desc = (AssemblyDescriptionAttribute)
                       AssemblyDescriptionAttribute.GetCustomAttribute(
                   aAssembly, typeof(AssemblyDescriptionAttribute));            


            Console.WriteLine("Title: " + title.Title);
            Console.WriteLine("Description: " +desc.Description);


            Assembly aAssembly2 = Assembly.LoadFile(@"sciezka i nazwa pliku");
            title = (AssemblyTitleAttribute)
                       AssemblyTitleAttribute.GetCustomAttribute(
                   aAssembly2, typeof(AssemblyTitleAttribute));

            desc = (AssemblyDescriptionAttribute)
                       AssemblyDescriptionAttribute.GetCustomAttribute(
                   aAssembly2, typeof(AssemblyDescriptionAttribute));

            Console.WriteLine("Title: " + title.Title);
            Console.WriteLine("Description: " + desc.Description);

            Console.ReadKey();
        }
    }
}

Nie wiem czy to jest akurat te dane których potrzebujesz ale prawdopodobnie klasa Assembly będzie przydatna (oczywiście pod .NET).

0

Co to znaczy „zakładka jest pusta”? Przy każdym pliku? Czy akurat przy jednym, który z jakiegoś powodu się kaszani?

0

Ehh. Niestety mój błąd opis procesu tego exeka jest powiązany z nazwą pliku. Czyli cały plan do bani.
Może wyjaśnię dokładniej o co mi chodziło. Program do którego to potrzebuję to program antycheaterski do pewnej gry. W każdym do tej pory napotkanym przeze mnie programie przed którym miałem zabezpieczyć grę nie było problemu ze znalezieniem czegoś unikalnego i niezmiennego przez co mogłem go rozpoznać.

Nie będę zakładał nowego tematu bo chodzi o jedno i to samo, czy może ktoś zna coś jeszcze coś unikalnego dla procesu danej aplikacji, niezmiennego bez względu u kogo się uruchamia ale innego niż tytuł okna i informacje z zakładki szczegóły we właściwościach (obie rzeczy są puste)? Lub też Czy istnieje możliwość wykrycia jakie aplikacje korzystają lub ingerują w pamięć danego procesu?

0

Może zamiast próbować rozpoznać po właściwościach procesu, porównuj hash z zawartości pliku, albo jego początku?

0

opis procesu tego exeka jest powiązany z nazwą pliku

?? nie jest, plik WINWORD.EXE ma opis Microsoft Word.

0

@Azarien niestety akurat ten exek którego używanie chce wykryć zmienia opis procesu wraz ze zmianą nazwy pliku, jest po prostu taki sam opis jak nazwa, więc jak ktoś by chciał ukryć działanie przed moimi zabezpieczeniami to żaden problem wystarczy, że sobie nazwie go inaczej ;)

@Sarrus hash odpada, jakbym miał co kilka minut sprawdzać hashe wszystkich exeków uruchomionych w systemie to u ludzi na słabszych kompach by powodowało zapewne chwilowe zwiechy gry, tak samo jak otwieranie tych exeków i sprawdzanie zawartości. A inne właściwości procesu... możesz podać coś więcej?

0

@Azarien niestety akurat ten exek którego używanie chce wykryć zmienia opis procesu wraz ze zmianą nazwy pliku, jest po prostu taki sam opis jak nazwa

To znaczy że nie ma opisu, co tłumaczy pustą zakładkę „Szczegóły”, brak danych z FileVersionInfo, a Windows wyświetla w tym polu po prostu nazwę pliku, z braku innego pomysłu.

0

@Azarien Dlatego szukam innego sposobu na wykrycie działania tej aplikacji, ale nie mam pomysły jak to lekko zreazlizować. Mówie program działa na różnych kompach czasami ledwo wystarczających do odpalanie tej gry, więc aplikacja zabezpieczająca nie może obciążać kompa poprzez wczytywanie exeków i przetwarzanie ich.

0

Aby zabezpieczenie miało sens musisz dać użytkownikowi powód, dla którego miałby uruchamiać klienta gry akurat z twoim hack shield'em.
Po co w ogóle "haker" miałby instalować twoje zabezpieczenie (osobną aplikację, która będzie mu tylko przeszkadzać) jak nie jest mu do niczego potrzebna i może włączyć grę bezpośrednio?
Chodzi mi o to jak wymuszasz działanie swojego antycheat'a w systemie gdy ktoś chce zagrać.

0

@szopenfx A to to nie problem, mam poprzez stronę www podgląd na bieżąco kto ma włączone i jak jest oficjalne wydarzenie a ktoś ma wyłączone to z automatu po zakończeniu wydarzenia jest zdyskwalifikowany ;) A zdarzyli się tacy cwaniacy, potem był płacz czemu dq i już więcej nie zapomnieli.

0

No dobrze, ale jak wiążesz konto użytkownika w grze z "kontem" AntyCheat'a? sprawdzasz czy z tego samego IP czy te same profile sprzętowe? A co jeśli sklonuje sobie maszynę wirtualną i na 1 maszynie włączę antycheat a na drugiej samą grę?
Zabezpieczenie, które wymuszałoby korzystanie z antycheat'a to dodanie szyfrowania pakietów - i już użytkownik musiałby mieć twojego dedykowanego klienta bo żaden inny prawidłowo się nie skomunikuje z serwerem mając już zapewnioną komunikację możesz co jakiś czas robić zapytania z serwera o pewne obszary pamięci, tytuł okna, liste procesów w systemie, integralność plików itd.

0

@szopenfx są wysyłane pewne wartości które mogą się pojawić tylko jeżeli to jest ta instalacja gry z osobą będąca na serwerze. Od roku się wszystko sprawdza. A co do powiązania nazwa profilu pobierana z pamięci procesu gry, która musi być taka sam jak konto użytkownika na stronie. z samej pamięci pobieram tez inne wartości które świadczą o tym, czy to ta osobą która siedzi na tym serwerze, a jeszcze dokładniej dane wysłane od użytkowników są powiązane i sprawdzane z danymi które generuje sam serwer gry.

0

Wydaje mi się to mało wyszukane, ale nie będę się już w to bardziej zagłębiał.
Wracając do pytania podstawowego zrób sobie listę wszystkich procesów w systemie, pobierz ścieżkę z której zostały uruchomione GetModuleFileNameEx i sprawdź rozmiar pliku jeśli ten sam co zakładany to dodatkowo sumę kontrolną i to powinien być ten plik/proces. Szkoda też, że twój "AntyCheat" nie uruchamia sam tego procesu np. przez CreateProcess wtedy miałbyś jego uchwyt i nie musiał szukać. Funkcje są z WinApi Nie wiem jak w .NET

0

@szopenfx już wcześniej w tym temacie ktoś mi to zaproponował i wychodzi, że chyba to jedyne wyjście. Tylko się obawiam czy to nie będzie za ciężkie, pffff czyli nie pójdzie z tym tak łatwo jak myślałem, będzie trzeba napisać i zrobić testy u kilku osób, zanim update wejdzie w stabilke. Niestety nie mogę tego wykrywania uruchomić raz, musi robić to cyklicznie. Listę procesów i tak mam, bo wszystkie do tej pory znane mi cheaty dało się wyłapać właśnie poprzez informacje zawarte w samym procesie. No nic potestuje później i zobaczymy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1