分类: LINUX
2006-09-03 19:46:54
} void * hook(void * a) } |
a525274592013-07-31 17:13:46
a52527459:好久以前的文章了,我测试了下,我的a,b两个函数内的变量的地址差值为:8392688
要做点小修改,对地址强制变化,否则对变量地址加减 直接段错误的。
printf("hook-->&a:[%d]\n", *(((char *)&b)+8392688));
*(((char *)&b)+8392688)=30;
----------------------------
linux gcc 版本号
----------------------------
[root@xen ~]# uname -a
Linux xen.server、
3.9.3-1.el6xen.x86_64 #1 SMP Tue May 21 11:55:32 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@xen ~]# gcc 
结果是:
[root@xen1 ~]# gcc hpthread.c -lpthread;./a.out
&a:[8c3c5e9c]-1942200676-----a:[20]
&b:[8bbc4eac]-1950593364
hook-->&a:[20]
&a:[8c3c5e9c]-1942200676-----a:[30]
[root@xen1 ~]#
确实可以的。但是你的越界始终在自己的程序的空间内,如果到另一个程序的某个变量地址,应该就不行了吧。
a525274592013-07-31 17:12:01
好久以前的文章了,我测试了下,我的a,b两个函数内的变量的地址差值为:8392688
要做点小修改,对地址强制变化,否则对变量地址加减 直接段错误的。
printf("hook-->&a:[%d]\n", *(((char *)&b)+8392688));
*(((char *)&b)+8392688)=30;
----------------------------
linux gcc 版本号
----------------------------
[root@xen ~]# uname -a
Linux xen.server、
3.9.3-1.el6xen.x86_64 #1 SMP Tue May 21 11:55:32 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@xen ~]# gcc