Сейчас на форуме: tyns777, bezumchik (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Firefox 58, setBoolPref
Посл.ответ Сообщение

Ранг: 0.6 (гость)
Активность: 0.02=0.02
Статус: Участник

Создано: 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.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 19 января 2020 06:42 · Поправил: plutos
· Личное сообщение · #2

d588548 пишет:
Я готов финансово отблагодарить того, кто мне поможет с этим вопросом. Всем thx.


Так для таких вопросов есть специальные разделы: --> поиск специалистов <-- или --> запросы на взлом <--.

-----
Give me a HANDLE and I will move the Earth.





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 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 оттенка серого




Ранг: 0.6 (гость)
Активность: 0.02=0.02
Статус: Участник

Создано: 19 января 2020 12:34
· Личное сообщение · #4

f13nd, ну то есть предлагаешь отталкиваться от "@mozilla.org/preferences-service;1" а не имени настройки ?

P.S. Функция самая высокая из группы F1, берет на вход имя булевой настройки как 2 параметр и само булево значение как 3. То есть оно в принципе все где-то рядом, но все равно непонятно, как выйти на саму setBool




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 19 января 2020 12:40
· Личное сообщение · #5

d588548 пишет:
редлагаешь отталкиваться от "@mozilla.org/preferences-service;1" а не имени настройки ?

По-моему между самим движком мазилы и какой-то там опцией прямая связь не обязательна. Конечно надо от сервиса настроек плясать.

d588548 пишет:
но все равно непонятно, как выйти на саму setBool

Ну только что сказал, что видимо "@mozilla.org/preferences-service;1", потому что в нем есть метод, брякающийся в нужный момент и ему передается имя нужной опции. Если что-то выглядит как утка и крякает как утка, значит это утка. Как выйти - получить адрес этого интерфейса, взять из него метод по нужному смещению.

-----
2 оттенка серого




Ранг: 0.6 (гость)
Активность: 0.02=0.02
Статус: Участник

Создано: 19 января 2020 20:06
· Личное сообщение · #6

f13nd,а отталкиваясь от того что имею я с множеством функций никак не выйти на то что надо ? Ну точнее более трудоемко ?




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 19 января 2020 20:08 · Поправил: f13nd
· Личное сообщение · #7

d588548, наверное можно. Просто зачем.

ЗЫ: есть вариант вообще визором ее найти, лайк э про. Если бы файрфокс был однопоточным, наверное даже получилось бы.

-----
2 оттенка серого





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 20 января 2020 04:48
· Личное сообщение · #8

d588548

> 1. Цель - мне нужно найти адрес этой функции, именно setBoolPref, чтобы я мог вызвать ее со своими параметрами

И чем же ты искать собрался, гуем в отладчике ?

Про сигнатуры никогда не слышал

f13nd

Незачем советовать то, что человек понять не может.

-----
vx





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 20 января 2020 06:53 · Поправил: f13nd
· Личное сообщение · #9

difexacaw пишет:
Незачем советовать то, что человек понять не может.

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

-----
2 оттенка серого



 eXeL@B —› Вопросы новичков —› Firefox 58, setBoolPref
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати