Я использую frida для подключения различных функций веб-браузера Firefox, работающего поверх Windows. Одним из символов, которые я подключил, был mozglue::malloc()
, который вызывает распределитель jemalloc
. В адресном пространстве процесса есть три символа malloc()
:
- In
msvcrt.lib
(stati c linking) - In
ucrtbase.dll
для динамического c связывания - Уже упоминалось в
mozglue.dll
Я ожидал, что все выделения памяти, сделанные процессами Firefox, будут выделены mozglue::malloc()
и, конечно, это верно случается.
Я не ожидал, что выделения памяти, сделанные агентом frida JS, который был внедрен в целевой процесс, также будут распределены с использованием jemalloc
, и, честно говоря, я до сих пор не могу понять, почему.
Фрида не могла знать, что существует символ mozglue::malloc()
, когда он впервые присоединяется к процессу, с точки зрения Фриды, существует простой вызов malloc()
, так как и почему этот вызов перенаправляется из символов CRT по умолчанию в DLL Mozila? Вероятно, это как-то связано с дизайном PE, но я не могу это показать ...
Спасибо за любую помощь / понимание / ответ