Реверс-инжиниринг программы ACO Avrora: исходники, как вставлять текст в аврору

Программа ACO Avrora почти полностью написана на JS. В основе лежит QT WebEngine, который предоставляет средства для отображения html страниц. Мы немного поковыряли этот улей, и вот что нам удалось найти.

Всего авроры использует вроде как 3 сервера, основные запросы отправляются по веб сокетам.
Сервера:
mirea2.aco-avrora.ru || ds-servers.com || node-9.ds-servers.com
Сама аврора грузится с mirea2.aco-avrora.ru. Там находится вроде все файл, которые требуются для работы авроры, но просто так зайти или скачать их не выйдет - ошибка доступа. В данном файле находятся исходники клиентской части авроры (там в том числе есть onCopy/onPaste ивенты)
avrora.rar (962.7 КБ)

Главный вопрос - можно ли открыть аврору в браузере, как, например, это делают преподаватели? Ответ - да. Нужно перейти на https://mirea2.aco-avrora.ru/student/, но User-Agent должен стоять такой, какой стоит в авроре в QtWebEngine. Нам подойдет такой:

Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.14.2 Chrome/77.0.3865.129 Safari/537.36

Взаимодействовать вам вряд ли удастся, так как аврора использует qrc:///qtwebchannel/qwebchannel.js для вызова Qt-шных функций. Быть может стоит попробовать скомпилить свою аврору? :thinking:

Кстати, можно попробовать сделать некий прокси-сервер с помощью host, либо подменять URL. Я уже это реализовать, URL авроровской index.html находится в программе по смещению 0x0000db70 в UNICODE формате. Вот, к примеру, я заставил Аврору грузить форум mirea.ninja. По-моему это хорошее DLC для данной программы.


Как же вставлять код в аврору?

Способ №1

В app.js (посмотреть этот файл можете в архиве, который выше) реализован основной механизм проверки буфера и сохранения в буфер. Если коротко, то у программы реализован в JS внутренний буфер обмена. Это простая переменная, которая хранит то, что пользователь скопировал из авроры в HTML формате. При вставке чего-либо аврора проверяет, является ли это что-то HTML текстом, и совпадает ли текст с тем, что сейчас в буфере. Если да - вставляем. Но есть у этой механики некоторые недоработки, которые нам удалось найти.

Шаги действий, как обойти систему:

  1. Копируем что-либо из исходного кода, чтобы заполнить внутренний буфер. Например, я скопирую букву r
    image
  2. Открываем текстовый редактор, пишем туда следующее:
<p class=' '>r

Буква r, которую мы скопировали, обязательно должна находиться в теле тега, чтобы проверка на соответствие внутреннего буфера и вставляемого текста прошла успешно. В классе пишем всё что угодно. В нём должно находиться то, что мы хотим вставить в аврору. Например:
image
3. Копируем это из текстового документа, вставляем в аврору. Код вставлен:
image

Способ №2

  1. Заходите в папку с Авророй, в адресной строке вводите cmd, нажимаете Enter
  2. В открывшейся коммандлайн пишете:
    start .\ARM_Student.exe --remote-debugging-port=8023
  3. Входите в Аврору.
  4. Открываете любой хромоподобный браузер
  5. Идете по адресу http://127.0.0.1:8023/
  6. Нажимаете на единственную кнопку
  7. Идёте в пункт console сверху
  8. Пишете вниз, где синяя стрелочка в консоли браузера, вот это:
DS.page.cb.canPaste = ()=>{return true;};

Это разрешает вставку обычным ctrl+v

setInterval(()=>{window.dispatchEvent(new MouseEvent(‘mousemove’, {}));},133337);

Это отключает автокик за афк

Как редактировать и открывать любые работы (даже закрытые)

  1. Открываем аврору в режиме отладки.
  2. Открываем файл module.js?6 из модуля task
    image
  3. Идём на строку 400, выносим click-листенер из проверки. Было так:

    Стало так:
  4. Нажимаем ctrl + s, чтобы сохранить. Кликаем на рандомную страницу в Авроре, чтобы изменения обновились.
  5. Теперь вы можете открывать и редактировать закрытые работы, работы на проверке и даже те работы, которые у вас уже зачтены.
19 лайков