Есть приложение для одноклассников, стартовая страница которого (открывается во фрейме) страница с адресом вида site.ru/app/index.php. При его открытие происходит инициализация апи и обращение с помощью его к users.getCurrentUser. Всё работает нормально, апи возвращает корректные данные.
Но если пройти по ссылке расположенной в самом приложение (на тот же адрес страницы приложения) то появляется ошибка при инициализации апи Uncaught TypeError: Cannot read property ‘indexOf’ of undefined (fapi5.js:1)
подключаю и инициализирую апи так:
Подскажете как исправить данную ошибку
- Вопрос задан более трёх лет назад
- 2041 просмотр
Страница которая отображается по умолчанию во фрейме vk2.vkubani.ru/chat/index.php
(в настройках приложения в пункте Ссылка на приложение указан именно этот адрес)
При старте приложения (когда сразу отображается эта страница), инициализация и обращение к апи происходит нормально.На этой странице есть несколько ссылок, в том числе и на неё саму(href=’index.php’).Так вот при переходе по этим ссылкам(в том числе на index.php) возникает описанная ошибка.
При обращении без фрейма, из браузера к vk2.vkubani.ru/chat/index.php описанная ошибка появляется сразу(но это наверное нормально,тк открывается как отдельный сайт а не приложение одноклассников).
Вопрос немного не в тему: может приложение одноклассников должно представлять собой одну страницу,которая дёргает данные по ajax.
UpdatePack Live для обновления установленной системы Windows XP SP3 Rus
Ключевой особенностью набора является наличие тех же обновлений, какие содержит UpdatePack-XPSP3-Rus. Дополнительно включены обновления тех продуктов, которые являются частью операционной системы: Windows Media Player 9-11 и Internet Explorer 6-8, а также исправления ошибок локализации. Возможна установка полных версий IE8 и WMP11, дополнительных программ и обновлений; все подробности в FAQ.
Mini-FAQ:
1. Q: Каким образом можно максимально автоматизировать процесс установки набора обновлений?
A: Для этого можно использовать следующие ключи или их комбинации:
• Ключ /reboot для автоматической перезагрузки, если она потребуется.
• Ключ /S для полностью тихой установки без окон и сообщений. Регистр имеет значение.
• Ключ /silent для пассивной установки — видно прогресс, но установка полностью автоматическая.
• Ключ /noflash пропускает установку более новой версии Adobe Flash.
2. Q: Где можно найти журнал установки?
A: Протокол установки обновлений записывается в файл %WinDir%UpdatePack.log. Также его можно просмотреть в диалоговом окне после установки.
3. Q: Каким образом можно выполнить свои программы или твики?
A: Для этого предназначены два пакетных файла, которыми можно выполнить любые внешние команды:
• Если рядом с набором есть UpdatePackStart.cmd — он будет выполнен перед установкой обновлений, UpdatePackFinish.cmd — после.
• По умолчанию консольные окна будут показаны. Чтобы их скрыть, первая строка в cmd-файле должна начинаться с «:hide» (без кавычек).
• Набор обновлений отслеживает код выхода из cmd-файлов, на случай необходимости перезагрузки. Этот код равен 3010 (команда exit 3010).
4. Q: Можно ли автоматически установить Service Pack 3?
A: Если в той же папке есть файл WindowsXP-KB936929-SP3-x86-RUS.exe и в системе установлен SP1/SP2, то SP3 будет предложен к установке.
5. Q: А что если часть обновлений уже установлена в системе?
A: Все корректно установленные обновления будут пропущены, установятся только необходимые.
6. Q: Возможно ли установить IE8 и WMP11 средствами самого набора обновлений?
A: Для этого присутствуют следующие возможности:
• Чтобы установить IE8, запустите набор с ключом /ie8, или добавьте слово ie8 в любую часть имени файла набора (например UpdatePackLiveie8.exe).
• Чтобы установить WMP11, поместите в папку с набором файл wmp11-windowsxp-x86-ru-ru.exe.
• Если вы хотите применить свои твики после установки IE8 или WMP11, расположите в папке с набором файлы ie8.reg и wmp11.reg соответственно.
Набор обновлений UpdatePack-XPSP3-Rus Live 19.11.15 : 148 комментариев
Нашел способ, как исправить отображение неправильных ошибок. Например, сейчас отображаются:
Выполнение приложения завершено после нажатия клавиш CTRL+C.
Или:
Сбой функции NtCreateFile API. Эта ошибка никогда не должна возвращаться приложению, она является заглушкой для применения во внутренних процедурах отображения ошибок перенаправителя Windows Lan Manager.
А нужно:
Точка входа в процедуру %name% не найдена в библиотеке DLL %name%.
И:
Приложению не удалось запуститься, поскольку %name% не был найден. Повторная установка приложения может исправить эту проблему.
Открыть файл ntdll.dll в Resource hacker.
— Перейти в папку «Message Table».
— Скопировать весь текст в редактор, который имеет функцию блочного копирования (например, AkelPad, EmEditor).
— Скопировать текст правой колонки, начиная со строки 0x8020000B, до строки 0xC0150012.
— Вставить этот текст начиная со строки 0xC0000001 до строки 0xC0150013 (сдвинуть на одну строку вниз).
— Скопировать текст из строки 0xC020000C в строку 0x8020000B.
— Перенести весь полученый текст в Resource hacker, сохранить ntdll.dll.
Для начала напишите, как воспроизвести проблему — какую программу запускать, чтобы было видно неправильную ошибку, и какая должна быть.
Ошибку, что не хватает dll я вызвал запуском 32 битной сборки ffmpeg отсюда: https://ffmpeg.zeranoe.com/builds/
Должно написать: Приложению не удалось запуститься, поскольку bcrypt.dll не был найден. Повторная установка приложения может исправить эту проблему.
А пишет: Сбой функции NtCreateFile API. Эта ошибка никогда не должна возвращаться приложению, она является заглушкой для применения во внутренних процедурах отображения ошибок перенаправителя Windows Lan Manager.
В принципе пойдет любая, которая требует внешний dll, или программа, которая вызывает функцию, которой нет в ХР.
Вот отсюда я взял инструкцию: https://msfn.org/board/topic/171814-posready-2009-updates-ported-to-windows-xp-sp3-enu/page/203/?tab=comments#comment-1166938
Вообще в файле ntdll.dll более ста строк сообщений, и бОльшая часть из них оказалась сдвинута на строку вверх. В основном они достаточно специфичны, поэтому практически никогда не отображаются, но вот что нет dll или нет точки входа попадаются чаще. Судя по сообщениям на форуме MSFN, ошибка появилась не так давно, в одном из обновлений была добавлена новая ошибка, но почему то она оказалась не на своем месте.
Спасибо, проверю.
Проблему подтверждаю.
помогите мне! Я загрузил себе файл UpdatePack7R2 для Windows 7 SP1 и Server 2008 R2 SP1.
Открываю его и мне пишет, что нужно скачать сервис пак 1. В итогу как мне обновить систему? Что за пак?
У вас Windows 7 без сервис-пака. Скачайте его и установите. Потом сможете ставить UpdatePack7R2.
https://www.microsoft.com/ru-ru/download/details.aspx? > Вас интересует файл
windows6.1-KB976932-X86.exe — для 32-битной системы
или
windows6.1-KB976932-X64.exe — для 64-битной
А вы не могли бы выложить ваш уже правленый ntdll.dll на любой удобный для вас обменник?
Can I install in XP SP3 ENU (English US)
Можно ли сделать так, чтобы файл shell32.dll при установке данного пакета обновлений НЕ обновлялся (затирая мой)?
Обновления подразумевают замену файлов более новыми версиями.
Подходит ли этот пак обновлений для win2003 server r2 ?
Если вы найдёте в описании упоминание этой системы, то подойдёт.
simplix , будут ли ещё наборы обновлений для windows xp если её поддержка завершена полностью даже для версии для терминалов ?
Доброго времени суток. Интересный вопрос, так же интересно, как вы это себе представляете? По вашему Simplex должен взять поддержку ХР на себя?
Is there an English version?
@Dylan Taylor,
Actually these MS updates goes in Russian out there. Simplix doesn’t care for English version. It was discussed back.
Содержание статьи
Отладчик и дизассемблер — это, безусловно, лучшие инструменты, чтобы посмотреть, как устроена какая-то программа изнутри. Но есть еще один инструмент, который быстро может дать картину того, что происходит внутри приложения и как оно взаимодействует с операционной системой. Это монитор API-вызовов.
Работа многих приложений и самой Windows во многом построена на системе DLL, т.е. динамически загружаемых библиотек. Приложениями предоставляются сервисные API-функции, с помощью которых они могут взаимодействовать с системой. Условно говоря, есть функции для чтения и записи в реестр, работы с файловой системой, сетевого взаимодействия и т.д. Фиксируя вызовы API-функций, мы можем узнать многое о работе приложения. А перехват таких вызов (и спуфинг результата их выполнения) позволяет обойти многие ограничения системы и делать с ней практически что угодно.
Существует немало программ, которые мониторят обращения к API-функциям. Взять хотя бы небезызвестные утилиты RegMon и FileMon Марка Руссиновича. Отслеживая вызовы API-функций, касающихся взаимодействия с реестром и файловой системой, они выводят информацию в удобном для анализа виде. Фактически, идея написать материал о давно существовавших API-шпионах появилась под впечатлением от нового релиза программы API Monitor. Она делает то же самое, что и масса других подобных программ — фиксирует обращения к API-функциям и COM-методам. Но то, как она реализована, заслуживает всяческих похвал.
Чем удивил API Monitor?
Сам проект довольно старый: его предыдущая 1.5 версия выходила еще в далеком 2001 году. Прошлым летом разработчики реанимировали проект и полностью переписали код. Теперь это офигенный инструмент! Кратко пройдемся по его возможностям.
- В первую очередь стоит отметить совершенно чумовой интерфейс, который отличается наглядностью и удобством. Чего стоит только подсветка синтаксиса в вызываемых функциях. В специальном поле "Summary", где отображается активность приложения, выводится информация о каждом вызове API: идентификатор нити, название DLL, сделавшей вызов, а также подсвеченный синтаксис API-вызова со всеми параметрами и возвращенным значением. Причем, если вызов не удался, информация об этом будет также наглядно отображена.
- В программе по умолчанию включено описание 10000 API функций из 166 DLL’ек, а также 700 методов из более чем 600 COM-интерфейсов (включая Shell, Browser, DirectShow, DirectSound, DirectX и т.д.). Для большего удобства все API организованы в категории и подкатегории в соответствии со структурой в библиотеке MSDN. Специальное поле интерфейса "API Capture Filter" позволяет удобно выбрать те API-шки, которые необходимо мониторить. Помимо этого, API Monitor декодирует GU >
Устанавливаем простой hook
Впрочем, лучше всего ощутить все прелести API Monitor на практике. В общем случае необходимо указать монитору две вещи: функции для отслеживания и программы/сервисы, которые предположительно будут их вызывать. Для примера возьмем простую ситуацию, когда необходимо отследить факт создания файла в системе. За это в общем случае отвечают API-функции CreateFileA, CreateFileW и NtCreateFile, вот их вызовы мы и будем мониторить.
Их надо отметить в панели API Capture Filter. Как я уже сказал, список возможных функций для мониторинга очень внушительный, и даже несмотря на их удачную группировку найти нужные элементы, не зная, где они находятся, довольно сложно. Поэтому не стесняемся воспользоваться поиском (Ctrl-F или меню "Edit -> Find"), отыскав все необходимое по ключевому слову CreateFile. С этого момента API Monitor будет нам сообщать о вызове этих функций. Осталось выбрать программу. Это может быть уже существующий процесс, и в этом случае его достаточно выбрать в панели Running Processes, или же мы можем запустить приложение прямо из API Monitor’а. Выбирем второй вариант. Переходим "File -> Hook Process", выбираем в папке Windows notepad.exe (для простоты примера возьмем обычный блокнот).
В качестве аргументов, которые передаются приложению, предлагаю указать какой-нибудь текстовый файл. Тогда программа сразу же попытается создать документ — а именно это нам и надо. Нажимаем "ОК". Запустившийся блокнот справедливо замечает, что указанный текстовый файл он не нашел, и предлагает создать его. Соглашаемся и смотрим в вывод API Monitor. На панели Summary ты должен увидеть список вызовов, которые были сделаны Notepad’ом. Сначала приложение вызвало функцию CreateFileW из библиотеки kernel32.dll, которая в свою очередь вызвала NtCreateFile. Обрати внимание: текстовые параметры для наглядности выделены красным цветом.
Помимо этого, в выводе отражаются возвращаемое значение и коды ошибок. Функция NtCreateFile не нашла файл и поэтому вернула "STATUS_OBJECT_NOT_FOUND", а потому kernel32.dll вернула в Nodepad INVAL — файл создан. Вот где ощущается прелесть от декодированных ошибок.
Снифаем SSL-трафик браузера
Теперь, когда мы разобрались с общим механизмом работы API Monitor, хочу показать тебе всю мощь того, что предоставляет возможность отслеживать и перехватывать API-вызовы. Для того чтобы пример был более практичным, возьмем ситуацию из реальной жизни, когда мне необходимо было отснифать SSL-трафик, передаваемый браузерами. API Monitor в этом случае позволяет нам просмотреть данные, которые будут отправлены на защищенный сайт до того, как их закриптует браузер. Этот способ, кстати, вполне можно использовать, чтобы восстановить пароли, которые когда-то были сохранены в браузере и забыты. Для начала схема для Internet Explorer:
- Открываем для примера любой сайт, который поддерживает авторизацию с использованием SSL. Пусть это будет Gmail.
- Среди вызываемых функций нас особенно интересует категория Windows Internet. Выберем весь раздел, в этом случае API Monitor будет отслеживать вызовы всех функций из этого раздела.
- В списке "Running Processes" находим процесс Internet Explorer и через контекстное меню включаем его мониторинг (Hook).
- Теперь возвращаемся в браузер, в случае необходимости вводим авторизационные данные и нажимаем на кнопку для авторизации. В этот момент имя пользователя и пароль будут отправлены на серверы Google через защищенное SSL-соединение. Но прежде они засветятся в вызовах API-функций в чистом виде.
- Среди вызовов, которые отследил API Monitor, будет вызов API-функции HttpSendRequestW. Посмотри на поле, где разбираются параметры функции: для каждого выводится его номер, тип, название, значение до и после вызова. Нас интересует параметр lpOptional и его значение после вызова (Post-Call Value). Кликнув на соответствующее значение в таблице в поле Hex Buffer, мы сможем увидеть данные, которые Internet Explorer засабмитил на сайт. Слева данные в шестнадцатеричном виде, справа — в ASCII. Среди прочего несложно находится запрос с перечнем полей и их значений, в том числе имя пользователя и пароль.
Если взять браузер Firefox, то он не использует стандартные функции Windows Internet — вместо этого применяются рантайм Netscape Portable Runtime и библиотеки Mozilla SSL. Впрочем, API Monitor отлично справляется и с ними. Нас, чтобы добавить конкретики, интересует PR_Write. Далее ставим хук на процесс Firefox’а, выполняем процедуру авторизации, и смотрим информацию о перехваченных вызовах. В окне Summary ты увидишь множество вызовов PR_Write, выполненных библиотекой xul.dll. Это нам и нужно. Один из этих вызовов выполняет POST-запрос с интересующими нас данными, которые передаются в параметре buf. Нас интересует тот, который начинается с "POST /accounts/ServiceLoginAuth" (смотри поле "Hex Buffer"). Просто просматривай для каждого вызова Pre-Call Value буфера, и в одном из них ты увидишь интересующие данные. Есть нюанс. Возможно, API Monitor не перехватывает достаточно данных. Чтобы это исправить, перейди "Tools -> Options" и увеличь значение параметра "Maximum size of captured buffers". Теперь все точно должно работать.
Только монитор
Помимо непосредственно API-шпионов, есть утилиты, которые позволяют не только отслеживать вызов API-функций, но, к примеру, влиять на их выполнение. Но если необходим удобный качественный шпион, которым действительно удобно пользоваться, то новый API Monitor — это то, что доктор прописал. К тому же программа поддерживает подключаемые описания вообще для любой DLL-библиотеки, оформленные в специальном XML-формате, что делает ее еще и более универсальной.
Программы для мониторинга API-вызовов
WinApiOverride
Мощнейший API-монитор от французских разработчиков, который может не только отслеживать вызовы API, но и переопределять функции. Например, исключить нужный процесс из списка процессов, которые отображаются в таскменеджере.
kerberos
Шпион для отлова вызовов WinAPI функций. Утилита перехватывает не только API, но и пользовательские функции, поддерживает плагины. Лог работы шпиона в виде текстового файла *.rep сохраняется в папке с исследуемым приложением.
APISpy32
APISpy32 — шпион за вызовами WinAPI. Программа может следить за всеми процессами одновременно в системе, имея для этого специальный навороченный движок.
Все программы из этой статьи ты найдешь на нашем DVD-приложении.