Reverse engineering findExportByName查找不在模块中的名称
我想挂接套接字的连接函数 首先,我需要找到它的地址 我列举了以下模块:Reverse engineering findExportByName查找不在模块中的名称,reverse-engineering,frida,Reverse Engineering,Frida,我想挂接套接字的连接函数 首先,我需要找到它的地址 我列举了以下模块: modules = Process.enumerateModules() 奇怪的是 addr = modules[i].findExportByName('connect') 根据Process.findModuleByAddressaddr为任何i返回属于libsystem_kernel.dylib的预期地址 我不明白它如何适用于与包含导出的模块对应的I不同的值,如果它真的适用于所有模块,为什么findModuleBy
modules = Process.enumerateModules()
奇怪的是
addr = modules[i].findExportByName('connect')
根据Process.findModuleByAddressaddr为任何i返回属于libsystem_kernel.dylib的预期地址
我不明白它如何适用于与包含导出的模块对应的I不同的值,如果它真的适用于所有模块,为什么findModuleByAddress不是进程的函数
我注意到
Module.findExportByName(null, 'connect')
同样有效,但我不知道区别是什么。你的问题不清楚,我无法重现你描述的行为,它在我的手机上使用最新的Frida>就像你说的,它有效:
Module.getExportByName(null,'socket')
"0x183d8ca94"
Process.findModuleByAddress("0x183d8ca94")
{
"base": "0x183d88000",
"name": "libsystem_kernel.dylib",
"path": "/usr/lib/system/libsystem_kernel.dylib",
"size": 163840
}
首先,您得到套接字的地址。然后使用该地址查找模块
您可以将它们缩短为@i.e.显示的命令。他给了你一个极好的回答
您问:为什么findModuleByAddress不是进程的函数?我使用的是Frida版本:12.11.18,这是过程的一部分
Interceptor.attch(Module.findExportByName(null, 'connect'), {
onEnter: onEnterCallback, onLeave: onLeaveCallback
})
Module.getExportByName(null,'socket')
"0x183d8ca94"
Process.findModuleByAddress("0x183d8ca94")
{
"base": "0x183d88000",
"name": "libsystem_kernel.dylib",
"path": "/usr/lib/system/libsystem_kernel.dylib",
"size": 163840
}