Exemplo n.º 1
0
DWORD WINAPI dwWaitThread( LPVOID lpArgs )
{ 
	DWORD dwBase;
	DbgPrintA("[Hook]dwWaitThread Create",lpArgs);
	if(bInitLOL){
		dwBase=(DWORD)GetModuleHandleA("League of Legends.exe");
		if (dwBase)
		{
			dwBASE_LOL=dwBase;
			InitCode();
		}
	}else if(bInitLOLClient){
		dwBase=(DWORD)GetModuleHandleA("LolClient.exe");
		if (dwBase)
		{
			g_hMemFile_CommandLine = CreateFileMappingA((HANDLE)-1, NULL, PAGE_READWRITE, 0, 0x1000, "zeCommand");
			if (g_hMemFile_CommandLine) {
				
				char* lpAddr;
				lpAddr = (char*)MapViewOfFile(g_hMemFile_CommandLine, FILE_MAP_ALL_ACCESS, 0, 0, 800);	
				strcpy(lpAddr,GetCommandLineA());
				UnmapViewOfFile(lpAddr);
			}			
			//InitCreateFile();
		}
	}
	return 0;
}
Exemplo n.º 2
0
// Initialize internal variables of the compiler
void initialize()
{
	int i;

	ArmVersion=400;  // default ARM version
	// variables for predefined types
	halfword_t IntegerTypeNode;
	halfword_t BooleanTypeNode;
	halfword_t RealTypeNode;
	halfword_t PointerTypeNode;

	// initialization of variables
	for (i=0;i<NB_FILES;i++) Files[i].f=NULL;
    iStackPtr=0;  // declare that no input file is open

    HiPoolMin=POOL_SIZE;
    LoPoolMax=0;

    InitMem();   // memory initialization
    InitStrings();
    InitHTable();
    InitCode();
    InitParse();

	// read the time
	start_time=clock();
	// initialize initial stack value
	initial_stack_value=get_stack_value();

	// Predefined identifier initialisation
	NewSymbol("write",sWRITE,0);
	NewSymbol("writeln",sWRITE,1);
	NewSymbol("sizeof",sSIZEOF,0);

	NewConst("true",TBOOLEAN,1);
	NewConst("false",TBOOLEAN,0);
	NewConst("maxint",TINTEGER,0x7fffffff);

	// predefined types
	IntegerTypeNode=NewType("integer",TINTEGER);
	BooleanTypeNode=NewType("boolean",TBOOLEAN);
	RealTypeNode=NewType("real",TREAL);
	CharTypeNode=NewType("char",TCHAR);
	PointerTypeNode=NewType("pointer",TPOINTER);
	NewType("text",TTEXT);

	NewSymbol("ord", sORDF,0);
	NewSymbol("pred", sORDF,1);
	NewSymbol("succ", sORDF,2);
	NewSymbol("abs",sNUMF,0);
	NewSymbol("sqr",sNUMF,1);
	NewSymbol("chr",sCHR,0);
	NewSymbol("new",sNEW,0);
	NewSymbol("dispose",sNEW,1);

	// predefined inlines functions
	NewInline1("odd",IntegerTypeNode,BooleanTypeNode,-1,1,0xe2100001);
	NewInline1("sqrt",RealTypeNode,RealTypeNode,-2,2,0xE1A0E00F, 	//  MOV lr,pc
											0xE599F000+REALSQRT);
	NewInline1("round",RealTypeNode,IntegerTypeNode,-4,2,0xE1A0E00F,0xE599F000+REALROUND);
	NewInline1("trunc",RealTypeNode,IntegerTypeNode,-4,2,0xE1A0E00F,0xE599F000+REALTRUNC);

	NewInline1("ln",RealTypeNode,RealTypeNode,-4,2,0xE1A0E00F,0xE599F000+REALLN);
	NewInline1("exp",RealTypeNode,RealTypeNode,-4,2,0xE1A0E00F,0xE599F000+REALEXP);
	NewInline1("sin",RealTypeNode,RealTypeNode,-4,2,0xE1A0E00F,0xE599F000+REALSIN);
	NewInline1("cos",RealTypeNode,RealTypeNode,-4,2,0xE1A0E00F,0xE599F000+REALCOS);
	NewInline1("arctan",RealTypeNode,RealTypeNode,-4,2,0xE1A0E00F,0xE599F000+REALATAN);

	NewFunc1("halt",IntegerTypeNode,NADA,HALT);

	NewInlineProc("clrscr",-10,2,0xE1A0E00F,0xE599F000+CLRSCR);

	InputVar=NewVar("input", TTEXT, -36);
	OutputVar=NewVar("output", TTEXT, -24);

	NewSymbol("rewrite",sOPEN,1);
	NewSymbol("reset",sOPEN,0);

	NewSymbol("close",sFILEP,CLOSE);
	NewSymbol("get",sFILEP,GET);
	NewSymbol("put",sFILEP,PUT);

// crt functions
    NewInline1("wherex",NADA,IntegerTypeNode,-4,2,0xE1A0E00F,0xE599F000+WHEREX);
    NewInline1("wherey",NADA,IntegerTypeNode,-4,2,0xE1A0E00F,0xE599F000+WHEREY);
    NewInline1("screenwidth",NADA,IntegerTypeNode,-4,2,0xE1A0E00F,0xE599F000+SCREENWIDTH);
    NewInline1("screenheight",NADA,IntegerTypeNode,-4,2,0xE1A0E00F,0xE599F000+SCREENHEIGHT);

    NewInline2("gotoxy",IntegerTypeNode, IntegerTypeNode, -4,2,0xE1A0E00F,0xE599F000+GOTOXY);

    NewSymbol("read",sREAD,0);
    NewSymbol("readln",sREAD,1);

    NewSymbol("eof",sEOF,0);
    NewSymbol("eoln",sEOF,1);

    NewFunc1("length",StringTypeNode,IntegerTypeNode,LENGTH);
}