二级指针的运用(函数指针的改变)

本文探讨了如何使用二级指针改变一级指针内容,以及通过动态库和注入器来实现函数调用的修改。尽管这种方法允许在源代码中修改函数行为,但在大量代码中操作变得复杂。介绍了一种通过创建动态库,定义新的函数指针并利用注射器注入到主程序中的方法,以实现功能替换。
摘要由CSDN通过智能技术生成

所谓的外挂,流氓软件,系统病毒无非也是这个原理。

  #include<stdio.h>
  void hit(int *p){
      *p=*p-1919;
  }
  ​
  /*void hit1(int *p){
     *p=*p+810;
  }
  */
  void test2(int **p){
      printf("**p=%d,&(*p)=%d,*p=%d,p=%d,&p=%d\n",**p,&(*p),*p,p,&p);
  }
  int main(){
      int *p1=NULL;
      int hp;
      void(*p2)(int *p)=hit;//定义了一个函数指针函数名即为hit参数即为*p
      //void(**p3)(int *p);
      //p3=&p2;
      //*p3=hit1;//将hit函数的首地址放到*p3内
      hp=114514;
      p1=&hp;
      printf("*p1=%d,p1=%d,&p1=%d,&(*p1)=%d,hp=%d,&hp=%d\n",*p1,p1,&p1,&(*p1),hp,&hp);
      p2(&hp);
      printf("*p1=%d,p1=%d,&p1=%d,&(*p1)=%d,hp=%d,&hp=%d\n",*p1,p1,&p1,&(*p1),hp,&hp);
      test2(&p1);
      getchar();
      return 0;
  }
  
  此代码对于注释代码为加上之前仅为对于一级指针的函数应用。定义了一个参数应为一级指针的函数hit(i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光的样子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值