BSD 的socket的是整个iOS网络的最底层,于是我就想在send上下断点,经过定位我发现send函数是在libSystem.B.dylib中,可是我用ida打开libSystem.B.dylib后发现里面没有send函数,这就导致我无法找到send函数的地址,这样我就无法通过基地址+函数地址的方法下断点了,请教下老大为何libSystem.B.dylib里没有send函数呢?另外如何快速的给某个应用下send断点呢(类似windows下的OD的bp send命令?)。
怎么定位的?
在ida里双击_socket函数进入看到有个_imp_socket,再点击_imp_socket进入,看到他得头部有个import /usr/lib/libSystem.B.dylib,难道不是这样看函数定义在那个lib里啊,请狗剩指点迷津。
这说明了_socket
函数来源于libSystem.B.dylib
,跟send
函数没有直接关系啊
上面说错了,其实我是_socket和_send函数的实现都没找到,那就将错就错吧,_socket函数是在libSystem.B.dylib里,可我找不到_socket的实现代码啊,就像找不到send函数的实现代码一下。那我如何给send和socket下断点呢。
我看了下,没在这个库里找到socket
函数啊
狗剩,那这个函数是在哪里实现的呢,遇到这种问题我怎么找呢?指点下迷津啊。
其实我是想找send函数,在send函数上下断点,然后再看调用堆栈找到app发起网络的地方。现在send函数的实现地址都找不到啊。
我也遇到相同的问题,分析一个函数跟踪到这一步
_mach _msg函数
在Imports表中找到:
但是在iphone的/sur/ib里找不到libSystem.B.dylib,
在cache导出的文件里找到了libSystem.B.dylib,
但是cache导出的libSystem.B.dylib里并没有_mach_msg函数。
那请问_mach_msg函数的代码该去哪里寻找呢?
send 在libsystem_kernel.dylib中
你是通过什么办法知道send 在libsystem_kernel.dylib中的呢?
_ mach _ msg函数也在libsystem_kernel.dylib中。
我最终是用mac的查找函数找到的,后来发现没有必要,因为send函数是系统导出的,直接hook打印堆栈就能看到了