Lua инъекция
|
|
Сообщений: 1740
|
Опубликовано: 07.02.2012, 20:40:11
Quote (firsacho) Один минус - у нас на сайте с lua работать полноценно умеют 3-4 человека... Да, я их не осилил)
|
|
|
|
Сообщений: 1511
|
Опубликовано: 07.02.2012, 20:52:01
Я писал некоторые скрипты, например часть "режима буйвола" в New Edition... не столь сложно, как кажется
Сообщение отредактировал 4erveR - ВТ, 07.02.2012, 20:52:11
|
|
|
|
Сообщений: 355
|
Опубликовано: 07.02.2012, 21:07:34
Я даже заголовок темы не понял. Куда мне скрипты хотя я их не пробовал, может мне рискнуть сломать мозг? Хотя может скриптинг не такой сложный всё же я попробую
|
|
|
|
Сообщений: 1463
|
Опубликовано: 07.02.2012, 21:37:12
Quote (Герыч) Хотелось бы слышать ваши пожелания и вопросы типа "возможно ли будет сделать вот-это?", чтобы я немного смог развить свои идеи. а можно будет добавить свой контент в игру без замены?
|
|
|
|
Сообщений: 523
|
Опубликовано: 07.02.2012, 23:14:45
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.
|
|
|
|
Сообщений: 3813
|
Опубликовано: 08.02.2012, 06:54:44
Quote (Unaited) а можно будет добавить свой контент в игру без замены? думаю, что нет. Контент загружается до луа. Кстати в игре есть дофига "пустых" моделей. Так что вполне можно ими пользоваться, не заменяя стандартное.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 1740
|
Опубликовано: 08.02.2012, 08:06:04
Jhonny, читай уроки по lua
|
|
|
|
Сообщений: 1240
|
Опубликовано: 08.02.2012, 08:37:53
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#).
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 08.02.2012, 16:40:34
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); }
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 08.02.2012, 16:52:28
Всё, начальная версия, которая способна хукать lua.exe лежит тут https://github.com/gerich-home/lua-inject Работает для этой версии луа http://code.google.com/p/luaforwindows/downloads/list
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 3813
|
Опубликовано: 08.02.2012, 17:54:22
Если синхронизировать через интернет C# составляющую между игроками играющими одновременно в одной комнате (сделав идентификацию оппонентов например по никам червей)- возможно ли синхронизировать между игроками их пользовательские куски кода (например характеристики оружия индивидуальные для каждого игрока)? То есть определяем, допустим, характеристики и установленные эффекты для базуки в специальной части скрипта пользователя 1 и отправляем кусок скрипта их задающий всем юзерам, чтобы не было вылета.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 1240
|
Опубликовано: 08.02.2012, 18:12:36
По поводу синхронизации я бы предложил бы такой вариант: ланчер червяков запускает игру, при этом он устанавливает хук, он же посредством хука регистрирует в луа какую-либо библиотеку для работы. При этом, чтобы не пытаться определить что-то по никам, можно определять с помощью функций который предоставил ланчер, все ли игроки имеют у себя на компе запущенный ланчер. Если да, то у главного игрока или с сервера загружается актуальный скрипт и выполняется.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
|
Сообщений: 523
|
Опубликовано: 09.02.2012, 00:24:39
Vector and repair weapon_select funtion to like w3d. Add laser to game (shotgun) Most important things in Multi,Mission
|
|
|
|
Сообщений: 3813
|
Опубликовано: 09.02.2012, 06:49:26
Grimnir, его можно сделать и без внедрения в луа) только worms 4 голосовой чат противопоказан... там столько малолеток играет от 7 до 13 лет, что давать им что то орать в микрофон - это взрыв мозга за 2 минуты (ненавижу детей ).
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 355
|
Опубликовано: 09.02.2012, 16:30:09
да и ктому же слушать, как дети от 7 лет до 13 лет ругаются матом, так это вообще помрёшь за 2 секунды
|
|
|
|
Сообщений: 1240
|
Опубликовано: 10.02.2012, 10:09:52
Борюсь с .net 4.0... проблема в том, что я сейчас могу писать только .net3.5 приложения, что не позволяет мне реализовать одну клёвую задумку..
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 10.02.2012, 12:14:45
Та-дам!)
я прикрутил MEF к хукеру. Теперь можно писать хуки(в форме DLL -библиотек) при уже имеющемся хукере, просто подкладывать их в нужную папку и при запуске они будут, работая в адресном пространстве worms.exe, загружать дотнетовские плагины и устанавливать хуки на произвольные экспортируемые функции червяков. При этом можно будет изначально написать пару таких плагинов, которые устанавливают хук на пару функций, на пример на loadLibrary и на luaL_loadbuffer например, а затем по мере необходимости или при возникновении новых идей добавлять новые хуки.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 523
|
Опубликовано: 10.02.2012, 13:29:55
Gz!!! Waiting for any hack :D.
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2012, 15:53:37
Та-дам! Делаю всё более и более конфигурируемые хуки. Теперь, какие хуки ставить и с помощью чего, определяется через Config.xml Можете потрогать ручками(конкретно вот этот файл).
Очень классно, если кто-нибудь попробует запустить хукер с таким конфигом над червяками (в формочке надо поменять путь на путь к червякам, и заменить конфиг): Code <?xml version="1.0" encoding="utf-8" ?> <LuaHookerConfig luamodule="WORMS 4 MAYHEM.EXE"> <Hookers> <Hooker name="TestHooker">TestHooker.dll</Hooker> </Hookers> <Hooks> <Hook name="luaL_openlib">TestHooker</Hook> </Hooks> </LuaHookerConfig>
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|