Page 1 of 1
Для чего патчится клиент при запуске инжекта?
Posted: 2005-04-05 12:22:21
by J17
Поковырял я тут немного исходники инжекта, которые когда-то выложил Yoko...
При запуске клиента, происходит его патчинг вот таким способом:
Code: Select all
for(int i = 0; i < num_elements; i++)
{
DWORD oldProtect;
if(VirtualProtect(reinterpret_cast<LPVOID>(elem->m_address),
elem->m_length, PAGE_READWRITE, &oldProtect) == 0)
{
api_error("Failed to patch (page protection)");
error = 1;
break;
}
CopyMemory(reinterpret_cast<unsigned char *>(elem->m_address),
elem->m_buffer, elem->m_length);
elem++;
}
В этом цикле изменяются несколько байтов, описанные в Ignition.cfg.
После пропатчивания устанавливаются хуки на сокеты.
По идее, всё должно работать и без этого пропатчивания (или я чего-то недопонимаю?)... Для чего оно нужно?
Posted: 2005-04-05 12:42:55
by Edred
Дык инже же надо как-то перехватывать трафик между клиентом и сервером. Я думаю, эти правки с этим и связаны. Чтобы клиент отправлял трафик не серверу, а инже, и получал от нее.
Posted: 2005-04-05 12:51:14
by J17
Наверное, всё-таки это для чего-то другого. Патчем изменяются только три байта - в 3 байта, мне кажется, вряд ли можно уместить перехват трафика... Инжект, вроде, вмешивается в протокол через хуки на сокеты.
Posted: 2005-04-06 09:42:24
by Fall0ut
Ну так раз уж интирестно...
1) Патчиться крипт то бишь чтоб инжект получил трафик от клиента в чистом виде а не шифрованый.... (поэтому так мало байтиков патчим +) сообсвенно а нам много и не надо (С))
2) Да патчиться таблица импорта клиента и в адреса всок функций пишуться адреса инжектовских функций чтоб собсвенно говоря
а)Получать трафик от клиента
б)"Заставлять" клиент думать что пришел трафик
в)Эмулировать приход трафика..
3)Инжекшан это собсвенно говря injection.dll а не ЕХЕ... так что вот... это так если кому интиресно... а ЕХЕ это загрузчик библиотеки (самого инжекта) в адресное пространтсво клиента и патчер крипта... вотс...
Posted: 2005-04-06 09:48:42
by J17
Fall0ut wrote:1) Патчиться крипт то бишь чтоб инжект получил трафик от клиента в чистом виде а не шифрованый....
То бишь, расшифровкой трафика занимается только клиент, а инжект берет уже всё готовое? Если так, то зачем на главной закладке инжекта нужно выбрать Encryption?..
Posted: 2005-04-06 23:32:38
by Yoko
патчинг это пережиток старины
преданья старины былинной
инжект вырос из небольшой нашлёпки на программу Ignition, смыслом которой было снимать энкрипт с протокола для фришардов.
ну а если уже идёт чистый поток, почему бы его не читать?
а если читать то почему бы и не изменять?
ну и так далее.
вполне реально не делать никаких патчингов а расшифровывать/зашифровывать протокол полностью.
но так уж исторически сложилось что инжект частично делает шифрование, а частично отключает его в клиенте.
Posted: 2005-04-07 11:36:02
by Fall0ut
Да новые технологии довно можно использовать только надо оно кому?... сомневаюсь...
Posted: 2005-04-08 21:16:50
by Yoko
надо
мне например
новая версия которую я начал делать с нуля когда-то воплощает все новые технологии что я знаю, в том числе отсутствие патчей, но за неимением времени я пока разработку забросил
Posted: 2005-04-08 21:21:38
by J17
Супер!
А есть ли надежда, что разработка продолжится?
Может быть, нужна помощь?