Example #1
0
void createHook (void *pNewTcb)
{
    char *name = (char*)(*(long*)((char*)pNewTcb+0x34));
    long *entry = (long*)((char*)pNewTcb+0x74);

    // always hook first task creation
    // to create SpyProc
    if (!stop_hooking){
	taskprev = (void*)(*entry);
	*entry = (long)task_start_hook;
	stop_hooking = 1;
    } else {
	// hook/replace another tasks
	if (my_ncmp(name, "tSwitchChe", 10) == 0){
	    *entry = (long)mykbd_task;
	}
	if (my_ncmp(name, "tInitFileM", 10) == 0){
	    taskfsprev = (void*)(*entry);
	    *entry = (long)task_fs;
	}

	if (my_ncmp(name, "tCaptSeqTa", 10) == 0){
	    *entry = (long)capt_seq_hook;
	}

	if (my_ncmp(name, "tMovieRecT", 10) == 0){
	    *entry = (long)movie_record_hook;
	}

	core_hook_task_create(pNewTcb);
    }
}
Example #2
0
void createHook (void *pNewTcb)
{
    char *name = (char*)(*(long*)((char*)pNewTcb+0x34));
    long *entry = (long*)((char*)pNewTcb+0x74);
    
    //volatile long *p; p=(void*) 0xc02200E0; *p=0x46; //debug led
    
    // always hook first task creation
    // to create SpyTask
    if (!stop_hooking){
        taskprev = (void*)(*entry);
        *entry = (long)task_start_hook;
        stop_hooking = 1;
    }else{
        // hook/replace another tasks
        // Replace the call to "SwitchCheckTask" with our own procedure
        if (my_ncmp(name, "tSwitchChe", 10) == 0){
            *entry = (long)mykbd_task;
        }
        
        // Replace the call to "InitFileModules" with our own procedure
        if (my_ncmp(name, "tInitFileM", 10) == 0){
            taskfsprev = (void*)(*entry);
            *entry = (long)task_fs;
        }
        
        // Replace the call to "CaptSeqTask" with our own procedure
        if (my_ncmp(name, "tCaptSeqTa", 10) == 0){
            *entry = (long)capt_seq_hook;
        }

        if (my_ncmp(name, "tMovieRecT", 10) == 0){
            *entry = (long)movie_record_hook;
        }

core_hook_task_create(pNewTcb);
}
	}