如何在C语言中直接执行机器码

/* * 作者: 冷却 * 时间: 2009年2月21日 * E-mail: [email protected] * 描述: 演示三种用C语言来执行机器码的方式 */ #include //一段机器码,功能为:对传入的整型参数进行加一操作,然后返回结果。 unsigned char machineCode[] = "/xe9/x07/x00/x00/x00/xcc/xcc/xcc/xcc/xcc/xcc/xcc/x55/x8b/xec/x83/xec/x40/x53/x56" "/x57/x8d/x7d/xc0/xb9/x10/x00/x00/x00/xb8/xcc/xcc/xcc/xcc/xf3/xab/x8b/x45/x08/x83" "/xc0/x01/x5f/x5e/x5b/x8b/xe5/x5d/xc3"; //第一种执行方式 void exe_1() { int result; result = ( (int (*)(int))machineCode )(7); printf("%d/r/n",result); } //第二种执行方式 void exe_2() { int result; int (*Fun)(int); Fun = (void*)machineCode; result = Fun(7); printf("%d/r/n",result); } //第三种执行方式 void exe_3() { int result; typedef int(*Fun)(int); Fun p=NULL; p = (Fun)machineCode; result = p(7); printf("%d/r/n",result); } //主函数入口 void main() { exe_1(); exe_2(); exe_3(); }   

你可能感兴趣的:(底层研究)