我在genymotion x86上开发了一个颤振的android应用程序,通过使用这和这方法绕过sslpinning,但是我的函数地址在运行Frida时返回null。
首先,通过(\x55\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xf8\x00\x00\x00\xc6)找到了函数的地址,即(0x773c52),下面是该函数早期行的字节:吉德拉,然后联步找到了正确的地址偏移量。
C:\ >python binwalk -R " \x55\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xf8\x00\x00\x00\xc6" <app_path>\lib\x86_64\libflutter.so
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
6761554 0x672C52 Raw signature (\x55\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xf8\x00\x00\x00\xc6)接下来,我在Frida代码中使用了这个地址,如下所示:
function disablePinning(){
var address = Module.findBaseAddress('lib/x86_64/libflutter.so').add(0x673c52)
hook_ssl_verify_result(address);
}
setTimeout(disablePinning, 10000)最后,当我运行Frida脚本时,我遇到了空地址异常。
TypeError:无法读取属性'add‘of null at disablePinning (/hook_ssl.js:20) at apply (本机) at (frida/runtime/core.js:45)
我也尝试了很多不同版本的Frida。有人知道为什么会这样吗?
提前谢谢。
发布于 2021-08-15 10:16:29
您的代码的问题是您混淆了模块名和文件名。
var address = Module.findBaseAddress('lib/x86_64/libflutter.so')返回null,因为您指定的模块名是错误的,因此找不到模块。
如果执行以下代码段,您将看到模块名从未用路径表示。模块名是库的内部名称,通常与文件名相同(但据我所知,它可能有所不同)。
Process.enumerateModules({
onMatch: function(module){
console.log('Module name: ' + module.name + " - Base Address: " + module.base.toString());
},
onComplete: function(){}
});普通Android应用程序的代码片段的示例输出:
Module name: app_process64 - Base Address: 0x763b8e3000
Module name: libandroid_runtime.so - Base Address: 0x7637b04000
Module name: libbinder.so - Base Address: 0x763a365000
Module name: libcutils.so - Base Address: 0x763a7df000
Module name: libdl.so - Base Address: 0x763a20d000
Module name: libhwbinder.so - Base Address: 0x7637183000
Module name: liblog.so - Base Address: 0x763a9dd000
Module name: libnativeloader.so - Base Address: 0x7639fcc000
Module name: libutils.so - Base Address: 0x7636f92000
Module name: libwilhelm.so - Base Address: 0x7637e86000
Module name: libc++.so - Base Address: 0x7639bdb000
Module name: libc.so - Base Address: 0x7638d5e000
...考虑到这一点,如果您使用的是没有路径名称的'libflutter.so',那么您的代码应该可以工作。如果仍然不能工作,请使用所提供的代码片段获取应用程序的模块列表,并确定颤振库的正确模块名。
function disablePinning(){
var address = Module.findBaseAddress('libflutter.so').add(0x673c52)
hook_ssl_verify_result(address);
}https://stackoverflow.com/questions/68788997
复制相似问题