从机器码能反编译c语言吗,如何在C语言中直接执行机器码

/*

* 作者: 冷却

* 时间: 2009年2月21日

* E-mail: leng_que@yahoo.com.cn

* 描述: 演示三种用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();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值