Difference between revisions of "Help File:Big endian 2 byte"
								
								Jump to navigation
				Jump to search
				
				
		
 					
								
							
		 (Created page with ' <hr><div align="left"><font face="Arial"  color="#010101"  class="Arial2"> This script will add the 2 byte Big Endian type support to cheat engine</font></div><div align="left">…')  | 
				|||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
| + | [[Category:Help]]  | ||
| + | This script will add the 2 byte Big Endian type support to cheat engine.  | ||
| − | + | ||
| − | + |   alloc(TypeName,256)  | |
| − | alloc(TypeName,256)  | + |   alloc(ByteSize,4)  | 
| − | alloc(ByteSize,4)  | + |   alloc(ConvertRoutine,1024)  | 
| − | alloc(ConvertRoutine,1024)  | + |   alloc(ConvertBackRoutine,1024)  | 
| − | alloc(ConvertBackRoutine,1024)  | + |      | 
| − | TypeName:  | + |      | 
| − | db '2 Byte Big Endian',0  | + |   TypeName:  | 
| − | ByteSize:  | + |   db '2 Byte Big Endian',0  | 
| − | dd 2  | + |      | 
| − | //The convert routine should hold a routine that converts the data to an integer (in eax)  | + |      | 
| − | //function declared as: stdcall int ConvertRoutine(unsigned char *input);  | + |   ByteSize:  | 
| − | //Note: Keep in mind that this routine can be called by multiple threads at the same time.  | + |   dd 2  | 
| − | ConvertRoutine:  | + |      | 
| − | //jmp dllname.functionname  | + |      | 
| − | [64-bit]  | + |   //The convert routine should hold a routine that converts the data to an integer (in eax)  | 
| − | //or manual:  | + |   //function declared as: stdcall int ConvertRoutine(unsigned char *input);  | 
| − | //parameters: (64-bit)  | + |   //Note: Keep in mind that this routine can be called by multiple threads at the same time.  | 
| − | //rcx=address of input  | + |   ConvertRoutine:  | 
| − | xor eax,eax  | + |   //jmp dllname.functionname  | 
| − | mov ax,[rcx] //eax now contains the bytes 'input' pointed to  | + |   [64-bit]  | 
| − | xchg ah,al //convert to big endian  | + |   //or manual:  | 
| − | ret  | + |   //parameters: (64-bit)  | 
| − | [/64-bit]  | + |   //rcx=address of input  | 
| − | [32-bit]  | + |   xor eax,eax  | 
| − | //jmp dllname.functionname  | + |   mov ax,[rcx] //eax now contains the bytes 'input' pointed to  | 
| − | //or manual:  | + |   xchg ah,al //convert to big endian  | 
| − | //parameters: (32-bit)  | + |      | 
| − | push ebp  | + |      | 
| − | mov ebp,esp  | + |   ret  | 
| − | //[ebp+8]=input  | + |   [/64-bit]  | 
| − | //example:  | + |      | 
| − | mov eax,[ebp+8] //place the address that contains the bytes into eax  | + |      | 
| − | mov ax,[eax] //place the bytes into eax so it's handled as a normal 4 byte value  | + |   [32-bit]  | 
| − | and eax,ffff //cleanup  | + |   //jmp dllname.functionname  | 
| − | xchg ah,al //convert to big endian  | + |   //or manual:  | 
| − | pop ebp  | + |   //parameters: (32-bit)  | 
| − | ret 4  | + |   push ebp  | 
| − | [/32-bit]  | + |   mov ebp,esp  | 
| − | //The convert back routine should hold a routine that converts the given integer back to a row of    | + |   //[ebp+8]=input  | 
| − | bytes (e.g when the user wats to write a new value)  | + |   //example:  | 
| − | //function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output);  | + |   mov eax,[ebp+8] //place the address that contains the bytes into eax  | 
| − | ConvertBackRoutine:  | + |   mov ax,[eax] //place the bytes into eax so it's handled as a normal 4 byte value  | 
| − | //jmp dllname.functionname  | + |   and eax,ffff //cleanup  | 
| − | //or manual:  | + |   xchg ah,al //convert to big endian  | 
| − | [64-bit]  | + |      | 
| − | //parameters: (64-bit)  | + |      | 
| − | //ecx=input  | + |   pop ebp  | 
| − | //rdx=address of output  | + |   ret 4  | 
| − | //example:  | + |   [/32-bit]  | 
| − | xchg ch,cl //convert the little endian input into a big endian input  | + |      | 
| − | mov [rdx],cx //place the integer the 4 bytes pointed to by rdx  | + |      | 
| − | ret  | + |   //The convert back routine should hold a routine that converts the given integer back to a row of bytes (e.g when the user wats to write a new value)  | 
| − | [/64-bit]  | + |   //function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output);  | 
| − | [32-bit]  | + |   ConvertBackRoutine:  | 
| − | //parameters: (32-bit)  | + |   //jmp dllname.functionname  | 
| − | push ebp  | + |   //or manual:  | 
| − | mov ebp,esp  | + |   [64-bit]  | 
| − | //[ebp+8]=input  | + |   //parameters: (64-bit)  | 
| − | //[ebp+c]=address of output  | + |   //ecx=input  | 
| − | //example:  | + |   //rdx=address of output  | 
| − | push eax  | + |   //example:  | 
| − | push ebx  | + |   xchg ch,cl //convert the little endian input into a big endian input  | 
| − | mov eax,[ebp+8] //load the value into eax  | + |   mov [rdx],cx //place the integer the 4 bytes pointed to by rdx  | 
| − | mov ebx,[ebp+c] //load the address into ebx  | + |      | 
| − | //convert the value to big endian  | + |      | 
| − | xchg ah,al  | + |   ret  | 
| − | mov [ebx],ax //write the value into the address  | + |   [/64-bit]  | 
| − | pop ebx  | + |      | 
| − | pop eax  | + |      | 
| − | pop ebp  | + |   [32-bit]  | 
| − | ret 8  | + |   //parameters: (32-bit)  | 
| − | [  | + |   push ebp  | 
| + |   mov ebp,esp  | ||
| + |   //[ebp+8]=input  | ||
| + |   //[ebp+c]=address of output  | ||
| + |   //example:  | ||
| + |   push eax  | ||
| + |   push ebx  | ||
| + |   mov eax,[ebp+8] //load the value into eax  | ||
| + |   mov ebx,[ebp+c] //load the address into ebx  | ||
| + |      | ||
| + |      | ||
| + |   //convert the value to big endian  | ||
| + |   xchg ah,al  | ||
| + |      | ||
| + |      | ||
| + |   mov [ebx],ax //write the value into the address  | ||
| + |   pop ebx  | ||
| + |   pop eax  | ||
| + |      | ||
| + |      | ||
| + |   pop ebp  | ||
| + |   ret 8  | ||
| + |   [/32-bit]  | ||
| + | |||
| + | |||
| + | == Links ==  | ||
| + | * [[Cheat Engine:Help File|Help File]]  | ||
| + | |||
| + | * [[Help_File:old_flash_(div_8)|Back]]  | ||
| + | |||
| + | * [[Help_File:Big_endian_4_byte|Next]]  | ||
Latest revision as of 12:01, 19 March 2017
This script will add the 2 byte Big Endian type support to cheat engine.
alloc(TypeName,256) alloc(ByteSize,4) alloc(ConvertRoutine,1024) alloc(ConvertBackRoutine,1024) TypeName: db '2 Byte Big Endian',0 ByteSize: dd 2 //The convert routine should hold a routine that converts the data to an integer (in eax) //function declared as: stdcall int ConvertRoutine(unsigned char *input); //Note: Keep in mind that this routine can be called by multiple threads at the same time. ConvertRoutine: //jmp dllname.functionname [64-bit] //or manual: //parameters: (64-bit) //rcx=address of input xor eax,eax mov ax,[rcx] //eax now contains the bytes 'input' pointed to xchg ah,al //convert to big endian ret [/64-bit] [32-bit] //jmp dllname.functionname //or manual: //parameters: (32-bit) push ebp mov ebp,esp //[ebp+8]=input //example: mov eax,[ebp+8] //place the address that contains the bytes into eax mov ax,[eax] //place the bytes into eax so it's handled as a normal 4 byte value and eax,ffff //cleanup xchg ah,al //convert to big endian pop ebp ret 4 [/32-bit] //The convert back routine should hold a routine that converts the given integer back to a row of bytes (e.g when the user wats to write a new value) //function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output); ConvertBackRoutine: //jmp dllname.functionname //or manual: [64-bit] //parameters: (64-bit) //ecx=input //rdx=address of output //example: xchg ch,cl //convert the little endian input into a big endian input mov [rdx],cx //place the integer the 4 bytes pointed to by rdx ret [/64-bit] [32-bit] //parameters: (32-bit) push ebp mov ebp,esp //[ebp+8]=input //[ebp+c]=address of output //example: push eax push ebx mov eax,[ebp+8] //load the value into eax mov ebx,[ebp+c] //load the address into ebx //convert the value to big endian xchg ah,al mov [ebx],ax //write the value into the address pop ebx pop eax pop ebp ret 8 [/32-bit]