eXeL@B —› Вопросы новичков —› Firefox 58, setBoolPref |
Посл.ответ | Сообщение |
|
Создано: 18 января 2020 14:13 · Личное сообщение · #1 Всем хеллоу. В общем встал вопрос о нахождении функции setBoolPref в файрфокс - функция которая меняет булевые значения на странице about:config По документации Mozilla, функция принимает char *, с именем параметра, и bool значение его Поиском по памяти нашел изменяемую строку, ставлю HardWare Break на память - срабатывает один раз по целевому событию, хорошо. Пройдя по стеку, составил и записал цепочку вызываемых процедур, дошел до тех, которые вызываются вне события. Картина такова: - Имеем 4-5 процедур до хардбрика по памяти, они вызываются 1 раз в фиксированном порядке и строго по событию - назовем их группой F1 - Выше них стоят процедуры, вызывающиеся вне события - назовем их группой F2 Если брать самую высокую функцию из группы F1, то по ее ret, файл prefs.js не меняется, и действие события не закончено. Однако значение char *, и bool нужные и реальные передаются в нее и дальше вызываемым. Но кроме них передается еще какой-то адрес, который используется для определения адресов вызываемых процедур. Если брать самую низкую функцию из группы F2, то да, она пушит нужные нам значения, вызывает самую высокую из F1, но дальше использований этих значений я не вижу. Собственно: 1. Цель - мне нужно найти адрес этой функции, именно setBoolPref, чтобы я мог вызвать ее со своими параметрами 2. Мне нужно понять процесс как достигнуть этой цели Я готов финансово отблагодарить того, кто мне поможет с этим вопросом. Всем thx. |
|
Создано: 19 января 2020 06:42 · Поправил: plutos · Личное сообщение · #2 d588548 пишет: Я готов финансово отблагодарить того, кто мне поможет с этим вопросом. Всем thx. Так для таких вопросов есть специальные разделы: ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 19 января 2020 11:59 · Поправил: f13nd · Личное сообщение · #3 Сделаем вид, что речь о методе Services.prefs.setBoolPref (если ты конечно не по яваскрипту хардварными бряками собирался ездить). В модуле xul.dll есть функция, возвращающая интерфейс по его имени, Services.prefs это скорей всего "@mozilla.org/preferences-service;1" (строчку найдешь) Services.prefs.setBoolPref один из методов возвращаемого ею интерфейса, вероятней всего это (прекрасно брякается при изменении булёвых настроек, первый аргумент имя опции): ЗЫ: все изложенное справедливо для 72.0.1 (64-битный). ----- 2 оттенка серого |
|
Создано: 19 января 2020 12:34 · Личное сообщение · #4 f13nd, ну то есть предлагаешь отталкиваться от "@mozilla.org/preferences-service;1" а не имени настройки ? P.S. Функция самая высокая из группы F1, берет на вход имя булевой настройки как 2 параметр и само булево значение как 3. То есть оно в принципе все где-то рядом, но все равно непонятно, как выйти на саму setBool |
|
Создано: 19 января 2020 12:40 · Личное сообщение · #5 d588548 пишет: редлагаешь отталкиваться от "@mozilla.org/preferences-service;1" а не имени настройки ? По-моему между самим движком мазилы и какой-то там опцией прямая связь не обязательна. Конечно надо от сервиса настроек плясать. d588548 пишет: но все равно непонятно, как выйти на саму setBool Ну только что сказал, что видимо "@mozilla.org/preferences-service;1", потому что в нем есть метод, брякающийся в нужный момент и ему передается имя нужной опции. Если что-то выглядит как утка и крякает как утка, значит это утка. Как выйти - получить адрес этого интерфейса, взять из него метод по нужному смещению. ----- 2 оттенка серого |
|
Создано: 19 января 2020 20:06 · Личное сообщение · #6 |
|
Создано: 19 января 2020 20:08 · Поправил: f13nd · Личное сообщение · #7 |
|
Создано: 20 января 2020 04:48 · Личное сообщение · #8 |
|
Создано: 20 января 2020 06:53 · Поправил: f13nd · Личное сообщение · #9 |
eXeL@B —› Вопросы новичков —› Firefox 58, setBoolPref |