Lua инъекция - Страница 2 - Форум
W4Tweaks
Меню сайта
Последние файлы
Последние темы


Вход



Мини-чат
 
500

Статистика
Онлайн:

Сегодня заходили: 4erveR, Renny


Друзья сайта

Если вы хотите увидеть в этом спиcке свой сайт загляните сюда

Наш баннер:



· Регистрация · Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 2 из 5«12345»
Форум » Worms 4 Mayhem » 5.3. Идеи скриптов и их обсуждение » Lua инъекция (Внедриться в lua-движок червей)
Lua инъекция
Герыч
Дата: ВТ, 07.02.2012, 15:04:18 | Сообщение # 16
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Спасибо, Unaited!

Поздравляю всех) Скоро с огромной долей вероятности у нас будут свои функции, которые можно будет выполнять прямо из игры... К примеру, запись игры в файл или ещё что-нибудь, что придумаете.

У нас где-нибудь есть экзешник worms?


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
4erveR
Дата: ВТ, 07.02.2012, 15:40:43 | Сообщение # 17
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1398
Репутация: 75
Статус: Offline
Quote (Герыч)
У нас где-нибудь есть экзешник worms?

В стандартных файлах нет, если надо - http://zalil.ru/32659687


твеак умер, а я еще нет

Сообщение отредактировал 4erveR - ВТ, 07.02.2012, 15:43:14
 
Герыч
Дата: ВТ, 07.02.2012, 19:01:41 | Сообщение # 18
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
В качестве подопытного кролика у меня выступает стандартный консольный интерпретатор lua...

Сейчас я смог запустить подопытного, перехватить все вызовы функции luaL_openlib(регистрация библиотек в lua) и зарегистрировать в этот момент свою библиотеку test с одной функцией test, которая попросту печатает важную строчку (см. рисунок)
Прикрепления: 9444704.png(85Kb)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Дата: ВТ, 07.02.2012, 19:15:40 | Сообщение # 19
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Короче я буду понемного писать lua-инъектор на C#, оформлю это как библиотеку, суть которой сведётся к тому, что она будет запускать произвольный экзешник с lua внутри, а затем предоставлять все доступные функции из lua в удобной форме + события, соответствующие тому, что была перехвачена какая-либо функция из lua.

В итоге мы получим возможность регистрировать в червяках в lua любую логику, хоть даже запрос на веб-сервер или работу с файлами или что ещё можно будет придумать.
Кроме того скорее всего я прилинкую к червякам полную стандартную lua библиотеку, и возможно сделаю адаптацию под новый lua, если это возможно и/или будет полезно.

Хотелось бы слышать ваши пожелания и вопросы типа "возможно ли будет сделать вот-это?", чтобы я немного смог развить свои идеи.

Проект сделаю open-source, выложу на github.com


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
firsacho
Дата: ВТ, 07.02.2012, 20:07:28 | Сообщение # 20
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3621
Репутация: 71
Статус: Offline
Герыч, О_о. я хренею) ты правда уже пытался что то подобное как то с dll библиотеками замутить... но сейчас похоже виден явный успех)

Да, запрос веб-серверу было б мега-круто) можно вести статистику игровую, прокачивать навыки через сайт, покупать оружие... О_о... да можно червей в ммо превратить) сохранять оружие вконце раунда в MySQL)

Один минус - у нас на сайте с lua работать полноценно умеют 3-4 человека...





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Vorobey
Дата: ВТ, 07.02.2012, 20:40:11 | Сообщение # 21
Vorobey
Жестокий
Группа: Модераторы
Сообщений: 1747
Репутация: 101
Статус: Offline
Quote (firsacho)
Один минус - у нас на сайте с lua работать полноценно умеют 3-4 человека...

Да, я их не осилил)
 
4erveR
Дата: ВТ, 07.02.2012, 20:52:01 | Сообщение # 22
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1398
Репутация: 75
Статус: Offline
Я писал некоторые скрипты, например часть "режима буйвола" в New Edition... не столь сложно, как кажется

твеак умер, а я еще нет

Сообщение отредактировал 4erveR - ВТ, 07.02.2012, 20:52:11
 
Jhonny_old
Дата: ВТ, 07.02.2012, 21:07:34 | Сообщение # 23
Jhonny_old
Завсегдатай
Группа: Заблокированные
Сообщений: 355
Репутация: 57
Статус: Offline
Я даже заголовок темы не понял. Куда мне скрипты %) хотя я их не пробовал, может мне рискнуть сломать мозг? Хотя может скриптинг не такой сложный всё же я попробую ;)
 
Unaited
Дата: ВТ, 07.02.2012, 21:37:12 | Сообщение # 24
Unaited
Be Evil
Группа: Админы
Сообщений: 1328
Репутация: 91
Статус: Offline
Quote (Герыч)
Хотелось бы слышать ваши пожелания и вопросы типа "возможно ли будет сделать вот-это?", чтобы я немного смог развить свои идеи.
а можно будет добавить свой контент в игру без замены?


 
Woitek
Дата: ВТ, 07.02.2012, 23:14:45 | Сообщение # 25
Woitek
Его узнают в чате
Группа: Проверенные
Сообщений: 521
Репутация: 56
Статус: Offline
Hmmmm be possible edit Vector? At this moment is not possible change vector by lua. Much mods be possible create :D. Be great because my older idea be possible for create now.
 
firsacho
Дата: СР, 08.02.2012, 06:54:44 | Сообщение # 26
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3621
Репутация: 71
Статус: Offline
Quote (Unaited)
а можно будет добавить свой контент в игру без замены?

думаю, что нет. Контент загружается до луа.

Кстати в игре есть дофига "пустых" моделей. Так что вполне можно ими пользоваться, не заменяя стандартное.





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Vorobey
Дата: СР, 08.02.2012, 08:06:04 | Сообщение # 27
Vorobey
Жестокий
Группа: Модераторы
Сообщений: 1747
Репутация: 101
Статус: Offline
Jhonny, читай уроки по lua
 
Герыч
Дата: СР, 08.02.2012, 08:37:53 | Сообщение # 28
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Quote (Woitek)
Hmmmm be possible edit Vector?

It depends on several things: how vectors are passed to lua, is it a copy of vector from engine or a real pointer or reference to it. One thing I can say surely - I can open all lua(but not engine) facilities, which are not available now.

Quote (Unaited)
а можно будет добавить свой контент в игру без замены?

Не факт. Ещё раз повторю - луа - это мостик между нами и движком игры. При этом сами разработчики червяков определили, насколько он широк. В частности они не позволили загружать свои луа(*.lua или *.dll)-библиотеки - эту возможность я открою. А вот недра движка заставить работать по-другому - сложнее, но в принципе и можно.

Quote (firsacho)
сохранять оружие вконце раунда в MySQL)

Интересная задумка... на паузу игру ставить)
Фирсачо, развивай мысль)

Quote (firsacho)
Один минус - у нас на сайте с lua работать полноценно умеют 3-4 человека...

Изучайте, будет полезно.
Вообще советую в связи с грядущим появлением моего проекта начать изучение C# или C++, ибо появится возможность добавлять в игру любой код, а максимальными возможностями будет обладать запускатель игры (на C#).


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Наклс2
Дата: СР, 08.02.2012, 16:06:55 | Сообщение # 29
Наклс2
Ozelot assasin
Группа: Проверенные
Сообщений: 126
Репутация: 0
Статус: Offline
Quote (Unaited)
а можно будет добавить свой контент в игру без замены?

Так-то это не возможно!Нужно программировать игру на новый скрипт,оружие и т.п.

Добавлено (08.02.2012, 16:06)
---------------------------------------------

Quote (Герыч)
Изучайте, будет полезно.
Вообще советую в связи с грядущим появлением моего проекта начать изучение C# или C++, ибо появится возможность добавлять в игру любой код, а максимальными возможностями будет обладать запускатель игры (на C#).

С твиками так и не разобрался...Но с этим попробую!


Ушёл. Черви уже в моде, сайт катится ко дну. Моддинг не для меня, поэтому я здесь никому не нужен...
 
Герыч
Дата: СР, 08.02.2012, 16:40:34 | Сообщение # 30
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Code

             luaL_openlib_hook = Utils.SetupHook<luaL_openlib_Delegate>("luaL_openlib", hookedModule,
                 (original) => (L, s, l, nup) =>
                 {
                     Interface.Echo("luaL_openlib called");
                     original(L, s, l, nup);
                 });


Вот как сейчас выглядит хук функции luaL_openlib... красота для сишарповца)

Code

             luaL_openlib_hook = Utils.SetupHook<luaL_openlib_Delegate>("luaL_openlib", hookedModule,
                 (original) => (L, s, l, nup) =>
                 {
                     Interface.Echo("luaL_openlib called");
                     original(L, s, l, nup);
                 });

Дальше мне надо придумать, как сделать красивым вот такой код:
Code


         [StructLayout(LayoutKind.Sequential)]
         struct luaL_Reg
         {
             public string name;
             [MarshalAs(UnmanagedType.FunctionPtr)]
             public lua_CFunction func;
         };

         static int test(IntPtr L)
         {
             Console.WriteLine("Hacked!");

             return 0;
         }

         private static readonly luaL_Reg[] mylib = new[]
                    {
                    new luaL_Reg {name = "test", func = test}
                    };

...

                 IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(luaL_Reg)) * (mylib.Length + 1));

                 try
                 {
                     for (int i = 0; i < mylib.Length; i++)
                     {
                         Marshal.StructureToPtr(mylib[i], new IntPtr((long)ptr + Marshal.SizeOf(typeof(luaL_Reg)) * i), false);
                     }

                     Marshal.StructureToPtr(new luaL_Reg(), new IntPtr((long)ptr + Marshal.SizeOf(typeof(luaL_Reg)) * mylib.Length), false);

                     luaL_openlib(L, "test", ptr, 0);
                 }
                 finally
                 {
                     // Free the unmanaged memory.
                     Marshal.FreeHGlobal(ptr);
                 }


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Форум » Worms 4 Mayhem » 5.3. Идеи скриптов и их обсуждение » Lua инъекция (Внедриться в lua-движок червей)
Страница 2 из 5«12345»
Поиск:

Copyright W4Tweaks™ 2008-2016 Хостинг от uCoz