Lua инъекция
|
|
Сообщений: 1240
|
Опубликовано: 13.02.2011, 22:27:59
Возникла тут идейка, она для программистов. Идея состоит в том, чтобы зарегистрировать свою C функцию в lua движке worms. Во-первых, в червях луа версии 5.0.1. Исходники тута. Во-вторых, достаточно легко заставить произвольный exe модуль выполнять свой код, см. DLL инъекция. Вот примеры [1], [2](в конце страницы) В-третьих, народ уже это придумывал. Они заставляют WoW зарегистрировать свою C функцию в lua. Смотрите, в луа скриптах червяков хрен что сделаешь. Нельзя ни открыть файл, ни выполнить его. Внедрив свою dll можно даже сделать запись процесса игры и сбор статистики, ну или что-то более крутое =) Жалко мне не хватает понимая ассемблера и низкоуровневого программирования, хотя я вот уже понял, как найти адрес lua_State и адреса нужных мне функций, вроде не сложно.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 3813
|
Опубликовано: 13.02.2011, 22:30:46
ты ведь уже пытался че то делать с дллками через луа (со мной тестил).. и нефига не вышло.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 1240
|
Опубликовано: 13.02.2011, 22:36:27
Я пытался загрузить dll, как lua-модуль. lua позволяет делать, если в интерпретаторе включена эта опция, но они отключили эту возможность. Я же предлагаю грязный хак =) Заставить lua подумать, что у него есть ещё несколько функций. DLL у меня получилось приаттачить, это легко. Осталось празумительный код написать, дабы заставить lua зарегистрировать мою функцию.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
|
Сообщений: 825
|
Опубликовано: 13.02.2011, 22:56:15
нужно найти адрес загрузки lua, для этого нужно дезасемблировать игру, либо можно заменить файл с меткой, который компелирует луа скрипты или луа скрипт который загружается первым, этот вариант в несколько раз проще
:3
|
|
|
|
Сообщений: 1240
|
Опубликовано: 06.02.2012, 17:28:17
Важно. Скажите, lua в червях в отдельной dll лежит или нет?
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 818
|
Опубликовано: 06.02.2012, 20:09:52
А я выкладывал где-то свою концепцию извлечения игровых событий во внешние программы??? ну чтобы допустим можно было создать свой альтернативный сейв, в котором будет собираться расширенная информация о играх...
или я только Фирсачо о ней рассказывал???
Всё что ни делается, делается в Китае(SW_Krash, 2009) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008) Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x) OFFTOP SWEAT OFFTOP(фольклор)
Сообщение отредактировал SW_Krash - ПН, 06.02.2012, 20:10:37
|
|
|
|
Сообщений: 3813
|
Опубликовано: 06.02.2012, 20:15:23
видимо только мне) кста... чувак, ты что тут делаешь??)
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 907
|
Опубликовано: 06.02.2012, 20:48:16
o_ O герыч, краш- круто, я их давно не видел)
|
|
|
|
Сообщений: 818
|
Опубликовано: 06.02.2012, 23:21:32
ололо... я тут возделываю офтоп... а так сижу на каникулах... паяю схемы по-тихонько ну и на сайт одним глазом гляжу... и вспоминаю наши грандиозные идеи... а ещё чего меня с админки выкинули то... я иногда на сайт временно нужные файлы заливал... оч удобно было =)))) верните =)Добавлено (06.02.2012, 23:21) --------------------------------------------- Lua в червях лежит в виде экзешника Luac.exe и ещё есть файл вероятно тоже как-то относящийся к Lua makelub.bat
Всё что ни делается, делается в Китае(SW_Krash, 2009) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008) Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x) OFFTOP SWEAT OFFTOP(фольклор)
|
|
|
|
Сообщений: 3813
|
Опубликовано: 07.02.2012, 06:56:06
SW_Krash, че делает luac я не помню. А makelub переделывает луа файлы в lub формат, который кстати используется в WUM.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 1240
|
Опубликовано: 07.02.2012, 12:55:31
ок, спасибо за инфу.
luac(lua compiler) - компилятор луа файлов(*.lua) в бинарную форму(*.lub). В четвёртых червях на наше благо их не использовали, а вот в Worms3D - да. Поэтому Алексбонду пришлось и их декомпилировать)
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1740
|
Опубликовано: 07.02.2012, 13:30:31
Круто, Крэш и Герыч) Тут нужен этот смайл:
Сообщение отредактировал Vorobey - ВТ, 07.02.2012, 13:30:55
|
|
|
|
Сообщений: 1240
|
Опубликовано: 07.02.2012, 14:05:15
Так, парни, мне нужна ваша помощь. Запустите worms.exe
Затем запустите программу в аттаче и выберите в ней "Load functions from all DLLs attached to the selected process "
В появившемся окне отсортируйте список по колонке "Filename". Нажмите Ctrl + A (выделить весь список) и затем сохранить. полученный файл, выложите сюда.
Будем надеяться, что лазейка есть)
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1463
|
Опубликовано: 07.02.2012, 14:52:38
готово
|
|
|
|
Сообщений: 1240
|
Опубликовано: 07.02.2012, 15:04:18
Спасибо, Unaited!
Поздравляю всех) Скоро с огромной долей вероятности у нас будут свои функции, которые можно будет выполнять прямо из игры... К примеру, запись игры в файл или ещё что-нибудь, что придумаете.
У нас где-нибудь есть экзешник worms?
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1511
|
Опубликовано: 07.02.2012, 15:40:43
Quote (Герыч) У нас где-нибудь есть экзешник worms? В стандартных файлах нет, если надо - http://zalil.ru/32659687
Сообщение отредактировал 4erveR - ВТ, 07.02.2012, 15:43:14
|
|
|
|
Сообщений: 1240
|
Опубликовано: 07.02.2012, 19:01:41
В качестве подопытного кролика у меня выступает стандартный консольный интерпретатор lua...
Сейчас я смог запустить подопытного, перехватить все вызовы функции luaL_openlib(регистрация библиотек в lua) и зарегистрировать в этот момент свою библиотеку test с одной функцией test, которая попросту печатает важную строчку (см. рисунок)
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 07.02.2012, 19:15:40
Короче я буду понемного писать lua-инъектор на C#, оформлю это как библиотеку, суть которой сведётся к тому, что она будет запускать произвольный экзешник с lua внутри, а затем предоставлять все доступные функции из lua в удобной форме + события, соответствующие тому, что была перехвачена какая-либо функция из lua.
В итоге мы получим возможность регистрировать в червяках в lua любую логику, хоть даже запрос на веб-сервер или работу с файлами или что ещё можно будет придумать. Кроме того скорее всего я прилинкую к червякам полную стандартную lua библиотеку, и возможно сделаю адаптацию под новый lua, если это возможно и/или будет полезно.
Хотелось бы слышать ваши пожелания и вопросы типа "возможно ли будет сделать вот-это?", чтобы я немного смог развить свои идеи.
Проект сделаю open-source, выложу на github.com
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 3813
|
Опубликовано: 07.02.2012, 20:07:28
Герыч, О_о. я хренею) ты правда уже пытался что то подобное как то с dll библиотеками замутить... но сейчас похоже виден явный успех)
Да, запрос веб-серверу было б мега-круто) можно вести статистику игровую, прокачивать навыки через сайт, покупать оружие... О_о... да можно червей в ммо превратить) сохранять оружие вконце раунда в MySQL)
Один минус - у нас на сайте с lua работать полноценно умеют 3-4 человека...
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|