Skocz do zawartości



Funkcja emit w kompilatorze pawn, zastępująca AntiDeAMX.

Serwer

3 odpowiedzi w tym temacie

#1 Shiny

    Shiny

  • Użytkownicy
  • 19 postów

Napisano 09 maj 2012 - 19:13

Witam po raz pierwszy na tym forum, ale, jako że nie lubię przedłużać - zacznę.

Tworzymy funkcję o nazwie zawierającej w sobie nazwę AMX. Nazwa ta nie jest wymagana, bo i bez niej funkcja ta będzie działać, lecz jednak lepiej mieć już ją. Przy okazji, nawet zmodyfikowanym DeAMX'em nie da się wyciągnąć ani jednej rzeczy w tym wypadku i zostanie tylko kod:
#include <a_samp>
#include <core>
#include <float>

No to zaczynajmy, napierw stwórzmy funkcję o nazwie EmitAMX:
stock EmitAMX()
{
	new d; // zmienna d
	#emit load.pri d //ładowanie zmiennej "d" do pamięci (bazowane na Asemblerze)
	#emit stor.pri d //zapisywanie zmiennej "d" do pamięci (bazowane na Asemblerze)
}

Teraz, aby móc już zabezpieczyć swój skrypt (GameMod lub FilterScript) wklejamy tego typu kod do public OnGameModeInit() (lub public OnFilterScriptInit()):

public OnGameModeInit() // public OnFilterScriptInit()
{
	EmitAMX();
	//reszta kodu
	return 1;
}

ewentualnie funkcję tą możemy zastosować również do main'a, jeżeli naszym skryptem jest GameMod:
main()
{
	EmitAMX();
	print("------\nSkrypt został zabezpieczony przez DeAMX\n-----");
}

Sugerowane jest dodanie tej funkcji do main jak i do public OnGameModeInit w wypadku GameMode'a, czyli na przykład:

#include <a_samp>

stock EmitAMX()
{
	new d; // zmienna d
	#emit load.pri d //ładowanie zmiennej "d" do pamięci (bazowane na Asemblerze)
	#emit stor.pri d //zapisywanie zmiennej "d" do pamięci (bazowane na Asemblerze)
}

main()
{
	EmitAMX();
	print("------\nSkrypt został zabezpieczony przez DeAMX\n-----");
}

public OnGameModeInit()
{
	EmitAMX();
	//reszta kodu
	return 1;
}

Wtedy zabezpieczenie będzie działać w 100%.

Aby zabezpieczyć skrypt po prostu tworzymy kod taki, jak poniższy:
#include <a_samp>
#if defined FILTERSCRIPT // nie jest to wymagane w skryptach, po prostu ktoś sobie to ubzdurał i teraz każdy nowy "skrypter" w PAWN to stosuje...
// Reszta funkcji
#endif

stock EmitAMX()
{
	new d; // zmienna d
	#emit load.pri d //ładowanie zmiennej "d" do pamięci (bazowane na Asemblerze)
	#emit stor.pri d //zapisywanie zmiennej "d" do pamięci (bazowane na Asemblerze)
}

public OnFilterScriptInit()
{
	EmitAMX();
	//reszta kodu
	return 1;
}
Wtedy będzie on zabezpieczony w 100% i będzie działać.

Można również połączyć słynny Anty DeAMX z emitem, co daje kod, którego praktycznie nie da się złamać:
AntyDeAMX()
{
	new amx[][] ={"Unarmed (Fist)","Brass K"};
	new d; // zmienna d
	#emit load.pri d //ładowanie zmiennej "d" do pamięci (bazowane na Asemblerze)
	#emit stor.pri d //zapisywanie zmiennej "d" do pamięci (bazowane na Asemblerze)
	#pragma unused amx
}
UWAGA! Zabezpieczenie powinno być umieszczone jako pierwsze!

To chyba wszystko co miałem do przekazania, życzę miłego zabezpieczania skryptów tym sposobem.

Pozdro.

Thug 4 Life


#2 Wielebny

    Big Clucker

  • Użytkownicy
  • 89 postów

Napisano 14 maj 2012 - 21:53

Te zabezpieczenie jest równie beznadziejne i proste do usunięcia jak "oryginalny" DeAMX.
Oba zabezpieczenia opierają się na tym, że publicznie dostępny DeAMX został stworzony dla starszej niż obecnie stosowana wersji Pawn. Wystarczy krótka chwila z edytorem plików aby usunąć te pseudozabezpieczenia, bądź też dłuższa chwila na znalezienie/utworzenia sprawnego aktualnego dekompilatora AMX.

Rozumiem, że niektóre osoby uważają, że warto stosować nawet i takie zabezpieczenia. Co to jednak zmienia dla laika, gdy dostanie niezabezpieczonego AMX w swoje ręce? DeAMX wypluwa taki śmietnik, że do _niczego_ mu się to nigdy nie przyda.

Użytkownik Wielebny edytował ten post 14 maj 2012 - 21:56

PYLife RPG MTA --- BestPlay DM MTA --- FullServer DM SA:MP


#3 Key

    Gangsta

  • Użytkownicy
  • 511 postów

Napisano 15 maj 2012 - 16:01

Przecież i tak kod po DeAMX do niczego się nie nadaje i dużo z niego nie wyciągniemy.

#4 ToFFiK

    Little Clucker

  • Użytkownicy
  • 44 postów

Napisano 21 maj 2012 - 18:56

Jak się nie potrafi dobrze użyć (i odczytać) to się nic nie wyciągnie





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

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