[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Форум » Моддинг » 6.3. Прочие идеи и их обсуждение » Lua инъекция (Внедриться в lua-движок червей)
Lua инъекция
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Возникла тут идейка, она для программистов.

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

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

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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
firsacho
Админы
Сообщений: 3812
Реп: 84 / Инв: 15
ты ведь уже пытался че то делать с дллками через луа (со мной тестил).. и нефига не вышло.



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

mod.worms.pro - мод Worms Renewation для Worms4
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Я пытался загрузить dll, как lua-модуль. lua позволяет делать, если в интерпретаторе включена эта опция, но они отключили эту возможность.

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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Проверенные
Сообщений: 2848
Реп: 60 / Инв: 6
о_О, если кто-нибудь сможет это сделать, границы модинга испарятся 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
Админы
Сообщений: 825
Реп: 83 / Инв: 14
нужно найти адрес загрузки lua, для этого нужно дезасемблировать игру, либо можно заменить файл с меткой, который компелирует луа скрипты или луа скрипт который загружается первым, этот вариант в несколько раз проще

:3
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Важно. Скажите, lua в червях в отдельной dll лежит или нет?

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

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


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



Сообщение отредактировал SW_Krash - ПН, 06.02.2012, 20:10:37
 
firsacho
Админы
Сообщений: 3812
Реп: 84 / Инв: 15
видимо только мне)
кста... чувак, ты что тут делаешь??)




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

mod.worms.pro - мод Worms Renewation для Worms4
 
K@ST
Проверенные
Сообщений: 907
Реп: 51 / Инв: 13
o_ O
герыч, краш- круто, я их давно не видел)
 
SW_Krash
Проверенные
Сообщений: 818
Реп: 28 / Инв: 7
ололо... я тут возделываю офтоп... а так сижу на каникулах... паяю схемы по-тихонько ну и на сайт одним глазом гляжу... и вспоминаю наши грандиозные идеи... а ещё чего меня с админки выкинули то... я иногда на сайт временно нужные файлы заливал... оч удобно было =)))) верните =)

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


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

 
firsacho
Админы
Сообщений: 3812
Реп: 84 / Инв: 15
SW_Krash, че делает luac я не помню. А makelub переделывает луа файлы в lub формат, который кстати используется в WUM.



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

mod.worms.pro - мод Worms Renewation для Worms4
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
ок, спасибо за инфу.

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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Vorobey
Модераторы
Сообщений: 1740
Реп: 101 / Инв: 11
Круто, Крэш и Герыч) Тут нужен этот смайл: wow

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

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

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

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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Unaited
Админы
Сообщений: 1463
Реп: 92 / Инв: 13
готово
Прикрепления: 11111111.rar (363.5 Kb)


 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Спасибо, Unaited!

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

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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
4erveR
Модераторы
Сообщений: 1511
Реп: 77 / Инв: 13
Quote (Герыч)
У нас где-нибудь есть экзешник worms?

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


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

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


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

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

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

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


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
firsacho
Админы
Сообщений: 3812
Реп: 84 / Инв: 15
Герыч, О_о. я хренею) ты правда уже пытался что то подобное как то с dll библиотеками замутить... но сейчас похоже виден явный успех)

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

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




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

mod.worms.pro - мод Worms Renewation для Worms4
 
Форум » Моддинг » 6.3. Прочие идеи и их обсуждение » Lua инъекция (Внедриться в lua-движок червей)
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: