Русский / Russian English / Английский

Сейчас на форуме: haous (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› Ускорение таймеров в браузере
Посл.ответ Сообщение


Ранг: 677.5 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 08 сентября 2011 22:02 New!
Цитата · Личное сообщение · #1

Всем здрасте. Недавно захотел рещить одну распространённую проблему - проблему таймеров при ожидании ссылки для загрузки какого-либо файла. Т.е. (для людей не в теме) пытаетесь вы скачать с какого-то сервиса типа депозита, турбобита и многих других какой-то файл. Но перед началом загрузки выскакивает таймер, и приходится ждать 60 сек, а иногда и больше. Это ужасно раздражает. В инете видел множество скриптов по обходу этих таймеров, но меня интересует эта проблема, однако под другим ракурсом. Идея состоит в следующем. Так как ожидание выполняется браузером (браузер выполняет javascript, например), то от того, как это ожидание программно реализовано в браузере, зависит сколько на самом деле мы будем ждать. Т.е., к примеру, некий таймер по окончании интервала в 60 секунд вызывает TIMERPROC. Вполне реальный сценарий, по-моему. Так вот наша задача подправить реализацию этих вызовов, чтоб изменить интервал ожидания. Но! В теори всё кул, на практике перепробовал всё, что только можно:
SetTimer
KillTimer
ZwOpenTimer
ZwCreateTimer
ZwSetTimer
Sleep
SleepEx
ZwYieldExecution
RtlCreateTimer
RtlCreateTimerQueue
GetTickCount
CreateWaitableTimer
QueryPerformanceCounter
timeGetTime

И ничего!Таймеры Internet Explorer не опираются на них! Блин, как так? Сомневаюсь, что используется какой-то недокументированный хитрожопый способ, может, кто что посоветует?


Ранг: 756.3 (! !)
Статус: Участник
Student

Создано: 09 сентября 2011 00:46 · Поправил: Isaev New!
Цитата · Личное сообщение · #2

Ну так делается это в опере например банально при помощи UserJS, подменой кода до начала исполнения, при чём тут API то
При данной постановке задачи, оптимальный вариант...
А при хуке API, просто для "ускорения" всех таймеров, можно на свою задницу много лишнего словить

В частности тут: --> Link <-- Всё написано и поддерживается в актуальном состоянии (для некоторых обменников, где пасут эти скрипты и активно фиксят код, скрипты скрыты, можно спросить в личке у автора)
приятная вещь, облегчает жизнь. А по аналогии можно для нужного сервера дописать своё

Ранг: 20.4 (новичок)
Статус: Участник

Создано: 09 сентября 2011 04:25 · Поправил: Skino New!
Цитата · Личное сообщение · #3

Isaev А для мазилы есть интересно такая же тема?


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 09 сентября 2011 05:55 New!
Цитата · Личное сообщение · #4

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

Ранг: 7.7 (гость)
Статус: Участник

Создано: 09 сентября 2011 09:34 New!
Цитата · Личное сообщение · #5

Skino пишет:
А для мазилы есть интересно такая же тема?

для мозиллы есть дополнение SkipScreen


Ранг: 677.5 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 09 сентября 2011 10:19 New!
Цитата · Личное сообщение · #6

Скрипты - это, конечно, прекрасно. Но вот проблема в том, что:

для некоторых обменников, где пасут эти скрипты...

А с API - паси, не паси - это будет работать. Единственная проблема, как сказал PE_Kill, это если время на сервере считается. Но тогда и скрипты не помогут. Поэтому сосредоточимся исключительно на сценарии, в котором отсчёт ведётся на стороне клиента.

А при хуке API, просто для "ускорения" всех таймеров, можно на свою задницу много лишнего словить

Ну, эт я догадываюсь. Поэтому буду хукать по-умному, тут сейчас главное - разобраться, как ведётся работа с этими таймерами на уровне исполняемого кода процессора, а не каких-то там скриптов.

Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 09 сентября 2011 10:45 · Поправил: Zorn New!
Цитата · Личное сообщение · #7

Да вы, батенька, решили муху атомной бомбой грохнуть

Если так хочется изврата - бери сорцы лисы например и смотри как обрабатывается setInterval и setTimeout в Javascript движке.

Ранг: 516.1 (!)
Статус: Участник

Создано: 09 сентября 2011 11:18 New!
Цитата · Личное сообщение · #8

firebug можно поюзать, посмотреть как таймеры в firefox'e работают


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 09 сентября 2011 16:29 New!
Цитата · Личное сообщение · #9

ARCHANGEL есть программа USD она качает с шаропомоек. Чем не устраивает? Меня не устраивало то, что плагин для letitbit реально ждал таймер, который как раз работает только на стороне клиента, я его выбросил и написал за 10 минут свой, который уже ничего не ждет. А так действительно атомная бомба.


Ранг: 756.3 (! !)
Статус: Участник
Student

Создано: 09 сентября 2011 17:24 New!
Цитата · Личное сообщение · #10

PE_Kill пишет:
есть программа USD она качает с шаропомоек.

Ещё не стоит обходить вниманием JDownloader


Ранг: 307.7 (мудрец)
Статус: Участник

Создано: 09 сентября 2011 17:48 New!
Цитата · Личное сообщение · #11

PE_Kill
Можно сей плагинчик получить (или pesonal use only ;) ?


Ранг: 127.3 (ветеран)
Статус: Участник

Создано: 10 сентября 2011 01:12 New!
Цитата · Личное сообщение · #12

мне кажеца вопрос не про то как скачать, а как бравзер считает время)
вроде все нужные апи перечислены, может ARCHANGEL ошибся в хуке?


Ранг: 677.5 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 10 сентября 2011 01:21 New!
Цитата · Личное сообщение · #13

zeppe1in пишет:
мне кажеца вопрос не про то как скачать, а как бравзер считает время)

Именно! +100! Я, видимо, весьма туманно выразился, но как раз этот аспект меня интересует.

вроде все нужные апи перечислены, может ARCHANGEL ошибся в хуке?

Ну, смотрите. Всё, вроде бы, просто. Я перехожу по ссылке, например, на депозите. Потом жму скачать файл, выбираю "бесплатно", но перед тем, как браузер выполнит переход на страницу с таймером, ставлю бряк на интересующую меня функцию. Если он (бряк) не срабатывает, значит и говорить не о чем. Если срабатывает по сто раз в секунду (много раз, иными словами), то я патчу функцию (например, GetTickCount всегда возвращала 0 у меня в тестах), но таймер работает, и ничего не меняется. Такими способами я протестил все функции в списке.


Ранг: 1128.2 (!!!!)
Статус: Участник

Создано: 10 сентября 2011 04:34 New!
Цитата · Личное сообщение · #14

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


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 10 сентября 2011 07:27 New!
Цитата · Личное сообщение · #15

На депозите разве не флеш-таймер?


Ранг: 1128.2 (!!!!)
Статус: Участник

Создано: 10 сентября 2011 08:45 New!
Цитата · Личное сообщение · #16

PE_Kill пишет:
На депозите разве не флеш-таймер?


а надо посмотреть, мну там давно не был


Ранг: 677.5 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 10 сентября 2011 12:22 · Поправил: ARCHANGEL New!
Цитата · Личное сообщение · #17

PE_Kill
А если и флеш, то что это меняет? Вся флеша воспроизводится через флеш-плеер, который выполняется внутри браузера в своей отдельной DLL. Т.е. бряки в адресном пространстве должны бы срабатывать. По крайней мере, я так думаю, разве нет?

Добавлено
А, понятно


Ранг: 1128.2 (!!!!)
Статус: Участник

Создано: 10 сентября 2011 13:05 New!
Цитата · Личное сообщение · #18

ARCHANGEL, PE_Kill ответил на моё:

Gideon Vi пишет:
я что-то не припомню популярных сервизов, где время бы считалось у клиента.

Ранг: 249.7 (наставник)
Статус: Участник

Создано: 10 сентября 2011 14:41 New!
Цитата · Личное сообщение · #19

ARCHANGEL пишет:
А если и флеш, то что это меняет? Вся флеша воспроизводится через флеш-плеер, который выполняется внутри браузера в своей отдельной DLL. Т.е. бряки в адресном пространстве должны бы срабатывать. По крайней мере, я так думаю, разве нет?

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


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 12 сентября 2011 07:00 New!
Цитата · Личное сообщение · #20

cppasm прав, флеш в лисе не воспроизводится, для этого у них песочница сделана.


Ранг: 677.5 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 12 сентября 2011 10:19 New!
Цитата · Личное сообщение · #21

PE_Kill, cppasm
Я не использую FireFox, как-то мне он не по душе. А вот в Internet Explorer нет песочницы для флеша. Но даже если б и была, то депозит не использует флеш. Имхо, если нажать на флеш во время воспроизведения правой кнопкой мыши, то появляется характерное меню, которое отсутствует на таймере депозита. Но я не силён в веб-технологиях, возможно, и во флеше можно убрать это меню?


Ранг: 1128.2 (!!!!)
Статус: Участник

Создано: 12 сентября 2011 12:58 New!
Цитата · Личное сообщение · #22

ARCHANGEL пишет:
возможно, и во флеше можно убрать это меню?


можно


Ранг: 677.5 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 12 сентября 2011 23:29 New!
Цитата · Личное сообщение · #23

</center>
<script>
timer(30);
</script>
<br /><br />


Вот такой таймер - это ж не флеш, так что будем плясать с него. Попробую на досуге бряки на нём.

Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 13 сентября 2011 05:09 · Поправил: Zorn New!
Цитата · Личное сообщение · #24

Gideon Vi пишет:
можно

Разве ? Можно пример ?

Я про "О программе Adobe Flash Player"


Ранг: 60.7 (постоянный)
Статус: Участник
KpTeaM

Создано: 17 сентября 2011 10:03 · Поправил: Runtime_err0r New!
Цитата · Личное сообщение · #25

Несколько не в тему, но всё же:

Есть такая прога - Proxomitron, работает, как локальный прокси-сервер, позволяет подменять содержимое сайтов до передачи их в браузер (я её пользую как фильтр для руборда )

Так вот, посмотрел я на letitbit, там в самом начале страницы идёт код:

download_link = 'http://letitbit.net/download.php?uid=...............';
ajax_check_url = 'http://s9.letitbit.net/ajax/download3.php';
count = 0;
seconds = 60;

Я думаю, что если в Proxomitron'е cсоздать правило менять seconds = 60 на seconds = 1 то будет всё OK

P.S. А вот более в тему: http://msdn.microsoft.com/en-us/library/aa741307(v=vs.85).aspx#The_MSHTML_Timer_API
http://msdn.microsoft.com/en-us/library/aa741299(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/aa741297(v=vs.85).aspx

Ранг: 47.7 (посетитель)
Статус: Участник

Создано: 17 сентября 2011 18:36 New!
Цитата · Личное сообщение · #26

Ну давайте подумаем. Что происходит во время ожидания таймаута - очевидно можно разделить потоки на паразитные, которые не имеют отношения к ожиданию и полезные, которые выполняют синхронизацию. Их можно разделить по сисколом, стеку етц. Потоки выполняющие синхронизацию с точки зрения тс выполняют полезную работу, остальные можно остановить(скорее всего при этом не будет никаких дедлоков). Остальные помимо синхронизации выполняют всякую иную работу - чтото передают в сеть, аптейтят контексты окон етц. По этим событиям можно найти нужные треды. А дальше примитивно - колстек и брейки.

ARCHANGEL
Разве вы никогда не реверсили софт ?
 eXeL@B —› Основной форум —› Ускорение таймеров в браузере

Видеокурс ВЗЛОМ