Tag: interposing

Java内插器中的堆栈粉碎

我正在编写一个Java内插器来修改与网络通信相关的系统调用。 基本上,我想修改目标收件人的IP和端口。 代码在我的笔记本电脑上正常工作,但在大学PC上,它给出了一个堆栈粉碎错误 : *** stack smashing detected ***: java terminated ======= Backtrace: ========= /lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x45)[0xb7702dd5] /lib/i386-linux-gnu/libc.so.6(+0xffd8a)[0xb7702d8a] /home/mwaqar/vibe/ldinterposer_2.so(+0x28e4)[0xb77c98e4] /home/mwaqar/vibe/ldinterposer_2.so(connect+0x9c5)[0xb77c9093] /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/libnet.so(+0xceff)[0x8b226eff] /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/libnet.so(Java_java_net_PlainSocketImpl_socketConnect+0x4c1)[0x8b227c51] 相关代码( 连接系统调用的插入)如下: int connect(int fd, const struct sockaddr *sk, socklen_t sl) { struct sockaddr_in *lsk_in = (struct sockaddr_in *) sk; struct sockaddr_in6 *lsk_in6 = (struct sockaddr_in6 *) sk; struct sockaddr_in addr4; unsigned int len; int […]