• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Как создать свой первый чит на Rust / External ESP

Новичок
Новичок
Статус
Оффлайн
Регистрация
28 Июл 2025
Сообщения
1
Реакции
0
Мне нравиться играть с читами в rust и я сам начал интересоваться этой темой как создать свой чит, для начала я выбрал цель создать external чит на esp игроков, самый простенький esp. как мне начать? знаю базу плюсов

без негатива плиз
 
void 操作打击加成(void*数据){int*丁=(int*)数据;float*丸;char*受=fidtoptr(丁[1]),*攻=fidtoptr(丁[2]),*吾=Player0;if(受&&(丸=GetActorPos(受))&&攻!=吾){float 坐[3],角;memcpy(坐,丸,sizeof 坐);坐[1]+=1.33;if(HasEffect(受,2170)&&HasEffect(受,2370)){for(int 丙=0;丙<9;++丙){角=frand()*M_PI;ShootBullet(*(int*)(受+8),11603100,-1,Sin(角),Tan(frand()*M_PI),Cos(角),坐[0],坐[1],坐[2]);}}else if(HasEffect(受,2100)&&HasEffect(受,2300))ShootBullet(*(int*)(受+8),12455200,-1,1,0,0,坐[0],坐[1],坐[2]);else if(HasEffect(受,1120)){int 子=GetPlayerIndex(受);坐[1]-=1.33;if(子>=0&&!SacredFlameState[子]){throwdata.throwerid=丁[1];throwdata.thrownid=丁[2];throwdata.throwndir=M_PI+(throwdata.throwerdir=GetActorDir(受)[1]);throwdata.thrownpos[0]=坐[0]+Sin(throwdata.throwndir);throwdata.thrownpos[1]=坐[1];throwdata.thrownpos[2]=坐[2]+Cos(throwdata.throwndir);throwdata.throw=HIBYTE(丁[2])==0xd0?3000100:3211000;memcpy(throwdata.throwerpos,坐,12);SendPacketAll_(P2PBase,18,&throwdata,sizeof throwdata);hasthrow=1;SacredFlameState[子]=1;newthread(SacredFlameThreadProc,(void*)MAKEQWORD(子,丁[2]));}}else if(HasEffect(受,2120)&&HasEffect(受,2320)){int 阵[]={13553000,13553100,13553500};for(int 乙=0;乙<3;++乙)ShootBullet(*(int*)(受+8),阵[乙],-1,1,0,0,坐[0],坐[1],坐[2]);}else if(HasEffect(受,1070)&&攻!=吾){float*烂=攻?GetActorPos(攻):fidtopos(丁[2]);if(烂)ShootBullet(*(int*)(受+8),100091610,-1,1,9,0,烂[0],烂[1]+2,烂[2]);ApplyEffectWithFID(丁[1],1430);}else if(HasEffect(受,101312000)&&HasEffect(受,2390)){for(int 酱=0;酱<6;++酱){角=酱*2*M_PI/6;ShootBullet(*(int*)(受+8),11370150,-1,Sin(角),0,Cos(角),坐[0],坐[1],坐[2]);}}else if(HasEffect(受,2150)&&HasEffect(受,2350))ShootBullet(*(int*)(受+8),102420000,-1,1,0,0,坐[0],坐[1],坐[2]);else if(HasEffect(受,2180)&&HasEffect(受,2380)){ShootBullet(*(int*)(受+8),2150020,-1,1,0,0,坐[0],坐[1],坐[2]);ShootBullet(*(int*)(受+8),12630100,-1,1,0,0,坐[0],坐[1],坐[2]);ApplyEffectWithFID(丁[2],103555000);}else if(HasEffect(受,103760000)&&HasEffect(受,1440)){ShootBullet(*(int*)(受+8),13531000,-1,1,0,0,坐[0],坐[1],坐[2]);ApplyEffectWithFID(丁[1],103490000);}else if(HasEffect(受,130022401)&&HasEffect(受,130022451)){ShootBullet(*(int*)(受+8),12453100,-1,1,0,0,坐[0],坐[1]-.1,坐[2]);for(int 味=0;味<4;++味){角=味*2*M_PI/4;ShootBullet(*(int*)(受+8),12407000,-1,Sin(角),0,Cos(角),坐[0],坐[1]-1,坐[2]);}}else if(HasEffect(受,1083)||(HasEffect(受,100910)&&HasEffect(受,100911))){ShootBullet(*(int*)(受+8),13532100,-1,1,0,0,坐[0],坐[1],坐[2]);ApplyAttackEffect(受,120700,0,0,0,0,0,0,0);}else if(HasEffect(受,24130)&&(丁[3]!=6||丁[27]>1)){ShootBullet(*(int*)(受+8),100101807,-1,1,0,0,坐[0],坐[1]-1.33,坐[2]);ShootBullet(*(int*)(受+8),100100700,-1,1,0,0,坐[0],坐[1]-1.33,坐[2]);for(int 鸡=0;鸡<6;++鸡){角=鸡*2.*M_PI/6.;ShootBullet(*(int*)(受+8),13513000,-1,Sin(角),0,Cos(角),坐[0],坐[1],坐[2]);}ApplyEffectWithFID(丁[2],12000);ApplyEffectWithFID(丁[2],130100780);}else if(HasEffect(受,1062301)&&HasEffect(受,1062351)&&攻){static int 盒[]={12,4010,1001,60390,-1};SendPacketTo(攻,14,盒,sizeof 盒);}else if(HasEffect(受,1083201)&&HasEffect(受,1083251)&&HasEffect(受,130201500)){ShootBullet(*(int*)(受+8),13532100,-1,1,0,0,坐[0],坐[1],坐[2]);ApplyAttackEffect(受,1083201,1083251,120700,120710,0,0,0,0);ApplyEffectWithFID(丁[1],130201500);}}if(攻&&受!=吾&&(丁[15]==0||丁[15]==1||丁[15]==2||丁[15]==3)){float*噗=(float*)((char*)数据+88),*咒=GetActorDir(攻),丿=-Sin(咒[1]),丶=-Cos(咒[1]);if(HasEffect(攻,2170)&&HasEffect(攻,2370)&&丁[27]>1){ShootBullet(*(int*)(攻+8),13700280,-1,丿,0,丶,噗[0],噗[1],噗[2]);int 效[]={33,34,45,4620,11013};for(int 囧=0;囧<5;++囧)ApplyEffectWithFID(丁[1],效[囧]);}else if(HasEffect(攻,2100)&&HasEffect(攻,2300)&&丁[27]>1){int 炎[]={100134005,12402100,104901711};for(int 啊=0;啊<3;++啊)ShootBullet(*(int*)(攻+8),炎[啊],-1,丿,0,丶,噗[0],噗[1],噗[2]);}else if(HasEffect(攻,1120)){int 哇=GetPlayerIndex(攻);if(哇>=0&&!SacredFlameState[哇]){噗=GetActorPos(攻);throwdata.throwerid=丁[2];throwdata.thrownid=丁[1];throwdata.throwndir=M_PI+(throwdata.throwerdir=GetActorDir(攻)[1]);throwdata.thrownpos[0]=噗[0]+Sin(throwdata.throwndir);throwdata.thrownpos[1]=噗[1];throwdata.thrownpos[2]=噗[2]+Cos(throwdata.throwndir);throwdata.throw=HIBYTE(丁[1])==0xd0?3000100:3211000;memcpy(throwdata.throwerpos,噗,12);SendPacketAll_(P2PBase,18,&throwdata,sizeof throwdata);hasthrow=1;SacredFlameState[哇]=1;newthread(SacredFlameThreadProc,(void*)MAKEQWORD(哇,丁[1]));}}}}

вот база дальше сам
 
void 操作打击加成(void*数据){int*丁=(int*)数据;float*丸;char*受=fidtoptr(丁[1]),*攻=fidtoptr(丁[2]),*吾=Player0;if(受&&(丸=GetActorPos(受))&&攻!=吾){float 坐[3],角;memcpy(坐,丸,sizeof 坐);坐[1]+=1.33;if(HasEffect(受,2170)&&HasEffect(受,2370)){for(int 丙=0;丙<9;++丙){角=frand()*M_PI;ShootBullet(*(int*)(受+8),11603100,-1,Sin(角),Tan(frand()*M_PI),Cos(角),坐[0],坐[1],坐[2]);}}else if(HasEffect(受,2100)&&HasEffect(受,2300))ShootBullet(*(int*)(受+8),12455200,-1,1,0,0,坐[0],坐[1],坐[2]);else if(HasEffect(受,1120)){int 子=GetPlayerIndex(受);坐[1]-=1.33;if(子>=0&&!SacredFlameState[子]){throwdata.throwerid=丁[1];throwdata.thrownid=丁[2];throwdata.throwndir=M_PI+(throwdata.throwerdir=GetActorDir(受)[1]);throwdata.thrownpos[0]=坐[0]+Sin(throwdata.throwndir);throwdata.thrownpos[1]=坐[1];throwdata.thrownpos[2]=坐[2]+Cos(throwdata.throwndir);throwdata.throw=HIBYTE(丁[2])==0xd0?3000100:3211000;memcpy(throwdata.throwerpos,坐,12);SendPacketAll_(P2PBase,18,&throwdata,sizeof throwdata);hasthrow=1;SacredFlameState[子]=1;newthread(SacredFlameThreadProc,(void*)MAKEQWORD(子,丁[2]));}}else if(HasEffect(受,2120)&&HasEffect(受,2320)){int 阵[]={13553000,13553100,13553500};for(int 乙=0;乙<3;++乙)ShootBullet(*(int*)(受+8),阵[乙],-1,1,0,0,坐[0],坐[1],坐[2]);}else if(HasEffect(受,1070)&&攻!=吾){float*烂=攻?GetActorPos(攻):fidtopos(丁[2]);if(烂)ShootBullet(*(int*)(受+8),100091610,-1,1,9,0,烂[0],烂[1]+2,烂[2]);ApplyEffectWithFID(丁[1],1430);}else if(HasEffect(受,101312000)&&HasEffect(受,2390)){for(int 酱=0;酱<6;++酱){角=酱*2*M_PI/6;ShootBullet(*(int*)(受+8),11370150,-1,Sin(角),0,Cos(角),坐[0],坐[1],坐[2]);}}else if(HasEffect(受,2150)&&HasEffect(受,2350))ShootBullet(*(int*)(受+8),102420000,-1,1,0,0,坐[0],坐[1],坐[2]);else if(HasEffect(受,2180)&&HasEffect(受,2380)){ShootBullet(*(int*)(受+8),2150020,-1,1,0,0,坐[0],坐[1],坐[2]);ShootBullet(*(int*)(受+8),12630100,-1,1,0,0,坐[0],坐[1],坐[2]);ApplyEffectWithFID(丁[2],103555000);}else if(HasEffect(受,103760000)&&HasEffect(受,1440)){ShootBullet(*(int*)(受+8),13531000,-1,1,0,0,坐[0],坐[1],坐[2]);ApplyEffectWithFID(丁[1],103490000);}else if(HasEffect(受,130022401)&&HasEffect(受,130022451)){ShootBullet(*(int*)(受+8),12453100,-1,1,0,0,坐[0],坐[1]-.1,坐[2]);for(int 味=0;味<4;++味){角=味*2*M_PI/4;ShootBullet(*(int*)(受+8),12407000,-1,Sin(角),0,Cos(角),坐[0],坐[1]-1,坐[2]);}}else if(HasEffect(受,1083)||(HasEffect(受,100910)&&HasEffect(受,100911))){ShootBullet(*(int*)(受+8),13532100,-1,1,0,0,坐[0],坐[1],坐[2]);ApplyAttackEffect(受,120700,0,0,0,0,0,0,0);}else if(HasEffect(受,24130)&&(丁[3]!=6||丁[27]>1)){ShootBullet(*(int*)(受+8),100101807,-1,1,0,0,坐[0],坐[1]-1.33,坐[2]);ShootBullet(*(int*)(受+8),100100700,-1,1,0,0,坐[0],坐[1]-1.33,坐[2]);for(int 鸡=0;鸡<6;++鸡){角=鸡*2.*M_PI/6.;ShootBullet(*(int*)(受+8),13513000,-1,Sin(角),0,Cos(角),坐[0],坐[1],坐[2]);}ApplyEffectWithFID(丁[2],12000);ApplyEffectWithFID(丁[2],130100780);}else if(HasEffect(受,1062301)&&HasEffect(受,1062351)&&攻){static int 盒[]={12,4010,1001,60390,-1};SendPacketTo(攻,14,盒,sizeof 盒);}else if(HasEffect(受,1083201)&&HasEffect(受,1083251)&&HasEffect(受,130201500)){ShootBullet(*(int*)(受+8),13532100,-1,1,0,0,坐[0],坐[1],坐[2]);ApplyAttackEffect(受,1083201,1083251,120700,120710,0,0,0,0);ApplyEffectWithFID(丁[1],130201500);}}if(攻&&受!=吾&&(丁[15]==0||丁[15]==1||丁[15]==2||丁[15]==3)){float*噗=(float*)((char*)数据+88),*咒=GetActorDir(攻),丿=-Sin(咒[1]),丶=-Cos(咒[1]);if(HasEffect(攻,2170)&&HasEffect(攻,2370)&&丁[27]>1){ShootBullet(*(int*)(攻+8),13700280,-1,丿,0,丶,噗[0],噗[1],噗[2]);int 效[]={33,34,45,4620,11013};for(int 囧=0;囧<5;++囧)ApplyEffectWithFID(丁[1],效[囧]);}else if(HasEffect(攻,2100)&&HasEffect(攻,2300)&&丁[27]>1){int 炎[]={100134005,12402100,104901711};for(int 啊=0;啊<3;++啊)ShootBullet(*(int*)(攻+8),炎[啊],-1,丿,0,丶,噗[0],噗[1],噗[2]);}else if(HasEffect(攻,1120)){int 哇=GetPlayerIndex(攻);if(哇>=0&&!SacredFlameState[哇]){噗=GetActorPos(攻);throwdata.throwerid=丁[2];throwdata.thrownid=丁[1];throwdata.throwndir=M_PI+(throwdata.throwerdir=GetActorDir(攻)[1]);throwdata.thrownpos[0]=噗[0]+Sin(throwdata.throwndir);throwdata.thrownpos[1]=噗[1];throwdata.thrownpos[2]=噗[2]+Cos(throwdata.throwndir);throwdata.throw=HIBYTE(丁[1])==0xd0?3000100:3211000;memcpy(throwdata.throwerpos,噗,12);SendPacketAll_(P2PBase,18,&throwdata,sizeof throwdata);hasthrow=1;SacredFlameState[哇]=1;newthread(SacredFlameThreadProc,(void*)MAKEQWORD(哇,丁[1]));}}}}

вот база дальше сам
бляя ебать чел ну нахуя ты сливаешь приватный софт

как мне начать?
ливни с форума
 
В первую очередь тебе нужно разобраться, как работать с памятью. Начни с чего-то простого - с какой-нибудь лёгкой игры без античита. Изучи, как читать память из user-mode, используя стандартные функции, такие как ReadProcessMemory.
Затем начинай разбираться с реверсингом в IDA - научись правильно находить нужные тебе оффсеты и понимать, как устроена логика игры на низком уровне.
Для начала тебе будет достаточно ReadProcessMemory, чтобы понять, как вообще всё это работает.
Если говорить конкретно о Rust - тебе понадобятся такие классы, как BasePlayer, BaseNetworkable, BaseNPC и другие. Они являются основой для построения ESP и любого функционала, связанного с объектами в мире игры.
Для дальнейшего изучения можешь использовать информацию с форума (UC) -там много материалов по теме.
Всё в твоих руках.
 
В первую очередь тебе нужно разобраться, как работать с памятью. Начни с чего-то простого - с какой-нибудь лёгкой игры без античита. Изучи, как читать память из user-mode, используя стандартные функции, такие как ReadProcessMemory.
Затем начинай разбираться с реверсингом в IDA - научись правильно находить нужные тебе оффсеты и понимать, как устроена логика игры на низком уровне.
Для начала тебе будет достаточно ReadProcessMemory, чтобы понять, как вообще всё это работает.
Если говорить конкретно о Rust - тебе понадобятся такие классы, как BasePlayer, BaseNetworkable, BaseNPC и другие. Они являются основой для построения ESP и любого функционала, связанного с объектами в мире игры.
Для дальнейшего изучения можешь использовать информацию с форума (UC) -там много материалов по теме.
Всё в твоих руках.
вот у меня тот же вопрос как и у автора поста, я писал что на кс2 с многими типами есп, аимтригер и фов даже менял. умею чуть делать екстернал читы с imgui но на с#, на основе оффсетов раста смогу просто переписать? как понять какой оффсет к чему, есть ли дамперы и тд. понимание я имею в читах но в расте как то мыльно :(
 
Назад
Сверху Снизу