马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 wqsong 于 2011-10-24 01:18 编辑
好久没上来了,用了半晚上时间写的一个小程序,没什么用,权当娱乐。
- /*The deepest regards to Dennis Ritchie. The star falls.*/
- #include <stdio.h>
- typedef void (*D)(void *, void *);
- char R[] = {
- 0x55, 0x8B, 0xEC, 0x8B, 0x45, 0x08,
- 0x83, 0xC0, 0x12, 0x50, 0xFF, 0x55,
- 0x0C, 0x83, 0xC4, 0x04, 0x5D, 0xC3,
- 0x44, 0x65, 0x6E, 0x6E, 0x69, 0x73,
- 0x20, 0x52, 0x69, 0x74, 0x63, 0x68,
- 0x69, 0x65, 0x21, 0x0D, 0x0A, 0x00
- };
- void main()
- {
- ((D)R)(R, printf); /*((D)&R)(R, printf);*/
- }
复制代码
使用范围:
1、32位系统
2、__cdecl调用约定。
3、C编译器(C++编译器改为((D)&R)(R, printf))。
运行结果:
Windows XP + VC9
CentOS 5.6 + GCC 4.1
Win7似乎会发生段错误,改一下段属性即可。
The deepest regards to Dennis Ritchie. The star falls.
|