Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

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 :)

Opublikowano
jak chcesz moge zrobic Ci przyklad tego

Eee... poproszę :)

 

@gnysek: Pamięciożerne. Chcę skrypt załadować do gry i żeby później nie trzeba było go drugi raz wczytywać.

Opublikowano

@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

Opublikowano
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

Opublikowano

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

Opublikowano

Nie chroni. Dodaj do pliku gml:

GML
var executeMe;

executeMe = "show_message( script_" + "get_text( safescript_void ) );";

object_event_add( 0, ev_user0, 0, executeMe );

event_perform_object( 0, ev_user0, 0 );

;p

Opublikowano

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

Opublikowano

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 ;/

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ę...