wqsong 发表于 2011-10-22 01:48

; ; ; (To someone)

本帖最后由 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.





页: [1]
查看完整版本: ; ; ; (To someone)