实现对绝对地址赋值详解&&实现绝对地址开始执行程序详解

 一、如何实现对绝对地址赋值?

int *ptr;
ptr = (int *)0x67a9;//指针变量初始化,给指针变量赋予一个地址
*ptr = 55; //通过*ptr来改变prt所指向地址的变量的值

解析:实现对指定的绝对地址进行赋值,利用指针,将绝对地址赋给指针变量,通过指针*ptr来修改ptr里面的地址所对应的变量    的值。

              关于(int*)强制转换,需要根据指针变量的基类型,即所指向的变量的数据类型来决定。

char *ptr;
ptr = (char *)0x67a9;//指针变量初始化,给指针变量赋予一个地址
*ptr = 'a'; //通过*ptr来改变prt所指向地址的变量的值

二、如何实现从指定的绝对地址开始执行程序

如何让程序跳转到0x100000处执行

((void(*)(void))0x100000)();

 解析:void(*)(void)是一个函数指针,是一个指向无返回值,参数为空的函数指针;

           void(*) (void))0x100000是强制转换,将0x100000强制转换为函数指针,即函数指针的地址为0x100000,对函数                  指针初始化了,((void(*)(void))0x100000)();即为一个地址为0X100000,无返回值,参数为空的函数。

         正如:f();    f为一个地址,即一个指针变量,是指向某一个函数类型的指针

void (*)(void) f;
f=(void(*)(void))0x100000;
f();

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值