Ogólnie o C + Problem z zapisywaniem w C#


(Jarek P) #1

Witam. Mam 2 problemy, a mianowicie:

-Zastanawiam się nad nauką języka C. Jakie ma możliwości, czy warto, do czego jest przeznaczony?

-Napisałem program, blokujący pewną grę. Zastanawiam się, jak umieścić go w folderze system 32. Jeżeli istnieje inna możliwość (chodzi o to, aby nie dało się łatwo zabić procesu), to proszę o sugestie.

Z góry dziękuję za pomoc.


(Sawyer47) #2

To język ogólnego przeznaczenia, teoretycznie nadaje się do wszystkiego. O C mówi się czasem "przenośny asembler" - można w nim pisać bardzo wydajne programy. W C pisze się systemy operacyjne, sterowniki, ale również programy użytkowe. Zresztą z tego co kojarzę, C powstało właśnie na potrzeby Uniksa (choć na 100% nie jestem pewien). W C napisany jest np. Linux i duża część GNOME jak i interpretery takich języków jak Python i Perl.

Z drugiej strony sam język nie wspiera paradygmatu obiektowego (choć są biblioteki takie jak GObject) i nie posiada np. automatycznego zarządzania pamięcią. Gry komputerowe pisze się raczej w C++ niż w C. Mimo to uważam, że C jak najbardziej warto znać, bo to wg mnie solidna podstawa jeśli chodzi o naukę programowania.


(Tomek Matz) #3

Czy konto użytkownika, na którym ma być uruchamiany ten program posiada uprawnienia administracyjne? Bo jeśli tak to raczej nie da się tego zrobić. Jeśli natomiast nie jest to konto administratora, to mógłbyś przerobić ten swój program na usługę Windows. Najlepiej jak najwięcej kodu, który już napisałeś, wrzuć do jakiejś biblioteki, a potem przerób ten program na usługę Windows. Ustawisz sobie, żeby ta usługa uruchamiała się automatycznie ze startem systemu. Zwykły użytkownik nie będzie mógł jej wyłączyć, nie będzie mógł także zabić procesu Twojej usługi. Generalnie to o co pytasz nie ma za dużo związku z programowaniem, a bardziej dotyczy administracji systemu Windows.

BTW jeśli ten użytkownik odpali np. jakiś LiveCD linux-a to będzie mógł Ci usunąć (bądź zmienić nazwę) z dysku pliki tej Twojej usługi/programu.


(Ryan) #4

To względnie niskopoziomowy język ogólnego przeznaczenia, szczególnie dobrze sprawdzający się przy tworzeniu wydajnego kodu (głównie dzięki jakości rozwijanych od lat kompilatorów).

Blokujący?

Nie umieszczać. System32 jest folderem systemowym i nie należy umieszczać w nim własnych plików - wykonywalnych czy innych. Pliki konkretnego typu mają przeznaczone dla siebie miejsca na dysku. Robienie autorskich rozwiązań "bo tak" jest karygodną próbą śmiecenia ludziom na dysku.

Wszystkie programy zabija się tak samo łatwo. Położenie pliku nie ma znaczenia. Znaczenie ma z jakimi uprawnieniami jest ten program uruchomiony (i czy np. próbuje wetować zamykanie procesu).


(Jarek P) #5

No właśnie. Nie znam innej metody utrudnienia zabicia procesu, niż umieszczenie go w folderze systemowym. Dlatego prosiłem o sugestie. :slight_smile:


(Ryan) #6

Uruchomić proces z odpowiednimi uprawnieniami (np. jako serwis systemowy). Zbudować dwa procesy wzajemnie wskrzeszające się (typowy sposób stosowany przez mało wysublimowany malware).

I powtarzam: umieszczenie pliku w folderze systemowym nie utrudnia zabicia bazującego na nim procesu, zatem nie znasz metody utrudniającej zabicie procesu. To, co chciałeś zastosować, nie działa.


(Tomek Matz) #7

@Ryan

Ja pisałem o tym samym. Tyle, że to można łatwo objeść. O czym też napisałem.

@Jarek P

Jak ostatecznie rozwiązałeś swój problem (mam na myśli blokowanie możliwości uruchomienia gry oraz blokowanie możliwości zamknięcia Twojego programu) ?


(Jarek P) #8

Zamykanie portów i procesów o nazwie tej gry.

Uruchomienie programu "bez formy"