Skocz do zawartości

Ładowanie skryptu


Matthew

Rekomendowane odpowiedzi

btw. bedziesz musial sie zabezpieczyc wtedy tez przed mozliwoscia wyciagniecia reszty skryptow, bo wtedy wystarczy dac jedna linijke do pobierania zawartosci skryptu, przeleciec je wszystkie i zapisywac do pliku, a chyba tego nie chcesz.

Zrezygnuj z execute_file i najpierw pobierasz zawartosc funkcji z pliku do stringa, za pomoca string_replace_all() zamieniasz wszystkie substringi "script_get_text" na jakas nazwe pustej funkcji "void" (po prostu stworz taki script o nazwie "void" i niech bedzie pusty, to gm nie wypluje zadnego bledu). wynik zapisujesz do innego stringa, a tam zapomoca string_replace_all() wszystkie "argument0" itp. zamieniasz na odpowiednie im wartosci argumentow podawanych do funkcji. ten wynik w ostatecznosci zapisujesz do jeszcze innego stringa i aby wywolac te funkcje wystarczy execute_string() i voila! - masz gotowa funkcje zewnetrzna odporna na gml-injection (hehe, tak to mozna nazwac? xD). jak chcesz moge zrobic Ci przyklad tego :)

Odnośnik do komentarza
Udostępnij na innych stronach

@Matt: wlasnie Ci przyklad robie, za chwileczke bedzie gotowy :)

 

EDIT:

 

Prosze, oto specjalnie dla Ciebie napisany silniczek do wykonywania funkcji z pliku, chroniacy przed "gml-injection" ze sie tak wyraze :P

SafeScript Loader

Odnośnik do komentarza
Udostępnij na innych stronach

btw. bedziesz musial sie zabezpieczyc wtedy tez przed mozliwoscia wyciagniecia reszty skryptow, bo wtedy wystarczy dac jedna linijke do pobierania zawartosci skryptu, przeleciec je wszystkie i zapisywac do pliku, a chyba tego nie chcesz.

Zrezygnuj z execute_file i najpierw pobierasz zawartosc funkcji z pliku do stringa, za pomoca string_replace_all() zamieniasz wszystkie substringi "script_get_text" na jakas nazwe pustej funkcji "void" (po prostu stworz taki script o nazwie "void" i niech bedzie pusty, to gm nie wypluje zadnego bledu). wynik zapisujesz do innego stringa, a tam zapomoca string_replace_all() wszystkie "argument0" itp. zamieniasz na odpowiednie im wartosci argumentow podawanych do funkcji. ten wynik w ostatecznosci zapisujesz do jeszcze innego stringa i aby wywolac te funkcje wystarczy execute_string() i voila! - masz gotowa funkcje zewnetrzna odporna na gml-injection (hehe, tak to mozna nazwac? xD). jak chcesz moge zrobic Ci przyklad tego :)

Prosze, oto specjalnie dla Ciebie napisany silniczek do wykonywania funkcji z pliku, chroniacy przed "gml-injection" ze sie tak wyraze :P

SafeScript Loader

 

Eee, wcale nie chroni przed "GML injection" - wystarczy wkleić do pliku gml np. taki kod:

GML
var script, executeMe;

executeMe = "script_get_" + "text( safescript_void );";

script = execute_string( executeMe );

show_message( script );

 

Musiałbyś dodać więcej checków do tego :P

Odnośnik do komentarza
Udostępnij na innych stronach

eh, zes wyskoczyl :P na malo-bystrych gm-hackerow to wystarczylo, a Ty zepsules zabawe ;P racja, potrzeba wiecej warunkow, ale zeby to dzialalo zawsze trzeba najlepiej zrobic taki jakby parser a to by zdecydowanie wydluzylo czas ladowania skryptu :/

 

EDIT:

 

Heh, jednak nie potrzeba pisać czaso-żernego parsera :)

Poprawiona wersja, teraz chroni przed resztą kombinacji :)

 

Link: SafeScript Loader

 

Teraz sprobuj to obejsc Snake :P

Odnośnik do komentarza
Udostępnij na innych stronach

eh, czekaj, i na to sie znajdzie sposob ;P

Odnośnik do komentarza
Udostępnij na innych stronach

Whoops... Zapomniałem, że nie mam wersji pro. A w przykładzie używane są mapy, więc nie zadziała mi :)

 

E: Część kodu jest taka sama jak w moim skrypcie (while !(..._eof)). Zapisałem to co wczytałem do zmiennej i wykonywałem za pomocą execute_string(), ale jest niewydajne i mam czarny ekranik.

 

E2: Spróbowałem za pomocą object_event_add i event_perform_object. Czarny ekranik ;/

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...