Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zabezpieczenie Clienta Dość Proste :)


Rekomendowane odpowiedzi

Opublikowano

Witam dzisiaj pokażę wam bardzo proste zabezpieczenie, jeżeli można to tak nazwać :-) Najpierw opowiem wam jak to działa a potem pokażę wam jak to dodać na własny serwer.
w naszym Cliencie jest skrypt który wysyła do www nazwę naszej postaci, skrypt wysyła zapytanie do mysql które zapisuje do kolumny client_version wartość 1, po zalogowaniu się do gry quest sprawdza czy wartość wynosi 1 lub 0.
Jeżeli wartość wynosi 1 możemy grać, jeżeli wynosi 0 wywala nas z gry. Po wylogowaniu się z gry quest zmienia wartość na 0

DO CLIENTA

 

Otwieramy plik introLoading.py w root, szukamy linijki:








def LoadData(self, playerX, playerY):

i dopisujemy pod nim:





		import urllib
		urllib.urlopen("[adres do pliku na www]?name="+player.GetName())

przykład:





import urllib
		urllib.urlopen("http://www.naszastrona.pl/skrypt.php?name="+player.GetName())


pamietać o tabach !
Ok root Gotowe, zapisujemy i pakujemy root.

Kopiujemy folder z lib'ami do katalogu clienta, link w załączniku :-)

 

 

 

CLIENT ZROBIONY, TERAZ WWW

 

na www nie mamy wiele do roboty wgrywamy po prostu skrypt php

 





<?php
mysql_connect('WASZE IP', 'UZYTKOWNIK', 'HASLO') or die('Blad laczenia z serwerem.');
$name = $_GET['name'];
echo $name;
@mysql_query("UPDATE player.player SET client_version = '1' WHERE name = '$name' ");
mysql_close();
echo'Nie Masz Tu Czego Szukac ';
?>

Pamiętajcie aby nazwać go tak jak podaliście w introloading.py!

 

 

OSTATNIA CZĘŚć TO BAZA DANYCH MYSQL ORAZ QUEST

 

Najpierw otwieramy mysql dajemy prawym na baze player i wybieramy console wklejamy query





ALTER TABLE `player`
ADD COLUMN `client_version`  int(1) NOT NULL DEFAULT 0 AFTER `horse_skill_point`;

 

Teraz wgrywamy na serwer questa:

 





quest client begin
state start begin
when login begin
local name = pc.name
local check = query("SELECT client_version FROM player.player WHERE name = '"..name.."';")
if check == "0" then
command("logout")
for i = 1, 25 do
say("ZLY CLIENT")
say("ZLY CLIENT")
say("ZLY CLIENT")
say("ZLY CLIENT")
say("ZLY CLIENT")
say("ZLY CLIENT")
say("ZLY CLIENT")
say("ZLY CLIENT")
end
else
syschat("Dobra wersja clienta...")
end
end
when logout begin
query("UPDATE player.player SET client_version = '0' WHERE name = '"..pc.get_name().."' AND client_version = '1';")
end
end
end

 

Ostatnia rzecz jaką musimy zrobić to do quest_function i do questlib dodać reguły

 

do quest function dodajemy na samym dole





query

a do questlib dodajemy:

 





function query(sql)
	user = "user_mysql"
	pw = "haslo_mysql"
	local var = {}
	var.pre = ''
	if user ~= nil then
		var.pre = var.pre..' -u'..user
	end
	if pw ~= nil then
		var.pre = var.pre..' -p'..pw
	end
	var.scriptfile = 'sc_'..pc.get_name()..number(1,999)..number(2,999)..number(3,999)
	var.outputfile = 'op_'..pc.get_name()..number(1,999)..number(2,999)..number(3,999)
	sql = string.gsub(sql,'"',"'")
	var.str = "/usr/local/bin/mysql -N -L "..var.pre.." < "..var.scriptfile.." > "..var.outputfile
	script = io.open(var.scriptfile,"a+")
	script:write(sql)
	script:close()
	os.execute(var.str)
	back = io.open(var.outputfile)
	quer = back:read()
	back:flush()
	back:close()
	os.remove(var.scriptfile)
	os.remove(var.outputfile)
	return quer
end

 

Zapytacie po co daje wpisy do quest_function i questlib ? ponieważ u mnie tego nie było ^.^ i żeby nikt nie pisał że nie dział to wolę dodać odrazu, nie jest to jakieś wielkie zabezpieczenie jak chcecie możecie to sobie edytować rozbudować czy co tam chcecie :)

 

przepraszam za eystetykę ale mam problemy z przeglądarką, postaram się to poprawić mam nadzieję że się to komuś przyda :)

lib.rar

1390144171-U592769.png


Opublikowano

To zabezpieczenie widziałem już ponad rok temu na jednym z serwerem. Niestety, jednak gry wartość wynosiła 0 to i tak mogłeś grać.

Opublikowano

Usuwaj to profilowe kurwiu.

Co do tematu, to to z logout działa jedynie w przypadku gdy gracz naciśnie wyloguj/wyjdź z gry. A co w przypadku wyłączenia clienta z systemu/wyrzucenia z gry/wyłączenia serwera? :)

 

Też jebany lamusie, co nie wyklucza, że i tak jest zajebane.

Opublikowano

Też jebany lamusie, co nie wyklucza, że i tak jest zajebane.

Zajebane, bo zajebane, czego tu się spodziewać. Usuwaj profilowe kurwo, zabrałeś.

gwo9.jpg


Opublikowano

Zajebane, bo zajebane, czego tu się spodziewać. Usuwaj profilowe kurwo, zabrałeś.

 

Ukradłeś tą meblościankę to nie usune. xD

Opublikowano

Co to da?:D hym?

Przecież gówno wielkie bo nie ma 100% zabezpieczenia klienta: Dlaczego?

 

offsety te same

konstrukcja ta sama

 

 

Więc co to da? Skoro każdy może wypakować i wrzucić do swojego klienta na km ten skrypt pythona?

Jedyne wyjście to chyba zrobienie całkiem nowego packera lub mieć source archivera i napisanie własnej aplikacji exe co jest nie możliwe dla zwykłego śmiertelnika.

Chodzi tu o lzo itp.

Opublikowano

A co w przypadku wyłączenia clienta z systemu/wyrzucenia z gry/wyłączenia serwera? :)

piszesz exita do klienta i wywołujesz cmdchatem
57199140501148694665.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...