test generic function 11
186 ContainAdd((void*)(exit), (void*)(exit_stub));
(gdb) n
Breakpoint 4, ContainAdd (pOldFunc=0x8048458, pNewFunc=0x8048861) at hooktest3.c:130
130 printf("Input(0) pOldFunc = 0x%x, pNewFunc = 0x%x!\n", pOldFunc, pNewFunc);
(gdb)
Input(0) pOldFunc = 0x8048458, pNewFunc = 0x8048861!
131 printf("Input(&0)pOldFunc = 0x%x, pNewFunc = 0x%x!\n", &pOldFunc, &pNewFunc);
(gdb) disas exit
Dump of assembler code for function exit:
0xb7d59140
0xb7d59141
0xb7d59146
0xb7d5914c
0xb7d5914f
0xb7d59157
0xb7d5915d
0xb7d59161
0xb7d59165
0xb7d59168
End of assembler dump.
(gdb)
在使用gdb调试时,exit 函数的首地址 0xb7d59140 为什么和传给函数ContainAdd的第一个参数地址不一致呢?
花开花败2011 于 2011-02-12 17:45:16发表:
软件开发者路线图:从学徒到高手
yyxl 于 2010-12-11 10:05:43发表:
应该是跳转了
vfdff 于 2010-11-14 12:28:00发表:
发现程序在 r 之后,exit的内容和地址都发生了变化
troy268 于 2010-11-11 08:13:44发表:
不懂,帮忙顶一下