当应用程序执行除零或运行
asm("int $3")
/var/log/kern.log
和
/var/log/messages
:
Sep 10 18:06:47 VM kernel: [117194.123452] a.out[20288] trap divide error ip:45c59d sp:7fff65a91810 error:0 in a.out[400000+144000]
Sep 10 18:07:10 VM kernel: [117217.020833] a.out[20294] trap int3 ip:45c493 sp:7fff5cc559f0 error:0
在这两种情况下,指令指针地址都指向我可以在
.map
在链接时生成的文件(使用“
-Wl,-Map,output.map
但如果我导致seg故障,在这种情况下,请致电
memcpy()
由于源代码设置为NULL,指令指针超出范围,我不知道应该如何映射:
Sep 10 18:06:13 VM kernel: [117160.228587] a.out[20282]: segfault at 0 ip 00007f7e79209092 sp 00007fff831faf08 error 4 in libc-2.9.so[7f7e79185000+168000]
在这个例子中,我原本希望IP在0x445e70-0x445e7f的范围内,根据我的.map文件,这是memcpy()的位置。
我的问题是:在这种情况下解释知识产权的诀窍是什么?