今天学习了C中的指针,指针*p的核心是取地址的值,P为地址,
1.理解while在这里用途
2.理解通过地址修改地址所在的数值
3.通过dll文件给.exe进行打针的操作
#include <stdio.h>
#include <Windows.h>
void main(){
int time=0;
printf("%x\n",&time);
while(1){
printf("time=%d\n",++time);
Sleep(1000);
}
}
#include <stdio.h>
_declspec(dllexport) goNum(){
int *p = 0x38fcc4;
*p=4000;
}
倒计时的操作,第二个4000可以打针进入第一个,这样可以重置时间,这就是外挂的原型,修改内存中的数据来达成自己想要的效果。单机游戏的数据都是特定的,可以用这种打针方法,自己编写程序替换原有内存中的数据,已达成外挂的效果。
在换地址的时候,值是不会改变的。在一个函数中交换地址是有效的,不同函数则无效。
int *p=0;
int *p = NULL;这两个是等价的
要注意形参和实参的关系。
int swap(int *p1,int *p2){ 两种形式,一种是以*p为变量,这时候需要定义一个新的变量c来开辟内存空间,然后给*p赋值,不然会造成系统崩溃,一种是以p为变量
int p ; 可以直接使用。
p = *p1;
*p1 = *p2;
*p2 = p;
return *p1,*p2;
}
int swap(int *p1,int *p2){
int c=o;
int * p = &c ; 这个地方int *p 没有赋值的情况是不能使用的,windows上面崩溃,linux是报错不能直接使用。
*p = *p1;
*p1 = *p2;
*p2 = *p;
return *p1,*p2;
}
void main(){
int a ,b;
int p1,p2;
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
if(a<b){
swap(p1,p2)
printf|("%d,%d",a,b)
}
}