42 lines
		
	
	
		
			977 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			977 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef __ASM_H__
 | 
						|
#define __ASM_H__
 | 
						|
 | 
						|
#define OP_JMP				0xE9
 | 
						|
#define OP_JMP_SIZE			5
 | 
						|
#define X64_ABS_SIZE		14
 | 
						|
 | 
						|
#define OP_NOP				0x90
 | 
						|
#define OP_NOP_SIZE			1
 | 
						|
 | 
						|
#define OP_PREFIX			0xFF
 | 
						|
#define OP_JMP_SEG			0x25
 | 
						|
 | 
						|
#define OP_JMP_BYTE			0xEB
 | 
						|
#define OP_JMP_BYTE_SIZE	2
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
void check_thunks(unsigned char *dest, unsigned char *pc);
 | 
						|
 | 
						|
//if dest is NULL, returns minimum number of bytes needed to be copied
 | 
						|
//if dest is not NULL, it will copy the bytes to dest as well as fix CALLs and JMPs
 | 
						|
//http://www.devmaster.net/forums/showthread.php?t=2311
 | 
						|
int copy_bytes(unsigned char *func, unsigned char* dest, int required_len);
 | 
						|
 | 
						|
//insert a specific JMP instruction at the given location
 | 
						|
void inject_jmp(void* src, void* dest);
 | 
						|
 | 
						|
//fill a given block with NOPs
 | 
						|
void fill_nop(void* src, unsigned int len);
 | 
						|
 | 
						|
//evaluate a JMP at the target
 | 
						|
void* eval_jump(void* src);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif //__ASM_H__
 |