![]() |
Модераторы: 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 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
MuForum
Если внедрение исключено - это значительно затрудняет задачу. Но ведь есть еще и дизассемблер. Ваш клиент написал не господь бог, а обычный смертный программист. Такой же как и я и вы. Локализируем задачу. Будем говорить не клиент а генератор пакетов(сообщений). Что нам может помешать написать такой же генератор пакетов? 1. Незнание протокола 2. Незнание алгоритма подсчета контрольной суммы 3. Незнание алгоритма кодирования сообщения, подписей ...и так далее. Дизассемблирование клиентской программы даст нам всю эту информацию. Поскольку это клиентская программа, дизассемблировать ее можно (она у меня на компе, кто мне запретит?). дальше... мы перехватываем сообщение и имеем возможность его заменить (технические детали пропускаем). Т.е. мы получили сообщение, мы не изменяем его, а просто игнорируем и отправляем то, что нужно нам а не клиенту. Генерируем соощение в соответствии с полученными из клиентской программы методом дизассемблирования. Вот и все. Разумеется легче сказать чем сделать ![]() Это сообщение отредактировал(а) azesmcar - 5.6.2009, 15:19 |
|||
|
||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев |
Благодарю за ответ. Я это всё и понимал, более того, когда у меня разгорелась активная дискуссия с моим оппонентом, я об этом и утверждал, однако он пытался меня убедить, что это можно легко отследить, и именно на Ассемблере. (Хотя причём тут Ассемблер... Хотя это уже другой вопрос...) - Собственно именно это меня и сподвигло на создание темы. Думаю после всего выше написанного уже можно дать ссылку человека и он сам всё прочитает, и если не дурак, то сам поймёт, что был не прав. (Ладно, это всё лирика...) Меня честно говоря заинтересовало сообщение "~FoX~", на счёт "математических гамм", хотелось бы более детально об этом почитать, так как ещё не знаком с этим. - Пытался найти информацию в поисковике, но выдаёт очень много информации, и не по теме, необходимо более конкретно сформулировать запрос. Это сообщение отредактировал(а) MuForum - 5.6.2009, 15:43 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
![]() ![]() ![]() |
Правила раздела «Флейм» | |
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Флейм | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |