W4Tweaks
·  Регистрация Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 1 из 41234»
Форум » Worms 4 Mayhem » 5.3. Идеи скриптов и их обсуждение » Lua инъекция (Внедриться в lua-движок червей)
Lua инъекция
Герыч
Дата: ВС, 13.02.2011, 22:27:59 | Сообщение # 1
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Инвентарь: 5
Статус: Offline
Возникла тут идейка, она для программистов.

Идея состоит в том, чтобы зарегистрировать свою C функцию в lua движке worms.
Во-первых, в червях луа версии 5.0.1. Исходники тута.
Во-вторых, достаточно легко заставить произвольный exe модуль выполнять свой код, см. DLL инъекция. Вот примеры [1], [2](в конце страницы)
В-третьих, народ уже это придумывал. Они заставляют WoW зарегистрировать свою C функцию в lua.

Смотрите, в луа скриптах червяков хрен что сделаешь. Нельзя ни открыть файл, ни выполнить его. Внедрив свою dll можно даже сделать запись процесса игры и сбор статистики, ну или что-то более крутое =)

Жалко мне не хватает понимая ассемблера и низкоуровневого программирования, хотя я вот уже понял, как найти адрес lua_State и адреса нужных мне функций, вроде не сложно.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
firsacho
Дата: ВС, 13.02.2011, 22:30:46 | Сообщение # 2
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3707
Репутация: 76
Инвентарь: 15
Статус: Offline
ты ведь уже пытался че то делать с дллками через луа (со мной тестил).. и нефига не вышло.




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

www.w-mod.info - мод Worms Renewation для Worms4
 
Герыч
Дата: ВС, 13.02.2011, 22:36:27 | Сообщение # 3
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Инвентарь: 5
Статус: Offline
Я пытался загрузить dll, как lua-модуль. lua позволяет делать, если в интерпретаторе включена эта опция, но они отключили эту возможность.

Я же предлагаю грязный хак =) Заставить lua подумать, что у него есть ещё несколько функций.
DLL у меня получилось приаттачить, это легко. Осталось празумительный код написать, дабы заставить lua зарегистрировать мою функцию.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Rorschach
Дата: ВС, 13.02.2011, 22:37:10 | Сообщение # 4
Легендарный червь
Группа: Проверенные
Сообщений: 2848
Репутация: 60
Инвентарь: 6
Статус: Offline
о_О, если кто-нибудь сможет это сделать, границы модинга испарятся biggrin



-------------------------------------------------------------
And when the sun is shining, there is justice for all...
And all the people will remember that funny "war".
War, which was so dark in the beginning and so shiny in the end.
But now it's over. Over for all.
-------------------------------------------------------------
Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.
 
Lex-Serest
Дата: ВС, 13.02.2011, 22:56:15 | Сообщение # 5
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Инвентарь: 14
Статус: Offline
нужно найти адрес загрузки lua, для этого нужно дезасемблировать игру, либо можно заменить файл с меткой, который компелирует луа скрипты или луа скрипт который загружается первым, этот вариант в несколько раз проще

:3
 
Герыч
Дата: ПН, 06.02.2012, 17:28:17 | Сообщение # 6
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Инвентарь: 5
Статус: Offline
Важно. Скажите, lua в червях в отдельной dll лежит или нет?

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
SW_Krash
Дата: ПН, 06.02.2012, 20:09:52 | Сообщение # 7
SW_Krash
BugagaXD
Группа: Проверенные
Сообщений: 818
Репутация: 28
Инвентарь: 7
Статус: Offline
А я выкладывал где-то свою концепцию извлечения игровых событий во внешние программы??? ну чтобы допустим можно было создать свой альтернативный сейв, в котором будет собираться расширенная информация о играх...

или я только Фирсачо о ней рассказывал???


Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)



Сообщение отредактировал SW_Krash - ПН, 06.02.2012, 20:10:37
 
firsacho
Дата: ПН, 06.02.2012, 20:15:23 | Сообщение # 8
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3707
Репутация: 76
Инвентарь: 15
Статус: Offline
видимо только мне)
кста... чувак, ты что тут делаешь??)





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

www.w-mod.info - мод Worms Renewation для Worms4
 
K@ST
Дата: ПН, 06.02.2012, 20:48:16 | Сообщение # 9
K@ST
Mr. K@ST
Группа: Проверенные
Сообщений: 907
Репутация: 51
Инвентарь: 13
Статус: Offline
o_ O
герыч, краш- круто, я их давно не видел)
 
SW_Krash
Дата: ПН, 06.02.2012, 23:21:32 | Сообщение # 10
SW_Krash
BugagaXD
Группа: Проверенные
Сообщений: 818
Репутация: 28
Инвентарь: 7
Статус: Offline
ололо... я тут возделываю офтоп... а так сижу на каникулах... паяю схемы по-тихонько ну и на сайт одним глазом гляжу... и вспоминаю наши грандиозные идеи... а ещё чего меня с админки выкинули то... я иногда на сайт временно нужные файлы заливал... оч удобно было =)))) верните =)

Добавлено (06.02.2012, 23:21)
---------------------------------------------
Lua в червях лежит в виде экзешника Luac.exe и ещё есть файл вероятно тоже как-то относящийся к Lua makelub.bat


Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)

 
firsacho
Дата: ВТ, 07.02.2012, 06:56:06 | Сообщение # 11
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3707
Репутация: 76
Инвентарь: 15
Статус: Offline
SW_Krash, че делает luac я не помню. А makelub переделывает луа файлы в lub формат, который кстати используется в WUM.




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

www.w-mod.info - мод Worms Renewation для Worms4
 
Герыч
Дата: ВТ, 07.02.2012, 12:55:31 | Сообщение # 12
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Инвентарь: 5
Статус: Offline
ок, спасибо за инфу.

luac(lua compiler) - компилятор луа файлов(*.lua) в бинарную форму(*.lub). В четвёртых червях на наше благо их не использовали, а вот в Worms3D - да. Поэтому Алексбонду пришлось и их декомпилировать)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Vorobey
Дата: ВТ, 07.02.2012, 13:30:31 | Сообщение # 13
Vorobey
Жестокий
Группа: Модераторы
Сообщений: 1747
Репутация: 101
Инвентарь: 11
Статус: Offline
Круто, Крэш и Герыч) Тут нужен этот смайл: wow

Сообщение отредактировал Vorobey - ВТ, 07.02.2012, 13:30:55
 
Герыч
Дата: ВТ, 07.02.2012, 14:05:15 | Сообщение # 14
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Инвентарь: 5
Статус: Offline
Так, парни, мне нужна ваша помощь.
Запустите worms.exe

Затем запустите программу в аттаче и выберите в ней "Load functions from all DLLs attached to the selected process "

В появившемся окне отсортируйте список по колонке "Filename".
Нажмите Ctrl + A (выделить весь список) и затем сохранить.
полученный файл, выложите сюда.

Будем надеяться, что лазейка есть)
Прикрепления: dllexp.zip(46Kb)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Unaited
Дата: ВТ, 07.02.2012, 14:52:38 | Сообщение # 15
Unaited
UN4173D
Группа: Админы
Сообщений: 1365
Репутация: 91
Инвентарь: 13
Статус: Offline
готово
Прикрепления: 11111111.rar(364Kb)


 
Герыч
Дата: ВТ, 07.02.2012, 15:04:18 | Сообщение # 16
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Инвентарь: 5
Статус: Offline
Спасибо, Unaited!

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

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


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

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


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

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

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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Дата: ВТ, 07.02.2012, 19:15:40 | Сообщение # 19
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Инвентарь: 5
Статус: 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
Группа: Админы
Сообщений: 3707
Репутация: 76
Инвентарь: 15
Статус: Offline
Герыч, О_о. я хренею) ты правда уже пытался что то подобное как то с dll библиотеками замутить... но сейчас похоже виден явный успех)

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

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





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

www.w-mod.info - мод Worms Renewation для Worms4
 
Форум » Worms 4 Mayhem » 5.3. Идеи скриптов и их обсуждение » Lua инъекция (Внедриться в lua-движок червей)
Страница 1 из 41234»
Поиск:

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