Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


the art of scanning

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
elsword
Cheater
Reputation: 0

Joined: 05 Apr 2013
Posts: 26

PostPosted: Wed Apr 24, 2013 7:20 pm    Post subject: the art of scanning Reply with quote

hello i have some questions about scanning

i can do most basic scan now i want to learn some advanced scan with hard addresses

- let's say im playing a TPS or FPS game, i want to scan the flying speed of the ammo of my gun ( bazooka , rocket launcher etc...) is this even possible ?

- the client trace , even when i miss my target it still hit them

- attack dmg / attack speed / attack range
Back to top
View user's profile Send private message
m0us
Newbie cheater
Reputation: 0

Joined: 25 Apr 2013
Posts: 11

PostPosted: Thu Apr 25, 2013 10:20 am    Post subject: Re: the art of scanning Reply with quote

Quote:

- let's say im playing a TPS or FPS game, i want to scan the flying speed of the ammo of my gun ( bazooka , rocket launcher etc...) is this even possible ?

usually - this is constant values

Quote:
- the client trace , even when i miss my target it still hit them
- attack dmg / attack speed / attack range


of course no, but this is another level, you required to know programming and game sdk. look on source code for cheats.

typically - below is an cs16 cheat function also called "autowall". it makes a trace to allow aimbot keep target locked through walls

Code:

int CanPenetrate(const float *start, const float *end, float flDistance, int penetration, int bullettype, int iDamage, float wallpierce)
{
   float distfrac, damagemult, distancemax, vecSrc[3], vecEnd[3], vecDir[3], length, tmpVec[3];
   float tmplen, length1, length2;
   pmtrace_t tr;
   //struct cl_entity_s *pent;
   //physent_t *pent;
   int damage = iDamage, bulletvelocity, tmppen = penetration + 1;
   int y = 440;
   char texturetype;

   vecSrc[0] = start[0];
   vecSrc[1] = start[1];
   vecSrc[2] = start[2];

   vecEnd[0] = end[0];
   vecEnd[1] = end[1];
   vecEnd[2] = end[2];

   // damage gets a randomlong added to it in first switch

   switch (bullettype)
   {
   case BULLETTYPE_1:
      bulletvelocity = 21;
      distancemax = 800.0f;
      break;
   case BULLETTYPE_9:
      if (cvar.wallsensitivity == 0)
         damage -= 2;
      else if (cvar.wallsensitivity == 2)
         damage += 2;

      bulletvelocity = 15;
      distancemax = 500.0f;

      break;
   case BULLETTYPE_13:
      bulletvelocity = 30;
      distancemax = 1000.0f;
      break;
   case BULLETTYPE_11:
      if (cvar.wallsensitivity == 0)
         damage -= 2;
      else if (cvar.wallsensitivity == 2)
         damage += 2;

      bulletvelocity = 39;
      distancemax = 5000.0f;
      break;
   case BULLETTYPE_12:
      if (cvar.wallsensitivity == 0)
         damage -= 3;
      else if (cvar.wallsensitivity == 2)
         damage += 3;

      bulletvelocity = 35;
      distancemax = 4000.0f;
      break;
   case BULLETTYPE_10:
      if (cvar.wallsensitivity == 0)
         damage -= 4;
      else if (cvar.wallsensitivity == 2)
         damage += 4;

      bulletvelocity = 45;
      distancemax = 8000.0f;
      break;
   case BULLETTYPE_14:
      if (cvar.wallsensitivity == 0)
         damage -= 4;
      else if (cvar.wallsensitivity == 2)
         damage += 6;
      else
         damage += 1;

      bulletvelocity = 30;
      distancemax = 2000.0f;
      break;
   case BULLETTYPE_15:
      if (cvar.wallsensitivity == 0)
         damage -= 4;
      else if (cvar.wallsensitivity == 2)
         damage += 6;
      else
         damage += 1;

      bulletvelocity = 25;
      distancemax = 800.0f;
      break;
   default:
      bulletvelocity = 0;
      distancemax = 0.0f;
      break;
   }

   //DrawHudString(40,460,255,255,255, "distancemax: %f", distancemax);

   vecDir[0] = vecEnd[0] - vecSrc[0];
   vecDir[1] = vecEnd[1] - vecSrc[1];
   vecDir[2] = vecEnd[2] - vecSrc[2];

   length = VectorLength(vecDir);

   vecDir[0] /= length;
   vecDir[1] /= length;
   vecDir[2] /= length;

   //gEngfuncs.pfnAngleVectors(me.ViewAngles, forward, right, up);

   //vecDir[0] = forward[0];
   //vecDir[1] = forward[1];
   //vecDir[2] = forward[2];

   vecEnd[0] = vecDir[0] * flDistance + vecSrc[0];
   vecEnd[1] = vecDir[1] * flDistance + vecSrc[1];
   vecEnd[2] = vecDir[2] * flDistance + vecSrc[2];

   damagemult = 0.5f;

   while (tmppen)
   {
      //gDrawFilledBoxAtLocation(vecSrc, 0x00FF00FF, 2);

      MP_TraceLine(vecSrc, vecEnd, vecDir, -1, &tr);

      texturetype = GetTextureType(&tr, vecSrc, vecEnd);

      switch (texturetype)
      {
      case CHAR_TEX_CONCRETE:
         bulletvelocity *= 0.25;
         break;
      case CHAR_TEX_GRATE:
         bulletvelocity *= 0.5;
         damagemult = 0.4f;
         break;
      case CHAR_TEX_METAL:
         bulletvelocity *= 0.15;
         damagemult = 0.2f;
         break;
      case CHAR_TEX_COMPUTER:
         bulletvelocity *= 0.4;
         break;
      case CHAR_TEX_TILE:
         bulletvelocity *= 0.65;
         damagemult = 0.2f;
         break;
      case CHAR_TEX_VENT:
         bulletvelocity *= 0.5;
         damagemult = 0.45f;
         break;
      case CHAR_TEX_WOOD:
         damagemult = 0.6f;
      default:
         break;
      }

      //gDrawFilledBoxAtLocation(tr.endpos, 0xFFFFFFFF, 2);

      //DrawHudString(40,y+=20,255,255,255, "allsolid: %d, startsolid: %d, inopen: %d, fraction: %f", tr.allsolid, tr.startsolid, tr.inopen, tr.fraction);

      if (tr.fraction != 1.0)
      {
         //DrawHudString(40,y+=20,255,255,255, "damagemult: %f, bulletvelocity: %d", damagemult, bulletvelocity);

         tmppen--;

         tmpVec[0] = tr.endpos[0] - start[0];
         tmpVec[1] = tr.endpos[1] - start[1];
         tmpVec[2] = tr.endpos[2] - start[2];

         tmplen = VectorLength(tmpVec);

         if (tmplen >= length)
         {
            tmpVec[0] = end[0] - vecSrc[0];
            tmpVec[1] = end[1] - vecSrc[1];
            tmpVec[2] = end[2] - vecSrc[2];

            length1 = VectorLength(tmpVec);

            tmpVec[0] = vecEnd[0] - vecSrc[0];
            tmpVec[1] = vecEnd[1] - vecSrc[1];
            tmpVec[2] = vecEnd[2] - vecSrc[2];

            length2 = VectorLength(tmpVec);

            tr.fraction = length1 / length2;

            distfrac = flDistance * tr.fraction;

            damage *= pow(wallpierce, distfrac * 0.002f);

            return damage;
         }

         distfrac = flDistance * tr.fraction;

         damage *= pow(wallpierce, distfrac * 0.002f);

         if (distfrac > distancemax)
            tmppen = 0;

         // there is another test on tr.ent here but i don't see that is does anything important

         //pent = gEngfuncs.GetEntityByIndex(PM_GetPhysEntInfo(tr.ent));

         //pent = gEngfuncs.pEventAPI->EV_GetPhysent(tr.ent);

         //DrawHudString(40,y+=20,255,255,255, "tr.ent: %d, pent: %x, damage: %d, flDistance: %f, distfrac: %f, pen: %d, textype: %c", tr.ent, pent, damage, flDistance, distfrac, tmppen, texturetype);

         //if (pent)
         // DrawHudString(40,y+=20,255,255,255, "solid: %d", pent->solid);

         if (/*pent && pent->solid == SOLID_BSP && */tmppen)
         {
            //DrawHudString(40,y+=20,255,255,255, "one");

            vecSrc[0] = bulletvelocity * vecDir[0] + tr.endpos[0];
            vecSrc[1] = bulletvelocity * vecDir[1] + tr.endpos[1];
            vecSrc[2] = bulletvelocity * vecDir[2] + tr.endpos[2];

            flDistance = (flDistance - distfrac) * 0.5;

            vecEnd[0] = vecDir[0] * flDistance + vecSrc[0];
            vecEnd[1] = vecDir[1] * flDistance + vecSrc[1];
            vecEnd[2] = vecDir[2] * flDistance + vecSrc[2];

            distfrac = damage;

            //if (damage > 0 && pent->info == vPlayers[index].index)
            // return damage;

            damage = distfrac * damagemult;
         }
         else
         {
            //DrawHudString(40,y+=20,255,255,255, "two");

            vecSrc[0] = 42.0 * vecDir[0] + tr.endpos[0];
            vecSrc[1] = 42.0 * vecDir[1] + tr.endpos[1];
            vecSrc[2] = 42.0 * vecDir[2] + tr.endpos[2];

            flDistance = (flDistance - distfrac) * 0.75;

            vecEnd[0] = vecDir[0] * flDistance + vecSrc[0];
            vecEnd[1] = vecDir[1] * flDistance + vecSrc[1];
            vecEnd[2] = vecDir[2] * flDistance + vecSrc[2];

            //if (damage > 0 && pent && pent->info == vPlayers[index].index)
            // return damage;

            damage *= 0.75;
         }
      }
      else
         tmppen = 0;

      //if (damage > 0 && tr.ent > 0 && tr.ent < 33)
      // return damage;
   }

   return 0;
}
Back to top
View user's profile Send private message
jucce
Advanced Cheater
Reputation: 1

Joined: 02 Apr 2013
Posts: 99

PostPosted: Thu Apr 25, 2013 3:00 pm    Post subject: Reply with quote

In some games it's possible to change various game constants such as gravity from the console. If that's the case you could keep changing one constant in the console and use CE to scan meanwhile in order to find the memory location. Perhaps it will be possible to use this memory location even when cheats are turned off or when you aren't in control of the server settings. Of course depending on the setup all the movement calculations may be verified and calculated at the game server.
Back to top
View user's profile Send private message
elsword
Cheater
Reputation: 0

Joined: 05 Apr 2013
Posts: 26

PostPosted: Mon May 06, 2013 10:00 pm    Post subject: Reply with quote

i have another question

for example im having this correct pointer :

P>0123ABCD , and the correct address ( found by scanning ) 0123ABCD

pointer's offsets : "Game.exe"+0087B488

so , the question is " is there a way to find the correct offsets ( which is "Game.exe"+0087B488 ) from the address 0123ABCD ?


the purpose of this question is to find the correct offsets without scanning the whole multi leve pointer again

thanks Surprised
Back to top
View user's profile Send private message
Gniarf
Grandmaster Cheater Supreme
Reputation: 43

Joined: 12 Mar 2012
Posts: 1285

PostPosted: Tue May 07, 2013 2:49 am    Post subject: Reply with quote

1-Open memory viewer
2-press ctrl+G, type "game.exe" and press enter. CE will show a "game.exe" in bold.
3-press ctrl+M, the bold game.exe will change into an hex number (usually 400000) called the exe base.
4-Your pointer offset (0087B488) = 0123ABCD - exe base.

But of course that only works with level 0/static pointers. For multi level pointers you can't avoid the pointerscanner (or manual pointer identification).
Back to top
View user's profile Send private message
elsword
Cheater
Reputation: 0

Joined: 05 Apr 2013
Posts: 26

PostPosted: Thu May 09, 2013 8:11 am    Post subject: Reply with quote

more question: how to scan flash games ?

i tried scanning money , obident , health on this game but couldnt find anything valid



askscan.JPG
 Description:
 Filesize:  29.49 KB
 Viewed:  9501 Time(s)

askscan.JPG


Back to top
View user's profile Send private message
jucce
Advanced Cheater
Reputation: 1

Joined: 02 Apr 2013
Posts: 99

PostPosted: Fri May 10, 2013 2:09 pm    Post subject: Reply with quote

elsword wrote:
more question: how to scan flash games ?

i tried scanning money , obident , health on this game but couldnt find anything valid
If you are using Firefox select the process plugin-container.exe. Also often I have more success scanning for increased/decreased value rather than exact values. Frequently the data isn't stored as straight values but 500$ could be a float like 500.00 or even stored with a multiplier like 50 or 50000. Also sometimes the relation between the values displayed and the way it is stored in memory is even more unclear, even requiring arithmetic or byte operations. And of course if the game is multiplayer it usually has protections where the real values are stored on a server.
Back to top
View user's profile Send private message
elsword
Cheater
Reputation: 0

Joined: 05 Apr 2013
Posts: 26

PostPosted: Fri May 10, 2013 7:47 pm    Post subject: Reply with quote

this is a normal flash game , single player , it doesnt use firefox plugin

i tried 2 bytes , 4 bytes , float but still could not find anything , even unknown value with increased / decreased value didnt work

i never thought hacking a simple flash game would be this hard !!!


process list : Shocked



process.JPG
 Description:
 Filesize:  42.49 KB
 Viewed:  9434 Time(s)

process.JPG


Back to top
View user's profile Send private message
elsword
Cheater
Reputation: 0

Joined: 05 Apr 2013
Posts: 26

PostPosted: Sun May 12, 2013 9:46 pm    Post subject: Reply with quote

nobody knows about this ?......
Back to top
View user's profile Send private message
jucce
Advanced Cheater
Reputation: 1

Joined: 02 Apr 2013
Posts: 99

PostPosted: Mon May 13, 2013 6:18 pm    Post subject: Reply with quote

elsword wrote:
nobody knows about this ?......
Are you finding anything from the game like strings and such if you search for that?
Back to top
View user's profile Send private message
HitIer
How do I cheat?
Reputation: 22

Joined: 09 Feb 2013
Posts: 0
Location: Location Location Location

PostPosted: Tue May 14, 2013 2:48 am    Post subject: Re: the art of scanning Reply with quote

elsword wrote:
hello i have some questions about scanning

i can do most basic scan now i want to learn some advanced scan with hard addresses

- let's say im playing a TPS or FPS game, i want to scan the flying speed of the ammo of my gun ( bazooka , rocket launcher etc...) is this even possible ?

- the client trace , even when i miss my target it still hit them

- attack dmg / attack speed / attack range


I think with unknown initial value, you can. but why would you

_________________
With self driving cars, CE can work in real life

t328163 wrote:
Your username derives from the fact that this site cannot format special characters lol.


t328163 wrote:

lmfao, on reddit i'd get banned
Back to top
View user's profile Send private message MSN Messenger
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites