Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Zabezpieczenie pluginu na ip do którego daje .sma



  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
59 odpowiedzi w tym temacie

#21 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 17.08.2014 07:53

no a jak ktos go wylaczy?
  • +
  • -
  • 0

#22 Nltj

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:107
  • Lokalizacja:Jamajka ?
Offline

Napisano 17.08.2014 21:05

Zrób tak jak koniecznie chcesz aby cię zamkneli (bo cię znajdą :P :mur: ale masz   :coto:  :coto:  :coto: )

zrób w amxx drugiego pluginu większość i aby z tego "edytowalnego" pluginu pobierało cvary i np działało na natywy.

Jeżeli człowiek ma łeb to zastąpi Twoje natywy swoimi i będzie mu działać na każdym ip :3

zrób tak aby jeden bez drugiego nie działał i wtedy Będzie musiał dopisać obydwa :3 wymusisz ręcznie


  • +
  • -
  • 0

#23 Puchate

    Wszechobecny

  • Użytkownik

Reputacja: 204
Profesjonalista

  • Postów:433
  • Lokalizacja:Polska
Offline

Napisano 17.08.2014 23:03

- zastosuj natywy w pluginach z otwartymi kodami

- natywy te zakoduj w pluginie bez źródła stosując spaghetti code, dzięki czemu inżynieria wsteczna będzie dużo cięższa 

Spoiler

- sprawdzając ip zrób to z głową, nie odwołuj się do funkcji zwracającej true/false na zapytanie czy ip serwera jest poprawne bo taki mechanizm łatwo złamać (tutaj metody są dyskusyjne :P)

- skompiluj plugin z parametrem -d0


  • +
  • -
  • 0

#24 Nltj

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:107
  • Lokalizacja:Jamajka ?
Offline

Napisano 18.08.2014 00:43

Nie stosuj nazw które mówią co dane natywy robią (np 1894e1872 zamiast cod_inflict_damage) ,a  najlepiej w każdym natywie sprawdzaj czy ip == ip na którym ma działać, trudniej będzie złamać takie zabezpieczenie zab.gif

 

i tak masz

:coto:  :coto:  :coto:

:)

 

Albo inaczej (to tak bardziej offtopowo) włam się na serwer i cały czas patrz czy ktoś nie ściąga pliku xD


Użytkownik Nltj edytował ten post 18.08.2014 00:45

  • +
  • -
  • -1

#25 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 18.08.2014 06:35

Dobra. A callfunc? Lepsze od natywow czy nie?
  • +
  • -
  • 0

#26 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 18.08.2014 07:44

http://amxx.pl/topic...unc-vs-natives/
  • +
  • -
  • 0

If you can dream it, you can do it.


#27 Puchate

    Wszechobecny

  • Użytkownik

Reputacja: 204
Profesjonalista

  • Postów:433
  • Lokalizacja:Polska
Offline

Napisano 18.08.2014 14:32

 

 

,a  najlepiej w każdym natywie sprawdzaj czy ip == ip 

Toż to żadne zabezpieczenie, bo zawsze można zmodyfikować warunek z equal na not ;)


  • +
  • -
  • 0

#28 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 18.08.2014 21:09

*
Popularny

Jeśli już tak bardzo chcecie zabezpieczać, IP zapiszcie w formie liczby całkowitej (wszak adres IP ma dokładnie 32 bity), a nie w formie stringa, bo taki string da się bardzo łatwo podmienić, bo przecież widać od razu gdzie on leży w kodzie. Lepiej więc "docelowy" adres IP zapisać w formie, która nie jest łatwa do odczytania, następnie adres IP serwera sprowadzić do tej samej postaci przed porównaniem i dopiero wtedy porównać.

Porównanie również można zamaskować (żeby ktoś go nie podmienił na true, albo nie wynopował jeśli jest użyty warunek w postaci if(!warunek) return.... Choćby porównywać w jakiś sprytny sposób bit po bicie albo wykonywać szczególne operacje matematyczne. pomysłów jest wiele.

Inną ciekawą opcją jest "serwer licencyjny". Generujesz licencję (może być to prosty plik tekstowy z ID licencji, adresem IP serwera i danymi osoby posiadającej licencję), wyliczasz dla tej licencji hash z solą (ale nie jakieś proste MD5, jak już szaleć to na całego: PBKDF2 + SHA256 lub BCrypt + SHA256 z jakąś rozsądną liczbą iteracji). Sól powinna być unikalna dla każdego pliku licencyjnego i nieujawniana, w ten sposób nikt nie ma szans podrobić pliku licencyjnego mimo, że wie jak jest generowany. Twój "zamaskowany" plugin wysyłałby nawet samo ID + hash do serwera licencyjnego, a ten po swojej stronie generuje ponownie hash z danych zapisanych w bazie i sprawdza czy jest identyczny z tym przesłanym z serwera.

Jeszcze ciekawsze by było, gdyby AMXX potrafił uruchomić kod wygenerowany w locie. Wtedy serwer licencyjny po zweryfikowaniu licencji, wysyłałby kawałek kodu, który jest niezbędny do działania pluginu. Kod taki siedziałby w pamięci RAM, więc byłby ciężki do "odzyskania". Pod warunkiem, że transmisja kodu byłaby szyfrowana, co też nietrudno uzyskać :)
  • +
  • -
  • 5

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#29 Nltj

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:107
  • Lokalizacja:Jamajka ?
Offline

Napisano 19.08.2014 01:15

Wszyscy źle gadacie, ZAWSZE można wyciąć dany fragment kodu jak się ma sma, niczym nie zabezpieczysz jak dajesz SMA. 

 

Takie jest moje końcowe zdanie na ten temat, UP to dałoby coś jakby nie dawać sma a on takowe podaje temu co kupuje od niego ten plugin.

 

Bez sensu choć ten serwer by działał spoko :P


  • +
  • -
  • -1

#30 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 19.08.2014 08:49

Przeczytaj jeszcze raz mój post ze zrozumieniem... Jeśli w kodzie SMA nie będzie zawartej jakiejś kluczowej funkcji do działania pluginu, ale będzie jej kod przesyłany z serwera licencyjnego i od razu uruchamiany, a transmisja szyfrowana to nie ma innej możliwości żeby zdjąć to zabezpieczenie, niż zrobić zrzut pamięci RAM, do czego potrzebny jest co najmniej własny VPS, a i tak nie jest to łatwe do ogarnięcia.

Niestety... AMXX nie przewiduje uruchomienia kodu wygenerowanego "w locie"...
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#31 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 19.08.2014 08:53

Gwyn nie wiedziałem że Ty takie rzeczy potrafisz.

Dla mnie to czarna magia, ale to chyba najwyższy czas żeby to ogarnąć.


  • +
  • -
  • 0

#32 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 984
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 19.08.2014 09:24

Jeszcze ciekawsze by było, gdyby AMXX potrafił uruchomić kod wygenerowany w locie. Wtedy serwer licencyjny po zweryfikowaniu licencji, wysyłałby kawałek kodu, który jest niezbędny do działania pluginu. Kod taki siedziałby w pamięci RAM, więc byłby ciężki do "odzyskania". Pod warunkiem, że transmisja kodu byłaby szyfrowana, co też nietrudno uzyskać 

 

Jest to możliwe do zaimplementowania w samym amxmodx ;) cóż chyba trzeba wysłać ticket do arkshine


  • +
  • -
  • 2

#33 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 19.08.2014 09:47

A dałoby się napisać moduł do AMXX, który by wyłączał pluginy jak jest złe ip?


  • +
  • -
  • 0

#34 Puchate

    Wszechobecny

  • Użytkownik

Reputacja: 204
Profesjonalista

  • Postów:433
  • Lokalizacja:Polska
Offline

Napisano 19.08.2014 12:13

 

 

(ale nie jakieś proste MD5, jak już szaleć to na całego: PBKDF2 + SHA256 lub BCrypt + SHA256 z jakąś rozsądną liczbą iteracji).

Jakies sha1 z solą w tym przypadku uważam za w zupełności wystarczające ;)

 

 

A dałoby się napisać moduł do AMXX, który by wyłączał pluginy jak jest złe ip?

 

Dało, ale jaki tego sens? Jeszcze łatwiej niż w pluginie grzebać tam będzie... ;)


Użytkownik Puchate edytował ten post 19.08.2014 12:14

  • +
  • -
  • 0

#35 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 19.08.2014 12:31

Dlaczego łatwiej?

Wtedy mozna gdzies wrzucic linijke zeby ladowalo ten modul (require_module).
  • +
  • -
  • 0

#36 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 19.08.2014 13:43

A temu łatwiej, bo więcej jest w internetach informacji o tym, jak dekompilować i przerabiać biblioteki .so lub .dll (które się składają na taki moduł) niż pluginy do amxx.

Dodatkowo moduły do amxx też muszą być objęte tą samą licencją, co amxx... Ale zawsze można zrobić moduł do metamoda, który już objęty tym być nie musi.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#37 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.08.2014 13:04

Gwyn.
Opisz dokładnie sposób z serwerem licencyjnym.
Wykorzystać sockets? Gdzie ten plik licencyjny?

Jak maskować to sprawdzanie IP??
  • +
  • -
  • 0

#38 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.08.2014 18:23

1. plik licencyjny, zwykły plik TXT, dla przykładu:
312337:Jan Kowalski:ul. Zbożowa 37:30-072 Kraków:127.0.0.1
24roTquoKX1BYQ4Lbs8fO9dPTLYg/lLu7UFdPBURnfg=
Dane to po kolei (1 linia) ID licencji, imię i nazwisko osoby na którą jest wykupiona licencja, adres, kod pocztowy, miasto i IP na który wykupiona jest licencja.

WSZYSTKIE te dane zapisujesz również po stronie serwera. W pliku licencyjnym właściwie może znajdować się samo ID licencji, ale w ten sposób można po samym pliku zidentyfikować do kogo należy licencja :)

2 linia to zahashowana 1 linia, jednak na końcu został doklejony klucz, o treści tajnyklucz. Oczywiście Twój klucz powinien być inny :) Algorytm użyty do wygenerowania klucza to PBKDF2 SHA256 z 1000 iteracji. Powinniśmy tutaj bardziej skomplikowany algorytm wykorzystywać, gdyż odczytanie tajnego klucza umożliwi obejście licencji. Klucz został zapisany w base64, bo mniej znaków zajmuje, niż wartość w hex ;)

W bazie danych po stronie serwera licencyjnego powinniśmy również przechowywać tajnyklucz.

Plugin następnie łączy się socketem z serwerem licencyjnym, przesyłając mu zawartość pliku. Serwer pobiera z bazy dane licencji (korzystając z ID), sprawdza czy reszta danych pasuje do licencji i co bardzo ważne, sprawdza czy połączenie zostało nawiązane z tego samego IP, na które wystawiona jest licencja.

Jeśli to się zgadza, przechodzimy do weryfikacji samej licencji. Serwer licencyjny generuje hash na podstawie danych z bazy i sprawdza, czy jest on taki sam, jak hash otrzymany z pluginu. Jeśli się zgadza, odsyłany do pluginu jest pozytywny wynik operacji (gdyby to było możliwe, kawałek kodu niezbędny do uruchomienia pluginu), gdy jest negatywny, odsyłamy niepowodzenie i plugin się blokuje.
  • +
  • -
  • 4

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#39 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.08.2014 20:19

Powinniśmy tutaj bardziej
skomplikowany algorytm wykorzystywać, gdyż odczytanie tajnego klucza umożliwi
obejście licencji. Klucz został zapisany w base64, bo mniej znaków zajmuje, niż
wartość w hex

nie rozumie tego ni hu hu.

A jak nie mam bazy danych? Moga byc te dane na srv licencyjnym?
  • +
  • -
  • 0

#40 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.08.2014 20:35

Z bazy danych korzysta SERWER LICENCYJNY!
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark






Również z jednym lub większą ilością słów kluczowych:

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych