Difference between revisions of "Help File:Value types"

From Cheat Engine
Jump to navigation Jump to search
(Created page with ' <hr><div align="left"><font face="Arial" color="#010100" class="Arial3"><br></font><font face="Arial" color="#010101" class="Arial1"><b>Binary</b><br> The binary scan is a s…')
 
Line 1: Line 1:
 +
; Binary
 +
: The binary scan is a slow but powerful scan.
 +
It will scan between bytes for a value.
  
<hr><div align="left"><font face="Arial"  color="#010100"  class="Arial3"><br></font><font face="Arial"  color="#010101"  class="Arial1"><b>Binary</b><br>
+
Also, if you want to search for a array of bits that possible too, it even allows wildcard(?,*) instead of the normal 1's and 0's. This allows you to do a search like 1101?001, which will give the results of all addresses+bit that have either 11010001 or 11011001. (More wildcards in a string are allowed)
The binary scan is a slow but powerful scan.<br>
+
 
It will scan between bytes for a value<br>
+
The range of a bitscan can be as long as you like. (as long as it fits in the memory)
Also, if you want to search for a array of bits that possible too, it even allows wildcard(?,*) instead of the  
+
 
normal 1's and 0's. This allows you to do a search like 1101?001, which will give the results of all  
+
If you're wondering if this is useful:  
addresses+bit that have either 11010001 or 11011001. (More wildcards in a string are allowed)<br><br>
+
 
The range of a bitscan can be as long as you like. (as long as it fits in the memory)<br><br>
+
Lets say a program stores the following values as follow:
If you're wondering if this is useful: <br>
+
  100=1001100100110110
Lets say a program stores the following values as follow:<br>
+
  200=1011001000101001
100=1001100100110110<br>
+
  300=1100101100110110
200=1011001000101001<br>
+
 
300=1100101100110110<br><br>
+
Also note that in normal binary notation the following values are:
also note that in normal binary notation the following values are:<br>
+
  100=1100100
100=1100100<br>
+
  200=11001000
200=11001000<br>
+
  300=100101100
300=100101100<br><br>
+
 
now, if you look at the above example you'll notice that the binary value of 100 does apear in the binary that  
+
Now, if you look at the above example you'll notice that the binary value of 100 does apear in the binary that represents 100, but has a 1 as last bit, and the first few bits are random (read from right to left) , same for 200 and 300, with the binary scan you can scan for the binary representation of the values 100-200 or 300.
represents 100, but has a 1 as last bit, and the first few bits are random (read from right to left) , same for  
+
 
200 and 300, with the binary scan you can scan for the binary representation of the values 100-200 or 300.<br><br><b>Byte</b> (8-bits)<br>
+
 
A byte is a value that can hold a number between 0 and 255 or -128 to 127. (The last one if it is a </font><a href="Signedvalue.htm"><font face="Arial"  color="#0000ff"  class="Arial1"><u>signed  
+
; Byte (8-bits)
value </u></font></a><font face="Arial"  color="#010101"  class="Arial1">
+
: A byte is a value that can hold a number between 0 and 255 or -128 to 127. (The last one if it is a signed value)
)<br>
+
: 1-byte values aren't used much except for 8-bit emulators, etc... Even though a 1-byte scan seems useless, it will normally find the value when you don't know for sure if the value is either 1-byte, 2-bytes, 4-bytes, or 8-bytes, that is because all those types are build from this base type.
1-byte values aren't used much except for 8-bit emulators, etc... Even though a 1-byte scan seems useless,  
+
 
it will normally find the value when you don't know for sure if the value is either 1-byte, 2-bytes, 4-bytes, or 8-bytes, that is because all those types are build from this base type.<br><br>
+
Of course, the number of initial addresses you'll find doing a 1 byte scan is very big, and it will take a while to find the address you're looking for, but at least the change of finding it is higher.
Of course, the number of initial addresses you'll find doing a 1 byte scan is very big, and it will take a while to  
+
 
find the address you're looking for, but at least the change of finding it is higher.<br><br><b>2 bytes</b> (16-bits / WORD)<br>
+
 
a &quot;2 Byte&quot; value can hold a number between 0 and 65536 or -32768 to 32767 (The last one if it is a </font><a href="Signedvalue.htm"><font face="Arial"  color="#0000ff"  class="Arial1"><u>signed  
+
; 2 bytes (16-bits / WORD)
value</u></font></a><font face="Arial"  color="#010101"  class="Arial1">
+
: a "2 Byte" value can hold a number between 0 and 65536 or -32768 to 32767 (The last one if it is a signed value)
)<br>
+
: "2 byte" values are used in old dos games, and other 16-bit applications.
&quot;2 byte&quot; values are used in old dos games, and other 16-bit applications.<br><br><br><b>4 bytes</b> (32-bits / DWORD)<br>
+
 
a &quot;4 byte&quot; value can hold a number between 0..4294967295 or -2147483648 and 2147483647 (The last one  
+
 
if it is a </font><a href="Signedvalue.htm"><font face="Arial"  color="#0000ff"  class="Arial1"><u>signed value </u></font></a><font face="Arial"  color="#010101"  class="Arial1">
+
; 4 bytes (32-bits / DWORD)
)<br>
+
: a "4 byte" value can hold a number between 0..4294967295 or -2147483648 and 2147483647 (The last one if it is a signed value)
&quot;4 byte&quot; values are the standard way of storing information in a windows system. So doing a 4-byte scan will  
+
: "4 byte" values are the standard way of storing information in a windows system. So doing a 4-byte scan will normally give the best results.
normally give the best results.<br><br><b>8 bytes</b> (64-bits / QWORD)<br>
+
 
a &quot;8 byte&quot; value can hold a number between 9223372036854775808 and 9223372036854775807 (no need  
+
 
for unsigned values anymore)<br>
+
; 8 bytes (64-bits / QWORD)
&quot;8 bytes&quot; aren't used often because they take up a lot of space, and require extra processing. (except for 64-bit processors)<br>
+
: a "8 byte" value can hold a number between 9223372036854775808 and 9223372036854775807 (no need for unsigned values anymore)
Some programs do use them though, and scanning for a &quot;8-byte&quot; value doesn't return many addresses, so  
+
: "8 bytes" aren't used often because they take up a lot of space, and require extra processing. (except for 64-bit processors)
finding the right one is easy then.<br><br>
+
 
If the address you're looking for is smaller than 8 bytes, the chance that the scan has skipped that address is  
+
Some programs do use them though, and scanning for a "8-byte" value doesn't return many addresses, so finding the right one is easy then.
big.<br><br><b>Float/Single</b> (32-bits) (IEEE standard)<br>
+
 
a &quot;Single&quot; value can hold a number between 1.5 x 10^-45 and 3.4 x 10^38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<br><br>
+
If the address you're looking for is smaller than 8 bytes, the chance that the scan has skipped that address is big.
This is one of the 2 standard floating-point value allocations. (IEEE) The other one is DOUBLE<br>
+
 
A Single consists of 4 bytes, which is build up in a special way, which is VERY different from normal  
+
 
variables! (so normal byte scanning wont work)<br><br>
+
; Float/Single (32-bits) (IEEE standard)
Cheat Engine rounds values up/down till the number of digits you specify in the scan value box.<br>
+
: a "Single" value can hold a number between 1.5 x 10^-45 and 3.4 x 10^38                             .
e.g.:if you scan for 12 it will find all values between 11.5 and 12.4 and 12.0 results in values between 11.95  
+
 
and 12.04<br><br><b>Double</b> (64-bits) (IEEE standard)<br>
+
This is one of the 2 standard floating-point value allocations. (IEEE) The other one is DOUBLE
Basically the same as Single, except the data-length is longer (more precise) but the range is between 5.0 x  
+
A Single consists of 4 bytes, which is build up in a special way, which is VERY different from normal variables! (so normal byte scanning wont work)
10^-324 and 1.7 x 10^308&nbsp;&nbsp;<br><br><br><b>Text</b><br>
+
 
The &quot;Text&quot; scan value can be used to scan the memory of a game for text. E.g: if you know that 12 bytes  
+
Cheat Engine rounds values up/down till the number of digits you specify in the scan value box.
after your name as a variable you need you can use that to recalculate the addresses each time a game  
+
e.g.:if you scan for 12 it will find all values between 11.5 and 12.4 and 12.0 results in values between 11.95 and 12.04
restarts.</font></div><div align="left"><font face="Arial"  color="#010101"  class="Arial1">
+
 
Text scans are in UTF-8 or UTF-16<br><br><b>Array of byte</b><br>
+
 
Same as text, but uses a array of byte instead of characters, and supports wildcards.<br>
+
; Double (64-bits) (IEEE standard)
input:<br>
+
: Basically the same as Single, except the data-length is longer (more precise) but the range is between 5.0 x 10^-324 and 1.7 x 10^308
xx xx xx xx ...<br>
+
 
xx ?? xx xx<br>
+
 
xx ** xx xx<br><br>
+
; Text
An array of byte (AoB) scan can be useful when you know that prior to the address you need is always a  
+
: The "Text" scan value can be used to scan the memory of a game for text. E.g: if you know that 12 bytes after your name as a variable you need you can use that to recalculate the addresses each time a game restarts.
specific occurrence of bytes. (like: 66 66 66 10 10, and 4 bytes after that is your health which is stored as 1  
+
: Text scans are in UTF-8 or UTF-16
byte. Scanning for 1 byte will take a lot longer than scanning for this string of bytes. Scanning for this string  
+
 
will probably only result 1 address, where as scanning for 1 byte will return thousands of addresses the first  
+
 
time)<br><br><b>All</b><br>
+
; Array of byte
A combination of byte, 2 bytes, 4 bytes, 8 bytes, single and double data-types (basically the numeric ones).<br><br><b>Custom</b><br>
+
: Same as text, but uses a array of byte instead of characters, and supports wildcards.
Lets you assign an lua or auto assembler script where you can fill in how certain bytes should be interpreted  
+
input:
as a decimal value and the other way arround</font></div><div align="left"><font face="Arial"  color="#010101"  class="Arial1"><br></font></div><div align="left"><font face="Arial"  color="#010101"  class="Arial1">
+
  xx xx xx xx ...
To create a custom scan script, right-click on the value type box and select the option from the menu.</font></div><div align="left"><font face="Arial"  color="#010101"  class="Arial1"><br></font></div><div align="left"><font face="Arial"  color="#010101"  class="Arial1">
+
  xx ?? xx xx
To delete or edit a custom scanscript, select it and press right-click. Then choose Edit or Delete from the  
+
  xx ** xx xx
menu. </font></div><div align="left">&nbsp;&nbsp;</div>
+
 
 +
An array of byte (AoB) scan can be useful when you know that prior to the address you need is always a specific occurrence of bytes. (like: 66 66 66 10 10, and 4 bytes after that is your health which is stored as 1 byte. Scanning for 1 byte will take a lot longer than scanning for this string of bytes. Scanning for this string will probably only result 1 address, where as scanning for 1 byte will return thousands of addresses the first time)
 +
 
 +
 
 +
; All
 +
: A combination of byte, 2 bytes, 4 bytes, 8 bytes, single and double data-types (basically the numeric ones).
 +
 
 +
 
 +
; Custom
 +
: Lets you assign an lua or auto assembler script where you can fill in how certain bytes should be interpreted as a decimal value and the other way arround.
 +
 
 +
To create a custom scan script, right-click on the value type box and select the option from the menu.
 +
 
 +
To delete or edit a custom scanscript, select it and press right-click. Then choose Edit or Delete from the menu.  
 +
 
 +
[[Help_File:Custom type examples|Custom type examples]]
 +
 
 +
 
 +
== Links ==
 +
* [[Cheat Engine:Help File|Help File]]
 +
 
 +
* [[Help_File:Scan_types|Back]]
 +
 
 +
* [[Help File:Money_type|Next]]

Revision as of 07:38, 10 March 2017

Binary
The binary scan is a slow but powerful scan.

It will scan between bytes for a value.

Also, if you want to search for a array of bits that possible too, it even allows wildcard(?,*) instead of the normal 1's and 0's. This allows you to do a search like 1101?001, which will give the results of all addresses+bit that have either 11010001 or 11011001. (More wildcards in a string are allowed)

The range of a bitscan can be as long as you like. (as long as it fits in the memory)

If you're wondering if this is useful:

Lets say a program stores the following values as follow:

 100=1001100100110110
 200=1011001000101001
 300=1100101100110110

Also note that in normal binary notation the following values are:

 100=1100100
 200=11001000
 300=100101100

Now, if you look at the above example you'll notice that the binary value of 100 does apear in the binary that represents 100, but has a 1 as last bit, and the first few bits are random (read from right to left) , same for 200 and 300, with the binary scan you can scan for the binary representation of the values 100-200 or 300.


Byte (8-bits)
A byte is a value that can hold a number between 0 and 255 or -128 to 127. (The last one if it is a signed value)
1-byte values aren't used much except for 8-bit emulators, etc... Even though a 1-byte scan seems useless, it will normally find the value when you don't know for sure if the value is either 1-byte, 2-bytes, 4-bytes, or 8-bytes, that is because all those types are build from this base type.

Of course, the number of initial addresses you'll find doing a 1 byte scan is very big, and it will take a while to find the address you're looking for, but at least the change of finding it is higher.


2 bytes (16-bits / WORD)
a "2 Byte" value can hold a number between 0 and 65536 or -32768 to 32767 (The last one if it is a signed value)
"2 byte" values are used in old dos games, and other 16-bit applications.


4 bytes (32-bits / DWORD)
a "4 byte" value can hold a number between 0..4294967295 or -2147483648 and 2147483647 (The last one if it is a signed value)
"4 byte" values are the standard way of storing information in a windows system. So doing a 4-byte scan will normally give the best results.


8 bytes (64-bits / QWORD)
a "8 byte" value can hold a number between 9223372036854775808 and 9223372036854775807 (no need for unsigned values anymore)
"8 bytes" aren't used often because they take up a lot of space, and require extra processing. (except for 64-bit processors)

Some programs do use them though, and scanning for a "8-byte" value doesn't return many addresses, so finding the right one is easy then.

If the address you're looking for is smaller than 8 bytes, the chance that the scan has skipped that address is big.


Float/Single (32-bits) (IEEE standard)
a "Single" value can hold a number between 1.5 x 10^-45 and 3.4 x 10^38 .

This is one of the 2 standard floating-point value allocations. (IEEE) The other one is DOUBLE A Single consists of 4 bytes, which is build up in a special way, which is VERY different from normal variables! (so normal byte scanning wont work)

Cheat Engine rounds values up/down till the number of digits you specify in the scan value box. e.g.:if you scan for 12 it will find all values between 11.5 and 12.4 and 12.0 results in values between 11.95 and 12.04


Double (64-bits) (IEEE standard)
Basically the same as Single, except the data-length is longer (more precise) but the range is between 5.0 x 10^-324 and 1.7 x 10^308


Text
The "Text" scan value can be used to scan the memory of a game for text. E.g: if you know that 12 bytes after your name as a variable you need you can use that to recalculate the addresses each time a game restarts.
Text scans are in UTF-8 or UTF-16


Array of byte
Same as text, but uses a array of byte instead of characters, and supports wildcards.

input:

 xx xx xx xx ...
 xx ?? xx xx
 xx ** xx xx

An array of byte (AoB) scan can be useful when you know that prior to the address you need is always a specific occurrence of bytes. (like: 66 66 66 10 10, and 4 bytes after that is your health which is stored as 1 byte. Scanning for 1 byte will take a lot longer than scanning for this string of bytes. Scanning for this string will probably only result 1 address, where as scanning for 1 byte will return thousands of addresses the first time)


All
A combination of byte, 2 bytes, 4 bytes, 8 bytes, single and double data-types (basically the numeric ones).


Custom
Lets you assign an lua or auto assembler script where you can fill in how certain bytes should be interpreted as a decimal value and the other way arround.

To create a custom scan script, right-click on the value type box and select the option from the menu.

To delete or edit a custom scanscript, select it and press right-click. Then choose Edit or Delete from the menu.

Custom type examples


Links