Страница 1 из 2

О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 11:49
AngryCat
Обнаружил интересную вещь. Если запустить игру на unity, то сразу после загрузки игры, мы можем удалить AssemblyCsHarp.dll и ничего не изменится. Выходит, что код dll, хранится где-то в памяти. И тут возникает вопрос. Где? Можно ли его как-то изменить? Если мне не изменяет память, то программа CheatEngine, как раз вмешивается в выполняемый код и может менять значения переменных, прямо в реалтайме! Чисто в научно-познавательных целях, мне интересно, как это происходит.

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 11:58
1max1
http://rgho.st/7MGhBNRFD
Здесь про крэкинг, память, работа с отладчиком и т.д. Очень много ассеблера...
Если коротко, то ответ на твой вопрос:
Выходит, что код dll, хранится где-то в памяти. И тут возникает вопрос. Где?

В операционке.
Можно ли его как-то изменить?

Естественно) Почитай про указатели.

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 14:17
AngryCat
Спасибо, обязательно прочту!

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 14:31
Saltant
AngryCat писал(а):Обнаружил интересную вещь ... Чисто в научно-познавательных целях, мне интересно, как это происходит.

Не задумывайся о хуках, эта информация испортит твой детский наивный разум.

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 15:27
AngryCat
Saltant писал(а):
AngryCat писал(а):Обнаружил интересную вещь ... Чисто в научно-познавательных целях, мне интересно, как это происходит.

Не задумывайся о хуках, эта информация испортит твой детский наивный разум.

Говоришь так, будто ты всю жизнь только этим и занимался :)

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 21:22
Jarico
Saltant писал(а):
AngryCat писал(а):Обнаружил интересную вещь ... Чисто в научно-познавательных целях, мне интересно, как это происходит.

Не задумывайся о хуках, эта информация испортит твой детский наивный разум.


ну хз... В период 14-16 лет учился ломать игры.. Теперь делаю читы для игр и работаю с юнити :)) :)) :))

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 21:51
Saltant
На читах много не заработать, там монополии много, не дают работать нормально, душат. А переходить на черную сторону и зарабатывать репу для доступа в нижние уровни подполья определенных кругов, не у всех яик хватит, менты тоже не просто так капусту свою едят.

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 22:41
AngryCat
Saltant писал(а):На читах много не заработать, там монополии много, не дают работать нормально, душат. А переходить на черную сторону и зарабатывать репу для доступа в нижние уровни подполья определенных кругов, не у всех яик хватит, менты тоже не просто так капусту свою едят.

На раст читы по 20 к стоят... При этом на каждом классике хотя бы по одному да есть...

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 23:22
Saltant
AngryCat писал(а):
Saltant писал(а):На читах много не заработать, там монополии много, не дают работать нормально, душат. А переходить на черную сторону и зарабатывать репу для доступа в нижние уровни подполья определенных кругов, не у всех яик хватит, менты тоже не просто так капусту свою едят.

На раст читы по 20 к стоят... При этом на каждом классике хотя бы по одному да есть...

Щас бы в расте читы покупать чтоб недельку-две поиграть до очередного вайпа :D проще админу задонатить шоб тебе нарисовал пиксели какие нить. Читы мне кажется только в ММОРПГ можно хорошо продавать, ну как читы, ботов всяких как обычно, шоб избежать очередного нон-стоп дроча и играть только в удовольствие, а в остальное время бот шпилит.
З.Ы да и 20к за чит... сколько у тебя их в месяц купят ну 5, ну 10, = 100-200к рублей, и это я даж по максималочке наверно взял. А сколько у тебя купят того же бота для ММО? пускай и по 300р в месяц... Про вредоносные программы под заказ я вообще молчу, там иногда довольно космические суммы предлагают, но опять же, это скользкая тема как и сама дорожка.

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 23:33
AngryCat
Saltant писал(а): сколько у тебя их в месяц купят ну 5, ну 10, = 100-200к рублей,

Всего-то... Пассивный доход в 100 - 200 к в месяц, просто за регулярное обновление чита. Не так уж и плохо.

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 10 июн 2019, 23:56
Saltant
Я всего лишь сделал сравнение, даже приблизительное, чит раст как ты мог понять занимает самую последнюю строчку про прибыльности.

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 11 июн 2019, 05:00
Dewa1s
AngryCat писал(а):
Saltant писал(а): сколько у тебя их в месяц купят ну 5, ну 10, = 100-200к рублей,

Всего-то... Пассивный доход в 100 - 200 к в месяц, просто за регулярное обновление чита. Не так уж и плохо.

регулярное обновление чита - уже не пассивный доход.

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 11 июн 2019, 09:16
Jarico
AngryCat писал(а):Выходит, что код dll, хранится где-то в памяти. И тут возникает вопрос. Где? Можно ли его как-то изменить?


Я тут покопался в компе и нашёл свой mono-injector старый... Assembly-CSharp.dll целиком хранится в памяти и его можно достать

Кусок кода которым можно либо вытащить сборку либо запустить в ней метод
Синтаксис:
Используется csharp
private IntPtr GetImageFromAssembly(IntPtr assembly)
        {
            return Execute(Exports["mono_assembly_get_image"], assembly);//получаем указатель на сборку
        }

        private IntPtr GetClassFromName(IntPtr image, string @namespace, string @class)
        {
            return Execute(Exports["mono_class_from_name"], image,//по указателю сборки
                _memory.AllocateAndWrite(Encoding.UTF8.GetBytes(@namespace)),//в пространстве имён
                _memory.AllocateAndWrite(Encoding.UTF8.GetBytes(@class)));//получаем класс
        }

        private IntPtr GetMethodFromName(IntPtr @class, string method)
        {
            return Execute(Exports["mono_class_get_method_from_name"], @class,//в классе
                _memory.AllocateAndWrite(Encoding.UTF8.GetBytes(method)), IntPtr.Zero);//получаем метод
        }

        private bool RuntimeInvoke(IntPtr method)
        {
            return (int)Execute(Exports["mono_runtime_invoke"], method, IntPtr.Zero,//по указателю метода вызываем его с помощью MonoBehaviour.Invoke("")
                IntPtr.Zero, IntPtr.Zero) == 0;
        }
 



Статья на Habrahabr: https://habr.com/ru/post/345356/


Защититься можно повесив на регион памяти

Статья на Habrahabr: https://habr.com/ru/post/186334/

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 11 июн 2019, 21:16
AngryCat
1max1 писал(а):http://rgho.st/7MGhBNRFD
Здесь про крэкинг, память, работа с отладчиком и т.д. Очень много ассеблера...
Если коротко, то ответ на твой вопрос:
Выходит, что код dll, хранится где-то в памяти. И тут возникает вопрос. Где?

В операционке.
Можно ли его как-то изменить?

Естественно) Почитай про указатели.

почитал то, что ты мне скинул. Многое не ясно) Поломать простенькую программку с ключами от fant0ma я смог, но как быть с юнити проектами??

Re: О хранении Dll файлов в памяти.

СообщениеДобавлено: 11 июн 2019, 21:42
1max1
Многое не ясно)

Пффф, а ты думал всё так просто?
как быть с юнити проектами??

Зависит от того, что именно ты хочешь сделать.