+ -
当前位置:首页 → 问答吧 → 这句类型转换咋回事?

这句类型转换咋回事?

时间:2010-08-20

来源:互联网

char *trampoline = "\x68"               // "push"  

                   "\x12\x34\x56\x78"   // "handler address"  

                   "\xc3";              // "ret"  




__declspec ( naked ) void handler ( void )  


目的是想把handler的地址存到上边数组的偏移1 开始

类型转换是这句
(某代码)

* ( ( unsigned int * ) &trampoline [ 1 ] ) = ( unsigned int * ) handler;  

这句肯定不对。因为他把unsigned int *给了unsigned int 值。

我该为

( ( unsigned int * ) &trampoline [ 1 ] ) = ( unsigned int * ) handler;  


把地址赋给地址。但是编译器还是报错。。


到底该怎么改啊?????

作者: seskissinger   发布时间: 2010-08-20

* ( ( unsigned int * ) &trampoline [ 1 ] ) = ( unsigned int) handler;  
另外是不是该 char trampoline[] = 。。。。呢

作者: hellioncu   发布时间: 2010-08-20

本帖最后由 zhangsuozhu 于 2010-08-20 10:29 编辑

(unsigned int *)  *( trampoline + 1) = ( unsigned int * ) handler;

或 (unsigned int *)  *(&trampoline [1]) = ( unsigned int * ) handler;

作者: zhangsuozhu   发布时间: 2010-08-20