Перейти к содержимому


rek
Фотография

Реверсим ВКонтакте. Как устроена крупнейшая в мире социальная сеть

уязвимости эксплойты взлом хакер хакерское по взломщики соц сеть схема

В этой теме нет ответов

#1 xenotropic

xenotropic
  • Эксперт.
  • Пользователи
  • PipPipPipPipPip
  • 232 сообщений

Отправлено 30 Июнь 2019 - 03:03

Всем привет, вы когда-нибудь хотели увидеть, как выглядит всеми любимый ВК внутри? Лично мне и моим коллегам стало очень интересно, особенно тем, которые подсматривали различные фичи для собственных проектов.

Сразу хочу сказать, что Вконтакте является одной из крупнейших социальных сетей, в которой зарегистрировано миллионы человек, поэтому вряд ли у них есть ужасный код. Может быть все, но думаю они лучше в этом разбираются.

Что же, нашей целей в этой статье будет узнать архитектуру ВК.

 

Начинаем

Первым делом перейдем в консоль. Для того чтобы ее открыть нажимаем F12 и что же мы видим.

SFgB-8Ajsdw.jpg

 

В квадратных скобах записывается время с момента DomContentLoaded(далее DCL). Мы можем увидеть, что через 13 ms после DCL – Вконтакте активирует модуль common, он регистрирует определенные события, которые исполняются в DOM. Давайте поближе познакомимся с этим модулем.

kAoULrJieyE.jpg

 

Модуль common сразу же появляется перед нами минифицированным, но сделав несколько легких движений и получаем более читаемый код.

Здесь мы сможем увидеть форматирование строки, о нем я писал выше, а также debugMode. Через некоторое время мы попробуем зайти в него. Так же в этой части кода мы видим RavenJS, это значит что ВК собирает всю инфу по ошибками, после чего пакует ее в логи на своих серверах и на серверах Sentry

Теперь переходим непосредственно в debugMode и поработаем немного с его функциями

9SGHTcKkVU4.jpg

 

 

Пролистав код модуля common мы сможем понять, что он собран какой-то непонятной херней. Есть вариант того, что они имеют собственный плагин для Webpack

Пролистав еще дальше мы заметим довольно странную функцию с интересным названием. При том, что совсем недавно существовал баг с публикацией сообщений на Similar

GPUPV6zS7lo.jpg

 

 

Если начать копать дальше, то мы сможем обнаружить EventEmitter, у них собственная формула работы этого менеджера, если сказать что она плоха, то это ничего не сказать. Либо мы тут совсем ничего не понимаю, либо они реально для каждого события создают собственный EventBus. Думаю за такую реализацию разработчикам уже подготовлено отдельное место в аду.

Хорошо, забьем на это дело и теперь глянем как выстраиваться стена и как идет публикация новостей. Если судить по названию, то за это в ответе файл js/al/feed.js. Зайдя туда можно очень сильно удивиться. Такого большого количества дерьма не бывает даже деревенских туалетах. Ладно, мы здесь не для этого. Сама начина ничем не закрыта, даже банальным Webpackom, никаким образом даже не минифицирован, поэтому исходя из этого можно понять, что схема выглядит примерно так:

Kd8wrmmuarc.jpg

 

ВК сохраняет все основные опции в CommonJS модулях, а отдельные страницы создаются отдельными файлами, которые даже никак не скрыты Webpackoм. У CommonJS и других файлов загрузчики различаются. В загрузчики подключение файлов завернуто в try/catch, при этом в catch установлен перехват известной библиотеки для отправки ошибок RavenJs, в EventEmiiter  также установлен RavenJs для вызова ивентов, а также копия для отправки ошибок на сервер ВК.

Загрузка файлов обернутся таким же образом, не понятно для чего:

-b5jnOryAz8.jpg

 

 



rek




Темы с аналогичным тегами уязвимости, эксплойты, взлом, хакер, хакерское по, взломщики, соц сеть, схема


reklama reklama

Рейтинг@Mail.ru Analysis informer pr cy
Рейтинг@Mail.ru
Добавить Vkontakte Добавить в Facebook Добавить в Twitter Добавить в LiveJournal