avatar_PereDozz

MU online: Лаунчер с автообновлением, кликером и минимальным античитом

Автор PereDozz, 2012 Июнь 19, 19:23

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

epmak

#60
Цитата: Shik от 2012 Июнь 22, 12:25  Все просто: с сокетами не знакомы ни я, ни PereDoz, а на php я пишу уже несколько лет. Логично что мне проще сделать на том, что я умею)
смысл тогда заниматься разработкой, если ты не развиваешь знания? программист обязан постоянно чему - то учится, что-то узнавать, тогда из него будет толк, имхо.
Тем более, на си шарпе все просто как нигде, достаточно понимать концепцию ООП

п.с. я вон наоборот, бегу дальше от пыхи в подобных вещах.

cokpat

а не пох ли на чем пишет?
хоть в паскале. Будет готово люди потрогают посмотрят, надо или ненадо оно им.

Shik

#62
Цитата: epmak от 2012 Июнь 22, 12:27  смысл тогда заниматься разработкой, если ты не развиваешь знания? программист обязан постоянно чему - то учится, что-то узнавать, тогда из него будет толк, имхо.
Тем более, на си шарпе все просто как нигде, достаточно понимать концепцию ООП

Я полностью согласен с первой фразой. Учиться всегда необходимо и полезно, но всегда есть какие-то обстоятельства. Основное направление моей работы - веб сайты, времени лишнего немного, сокеты мне врядли пригодятся в дальнейшем. Тем более, что лаунчер, да и весь проект - не коммерческий, а просто для себя. Поэтому я и не вижу смысла мне сейчас садиться и учить сишарп, начиная с самых азов, тем более если за это же время можно написать пусть и уязвимый, но рабочий вариант с использованием знакомого мне пхп, и затем просто хорошенько его защитить.

Цитата: epmak от 2012 Июнь 22, 12:27  п.с. я вон наоборот, бегу дальше от пыхи в подобных вещах.

Лично я обожаю php за то, что 90% поставленных задач можно выполнить именно на нем. Может я и плохой программист, или не уделяю внимания "внегласным правилам", или еще чего в этом духе. Но я придерживаюсь своего мнения, основанного на моем опыте.

Не люблю я так много строчить :)

UPD: cokpat - а вы читаете мои мысли :)

DoS.Ninja

Лёша так минусы какие в реализации PHPшного гейта? Протокол HTTP поддерживает всё что нужно +переносимость +распределение +возможность создание доступной админки. Тут всё упирается только в правильную реализацию помоему.

PereDozz

#64
Лучше подскажите как в реестр правильно отправить данные о разрешении и т.д. ,а то не хочу убить реестр свой)
("HKEY_CURRENT_USER\Software\Webzen\Mu\Config", "Resolution", "00000000")
Перенос 80/100%

epmak

Цитата: Shik от 2012 Июнь 22, 12:38  а просто для себя
в 3 должно быть тогда продумано все. в 3-не...



Цитата: Shik от 2012 Июнь 22, 12:38  Поэтому я и не вижу смысла мне сейчас садиться и учить сишарп, начиная с самых азов, тем более если за это же время можно написать пусть и уязвимый, но рабочий вариант с использованием знакомого мне пхп, и затем просто хорошенько его защитить.
мне казалось, мат часть это самое главное.


Спойлер
Лично я обожаю php за то, что 90% поставленных задач можно выполнить именно на нем.
[свернуть]

угу, написать многопоточную программу, обрабатывающую запросы по tcp  слабо на пыхе - то? Надо четко понимать границы возможностей, чтобы с глупостью не граничило.


Спойлер
я придерживаюсь своего мнения, основанного на моем опыте.
[свернуть]
у меня тут с преподавателем как раз был разговор по поводу своего опыта, знаешь что он мне сказал? достигают много те, кто учитывает не только свой опыт, но и чужой, а зачастую и на чужом опыте строит свое прекрасное будущее. Правда, там речь касалась паттернов. Но если подумать, то изобретать новый велосипед не зная недостатков уже изобретенного ничего кроме геморроя не принесет. Те подходы, что ты юзаешь уже давно есть, и выявлен ряд недостатков. При большом онлайне и хорошей загруженности сети начнутся грабли.




Цитата: DoS.Ninja от 2012 Июнь 22, 13:03  Лёша так минусы какие в реализации PHPшного гейта?
как минимум  2
1 - все на виду
2 - клиент лежит в дирке с сайтом, а не на фтп, например(таки да, аффтар, можешь реализовать доступ к фтп там тож не сложно).
отсюда следствие: толпе  клиент луче не качать, опасно срывами и не факт, что выдерживать будет быструю скачку апач


Спойлер
Протокол HTTP поддерживает всё что нужно +переносимость +распределение +возможность создание доступной админки. Тут всё упирается только в правильную реализацию помоему.
[свернуть]

Жор, подобное разделение хорошо лишь в том случае, если сатй у тебя в 1 месте, сервер в другом, а фтп с клиентом в 3(именно фтп а не хттп), если мне не отшибает память то именно фтп заточен под всякие качалки-перекачалки, а не хттп. Если же у тебя сайт на 1 хосте а сервер на втором или все сразу вместе, проще ставить так как сделан наш ланчер, смею заметить, что там тоже есть и хттп закачка (во фри, если саня не убирал в последних версиях) и фтп и через сокеты. И работает через сокеты и фтп  гораздо быстрее и жрет меньше и ты сам в курсе, что досить бесполезно, если ток канал забьешь. Таки да, там в последних версиях тот найденный тобою баг зафикшен. ДА и админить в обшем-то не сложно. Хотя была идея веб гуй напилить...

DoS.Ninja

Ну так про апач речь и не идёт) Я имел введу именно размещение модуля на отдельном хостинге, например с ngnix, он специально заточен под такие данные. А недостатки опять-таки только на уровне реализации, файлы лежат на вебхостинге, согласен FTP тут лучше, но что мешает скачивать по FTP из директорий сайта. Конечно если говорить о размещении всего сервера на одной тачке то лучше избегать HTTP.

PereDozz

Ну скачку с FTP сделаю послушаю совет)
Перенос 90/100%
Остался кликер.

Кстати обновлен вид настроек

Ember

Цитата: PereDozz от 2012 Июнь 22, 13:03  Кстати обновлен вид настроек
Вот вид лаунчера и его юзабилити ожидает желать лучшего. ИМХО.
А так продолжай работать. ;)

PereDozz

Знающие подскажите в какую сторону двигатся в плане работы кликера в трее?
И я забыл написать что уже давно есть обновление самого лаунчера.

user_MU

Сокеты, пхп .... Кто прав, кто виноват ... Дело не в этом.
На мой взгляд, так сказать пользователя, для меня удобный вариант генерации списка и проверки непосредственно на основе списка. Это обеспечивает визуализацию и контроль.
Да, если авторам удобен пхп и он даёт ощутимый прирост скорости проверки и секурности то на здоровье. Но стоит учесть что админу понадобятся те же минимальиые знания пхп для установки секурности. Что бы пользовать данный лаунчер у себя. В противном случае как уже писалось выше, бот и сервер лежит.
А из опыта могу сказать что % действительно знающих и прогрессирующих в своих знаниях людей весьма невелик. Т.е. паренёк сервер которого погибнет от флуда на лаунчер тупо скажет - "Вы засранцы и лаунчер дерьмо". И его не будет парить что кроме поднятия вебки нужно настроить её секурность и т.д.
Работа кликера в трее:
Надо искать окно игры и посылать месагами туда клики. В одном из очень неплохих кликеров поиск идет по заголовку окна, можно еще по классу. Заголовок окна можно позволить юзеру изменять, т.е. некоторые сервера изменяют стандартный MU на MuBestWorld или подобное, что бы в кликере была возможность или самому прописать заголовок, или детектить при помощи выбора процессов.
И еще, не забудьте криптовать файл настроек, инишку или конфиг. Дополнительная защита от дурака. Когда всё на ладони тут и беспросветный нуб справится с читами.

Ctrl

Вот перечитав одну из статей и почему-то с этой статьей увидел ассоциацию.

Стоит прилично одетый мужчина в Нью-Йорке возле небоскреба и курит.
Подходит к нему журналист и говорит:
- Здравствуйте. я корреспондент газеты «Нью-Йорк Таймс». Можно задать вам несколько вопросов?
- Да задавайте, я в принципе не спешу.
- Вот вы курите. А, простите, как долго вы курите?
- Мне сейчас 43, и курю я с 16 лет.
- А какие сигареты вы курите, если не секрет?
- Да не секрет – «Мальборо».
- И последний вопрос – сколько сигарет в день?
- Пачки полторы – две.
Журналист достает калькулятор, что-то считает и снова обращается к мужчине:
- Вот вы знаете, если бы вы не курили, то на сэкономленные деньги вы могли бы купить вот этот вот небоскреб?
- Серьезно?.. А вот вы сами курите?
- Нет, я не курю.
- И что, небоскреб у вас есть?
- Нет, небоскреба у меня нет.
- А я курю, и небоскреб мой....

Я думаю,смысл всем понятен.

Profesor08

#72
Выясняем отношения в личке. Либо летим в отпуск.

Mr.Kernighan

#73
Пишешь отдельно *.dll для main иначе никак. Dll не потребуется переделывать для каждого main/а, она будет универсальной. Можно посмотреть в сторону Named Pipes а можно и таким решением.
1) Перечисляешь все процессы
2) Ищешь нужные тебе процессы по названию файла, по заголовку вообщем как душе угодно (main.exe, launcher.exe)
3) Если ничего из этого не нашел, тогда ничего не запускаешь или выдаешь ошибку а потом не запускаешь. Мол "О, наипрекраснейший хакер *ули вы меняете название заголовка или файлов без ведома администратора?" Типа такой хери...
4) Ну а если нашел и main.exe и launcher.exe, убиваешь процесс main.exe и запускаешь launcher.exe функцией CreateProcess, ShellExecute есть еще дохери методов запуска программ.
Вообщем вот тебе пример на msdn, как эту байду всю реализовать:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682621(v=vs.85).aspx
И вот тебе мой пример с привилегиями, только у меня это делается в потоке, тебе поток не нужен:

unsigned __stdcall ProtectEx::ScanProcesses(void *lpParam)
{
DWORD dwError;
HANDLE hProcess;

while (true)
{
DWORD aProcesses[1024], dwcbNeeded, cProcesses;

if (!EnumProcesses(aProcesses, sizeof(aProcesses), &dwcbNeeded))
return 1;

cProcesses = dwcbNeeded / sizeof(DWORD);

for (UINT i = 0; i < cProcesses; i++ )
{
if (aProcesses[i] != 0)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, aProcesses[i]);

if (hProcess == 0)
{
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof(osvi);
GetVersionEx(&osvi);

if (osvi.dwPlatformId != VER_PLATFORM_WIN32_NT)
{
MessageBoxA(NULL, "Not WIN32 platform", "Error", MB_ICONERROR);
::ExitProcess(0);
}

TOKEN_PRIVILEGES Priv, PrivOld;
DWORD cbPriv = sizeof(PrivOld);

HANDLE hToken;

if (!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, FALSE, &hToken))
{
if (GetLastError() != ERROR_NO_TOKEN)
{
MessageBoxA(NULL, "No Token", "Error", MB_ICONERROR);
::ExitProcess(0);
}

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,&hToken))
{
MessageBoxA(NULL, "Can't open token process", "Error", MB_ICONERROR);
::ExitProcess(0);
}
}

_ASSERTE(ANYSIZE_ARRAY > 0);

Priv.PrivilegeCount = 1;
Priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Priv.Privileges[0].Luid);

if (!AdjustTokenPrivileges(hToken, FALSE, &Priv, sizeof(Priv), &PrivOld, &cbPriv))
{
dwError = GetLastError();
CloseHandle(hToken);
MessageBoxA(NULL, "Can't set new privileges", "Error", MB_ICONERROR);
::ExitProcess(0);
}

if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
{
CloseHandle(hToken);
MessageBoxA(NULL, "Not all assigned", "Error", MB_ICONERROR);
::ExitProcess(0);
}

if (hProcess != NULL)
// Здесь ищешь нужные тебе процессы и делаешь что я описал выше

dwError = GetLastError();
AdjustTokenPrivileges(hToken, FALSE, &PrivOld, sizeof(PrivOld), NULL, NULL);

CloseHandle(hToken);
CloseHandle(hProcess);
}
else
{
if (hProcess != NULL)
// Здесь ищешь нужные тебе процессы и делаешь что я описал выше
CloseHandle(hProcess);
}
}
}
Sleep(60000 * 10); // (60000мс = 1м) * 10 = 10 минут.
}
_endthreadex(0);
return 0;
};

user_MU

В этом способе 1 минус. К примеру notepad.exe переименован в launcher.exe и запущен. Лаунчер в большинстве своём нужен для автоапдейта и проверки критических файлов.
Т.е. переименованием можно избежать проверки критических файлов.
Все таки родительский процесс чекать надёжнее. И опять же проверочку туда вкинуть. Опять же, это всего лишь моё мнение.

Mr.Kernighan

#75
В чем проблема взять по адресу launcher.exe несколько байт и сверять их в DLL? Если будет подмена последовательность байт уже будет совсем не та. Конечно легко проследить что, где и как сверяется, но под силу ли будет это простому юзеру? (Если *.dll будет еще и запакована)
Ну собственно как идея, я думаю топик стартеру не помешает а методов реализации есть достаточно а какой ему выбрать решать ему.

п.с. Хотя, такой вариант для массы будет не очень удобен

fStros

Цитата: Shik от 2012 Июнь 22, 11:25  а на php я пишу уже несколько лет.

Если не ошибаюсь, есть софт которая из php кода генерит программу (лаунчер).

Цитата: Shik от 2012 Июнь 22, 10:49  Вся проверка занимает меньше секунды...

ой не веритсо как то. Тот же с++ ( даже парралел юзать ) не справитсо так быстро с полным клиентом, да и мд5.

Shik

Цитата: fStros от 2012 Июнь 25, 14:51  Если не ошибаюсь, есть софт которая из php кода генерит программу (лаунчер).
Знаем, PhpDevelStudio например. Работать мне удобно, все получается быстро, но оно не стоит того, т.к. в 50% случаев у пользователей появляются ошибки при выполнении. В общем, получается полный ужас.

Цитата: fStros от 2012 Июнь 25, 14:51  ой не веритсо как то. Тот же с++ ( даже парралел юзать ) не справитсо так быстро с полным клиентом, да и мд5.

Я про серверную часть на php.

NexT

#78
я вот тоже на днях написал для себя лаунчер на c#  :) вот скриншот

fStros

Цитата: Shik от 2012 Июнь 25, 19:28  Я про серверную часть на php.

А есть клиентская часть на php ?
И все же как то не верится.

П.С. Нужны советы по с#, могу помочь.

Похожие темы (5)

Сообщений: 37
Просмотров: 22934

Сообщений: 127
Просмотров: 40407

Сообщений: 32
Просмотров: 13876