![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев |
Доброе время суток.
Возникла такая интересная ситуация, у меня с одним человеком возник спор, и что бы дальше не разводить сопли и т.д., я прошу вас ответить на вопрос и аргументировать свой ответ. Людей, которым не интересно, прошу не разводить балаган как это произошло на WASM'е, а просто покинуть тему! Постараюсь сразу же изначально объяснить подробно, чтобы не возникало вопросов. Речь будет идти об одном игровом сервере жанра: MMORPG. Программа client.exe - Клиентская часть. Программа server.exe - Серверная часть. Программа cheat.exe - Программа, которая внедряется в основной поток передачи данных. (То есть, прокси) - Контролирует принятие и отправку данных по WinSock. На стороне клиента запускается программа client.exe, через неё происходит аутентификаци клиента, и далее идёт обмен данными с сервером(server.exe). На этом же компьютере, компьютере клиента, запускается программа cheat.exe, она внедряется в основной поток передачи данных программы client.exe и пропускает все пакеты через себя. (То есть, проксик) То есть, уже все пакеты между client.exe и Server.exe проходят через программу cheat.exe Допустим Client.exe отправляет на сторону сервера пакет о том, что персонаж делает шаг, программа cheat.exe запоминает этот пакет и отправляет вследок. Естественно, заголовок TCP пакета идентичен, внутренняя структура самого отправляемого пакета(у данной игры есть собственная внутренняя структура пакетов) тоже идентична. Используемый протокол передачи данных: TCP. (Уровень: стэк TCP/IP) # Вопрос: Можно ли отследить выше описанное на стороне сервера? - Я утверждаю, что нет! Так как данные отправляются из того же потока/сокета, и на стороне сервера никак не распознать разницу, так как пакеты полностью идентичны! - Просьба не писать сообщения о том, что разработчики игры должны были сделать соответствующие проверки в программе server.exe
# Вопрос: Существует ли разница в передачи данных между C++ и Assembler? - Ещё раз повторяю, вопрос несёт не познавательный характер, а общественный опрос, что мой оппонент сбил свой пыл. - Просто человек упорно считает, что раз он начал учить Ассемблер, то это ему открывает какие-то новые перспективы в работе с передачей данных по протоколу TCP и контролю за целостностью информации. (Человек не может понять, что на стороне сервера это не отследить) P.S. -> Если необходимо что-то уточнить - напишите. Но не разводите балаган. Это сообщение отредактировал(а) MuForum - 4.6.2009, 16:50 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 |
Что курил АВАТАР?!
|
|||
|
||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев |
Я вроде доступно объяснил, что подобные комментарии не оставлять... (Или у вас проблемы с пониманием?) - Если не можете ответить по существу, зачем разводить балаган... (что на васме, что тут, всегда найдутся уникалы...) Если я не совсем точно где-то изъяснился, скажите, а подобные комментарии оставляйте при себе... Это сообщение отредактировал(а) MuForum - 4.6.2009, 18:12 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / |
MuForum,
на мой непрофессиональный взгляд, разнице в использовании ассемблера, с++, или любого другого языка нет. ИМХО, ТСП-АЙПИ это надстройка над сетью (прош грозно не материть меня за мои слабые познания) а в играх используется прикладной, то есть самый верхний уровень. то есть нельзя пропалить подставной пакет на верхнем уровне. тем не мение, транспортный уровень, то есть сам протокол TCP однозначно не определен и может иметь разные вариации даже для разных операционных систем (это я не помню где слышал и за слова не отвечаю ![]() извиняюсь, если ошибся где-то или ляпнул лажу ![]() Добавлено через 13 минут и 26 секунд могу предположить, что с каждым пакетом он отправляет уникальный ID. тогда несвоевременный двойник легко пропалится, но хз как и вряд ли |
|||
|
||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 |
MuForum, если ты каммент от вопроса отличить не можешь, то у кого тогда проблемы с пониманием то?
"Чем кумушек считать трудиться, Не лучше ль на себя, кума, оборотиться?" И.А. Крылов. 1816 г. |
|||
|
||||
MuForum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев |
Я попросил высказываться конкретно по теме. Я жду ответов и аргументов. - То, что мой оппонент многого не понимает, это и ежу понятно...
Так и весь смысл в том, Что все пакеты проходят через программу cheat.exe, и естественно структура TCP/IP заголовка меняться не будет. Это то же самое, что сразу запустить через proxy сервер. - Как ты сможешь понять, пакет пришел от cheat.exe (ложный) или это пакет от client.exe, ведь пакет будут приходить от одного и того же потока/сокета, то есть, идентификатор сокета меняться не будет. А если внутренняя структура игрового пакета правильная, то, как ты можешь отследить на стороне сервера, действительно ли персонаж сделал шаг, или это искусственно созданное действие!!! В этом и дилемма, что отследить это на стороне сервера не представляется возможности! # Добавлено: Именно по этой причине используют алгоритмы шифрования данных и т.д., чтобы если данные каким-то образом пропустят через какой-то аналог прокси сервера, так не могли отправлять свои пакеты зная внутреннюю структуру игровых пакетов, так как при расшифровывание пакетов на стороне сервера получится ахинея... Это сообщение отредактировал(а) MuForum - 4.6.2009, 20:03 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
||||
|
|||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / |
MuForum, лично я в таких мелочах не силен. на ум приходит только индексация пакетов. TCPIP протокол четкий и ничего просто так по пути не отвалится как в UDP, поэтому, возможно, имеет смысл проиндексировать. но мне кажется, что это лишние тормоза и вряд ли этим кто-то занимается.
то что парниша знает асм это конечно похвально, но очень сомневаюсь в его приемуществах в области сетей. скорее больше недостатков. хотя... чем черт не шутит, может он вручную сигналы модулирует и коллизии удаляет ![]() ![]() ![]() ![]() тема интересная, ждем пояснения от крутых перцев с форума ![]() Добавлено через 13 минут и 13 секунд может пора перенести тему из флейма в сетевые технологии |
|||
|
||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев |
Поддерживаю. Я просто изначально создал эту тему в разделе флэйм по той причине, что я эту же тему поднял на форуме "wasm.ru" и там развели балаган... - Начали гнать, что этой теме место в разделе "флэйм", хотя я и с ними не согласен, но на другом форуме я получил только кучу "умных" сообщения не по теме... -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград |
В проинципе этим матиматика гамы занимается.... Но если со стороны именно модели ОСИ смотреть, то во первых на представительском уровне - это ловица (не всегда) , а во вторых есть понятие "контрольной суммы" .....Если контрольная сумма не совпадает, то пакет аккуратно гибнет, инъекцию в пакет не засунешь....Придется весь пакет переваривать, а это отловит математика гамы, сервера, клиента, etc.... |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re |
можно подписывать каждый пакет цифровой подписью, в этом случае cheat.exe не сможет изменить пакет, точнее сможет, но сервер об этом узнает
![]() правда нагрузка на сервер увеличится... Это сообщение отредактировал(а) Lazin - 5.6.2009, 08:44 |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
Это все дополнительная, но не 100% защита. а что мешает программе cheat.exe составить такой же пакет как и client.exe? client.exe это какая-то особенная программа и написана она как-то особенно? Забудем про cheat.exe, можно изменить сам client.exe внедрив в него свой код, что тогда? Разумеется речь идет не про нелегальный ход который можно отследить на сервере а про обыкновенный. К примеру пользователь пошел налево, мы отправляем запрос "идти направо".
Программы написанные на С++ и на Ассемблере в итоге после компиляции становятся машинным кодом. Данные по сети передает не ваша программа а операционная система. А на каком языке вы прикажете ей передавать эти данные - абсолютно не важно.
а почему тема в разделе Флейм? Сейчас ассемблер практически во всех институтах на факультетах хоть как-то связанных с IT в обязательном порядке проходят и каждый кто хоть раз в жизни написал mov ah, 16h стал считать себя специалистом по ассемблеру. 99% считающих что они знают ассемблер, нихрена на самом деле не знают. Это сообщение отредактировал(а) azesmcar - 5.6.2009, 09:19 |
||||||
|
|||||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
CompWorm
Такова реальность. Когда я принимал собеседования, в 90 из 100 резюме которые мы получили, язык ассемблер был упомянут. |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / |
azesmcar,
ок, учту на будущее и не стану пополнять ряды выскочек)) не буду в своем резюме говорить, что у меня дома валяется одна недочитанная книжка по ассемблеру))))) Добавлено через 1 минуту и 57 секунд думаю, у них как и у меня, эта книжка давно стала подставкой для кофя |
|||
|
||||
MuForum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев |
Собственно я так и сделал, использую для ЭЦП - RSA, а для основного трафика блочный/симметричный алгоритм шифрования. Но вопрос не так задавался =) - С методами шифрования и т.д. я знаком, об этом не имеет смысл писать. - Меня интересует конкретно вопрос заданный мною в первом сообщении. Хм, интересно. Можете написать какие-то слова-тэги, по которым можно будет найти нужную информацию и почитать. На сколько я знаю, "контрольная сумма" пакет будет изменяться при изменение самого пакета, а если отправляется искусственно созданный пакет - "шаг влево", то как это отследить, если пакет этот отправляется из основного потока/сокета. На стороне сервера я воспринимаю этот пакет как от программы client.exe - Суть в том, что на стороне сервера ни как не получается отследить, полученный пакет от клиента - искусственно созданный, или нет. (С учётом, что структура игрового пакета полностью правильная)
Я забыл упомянуть, что в данном случае, рассматривается ситуация, когда внутренний код программы client.exe не изменяется. Рассматриваем ситуацию, когда перехватываются функции приёма/отправки данных/пакетов через WinSock. (То есть, своеобразный варианты прокси-серверов, инжектов и т.д.) Как я уже упомянул выше, то задача упирается в следующее... Допустим я злоумышленник. Я знаю внутреннюю структуру игровых пакетов. Я знаю, что отправив определённый пакет, персонаж делает шаг влево. Я внедряюсь в основной поток/сокет передачи данных, и в какой-то из моментов отправляю искусственный пакет о том, что персонаж делает шаг влево. Сервер этот пакет приймёт без проблем и обработает, так как структура заголовка TCP/IP пакета нарушена не будет, и структура игрового пакета тоже будет правильная. Так же, пакет пришел из основного потока/сокета клиента, а следовательно идентификатор сокета тот же! Это сообщение отредактировал(а) MuForum - 5.6.2009, 15:07 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
||||
|
|||||
![]() ![]() ![]() |
Правила раздела «Флейм» | |
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Флейм | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |