void ObjTracer::extract_intent( Object * obj ) { InstField *pF1, *pF2; Object *o1, *o2; fprintf( traceFile_, "instUid %u #%d: %p\n", opcodeTracer.get_instUid(), INTENT_OBJ, obj ); // mAction in Intent pF1 = &obj->clazz->ifields[0]; o1 = dvmGetFieldObject ( obj, pF1->byteOffset ); this->extract_str(o1); //mComponent in Intent pF1 = &obj->clazz->ifields[3]; o1 = dvmGetFieldObject ( obj, pF1->byteOffset ); { if (check_obj(o1)) { //mClass in mComponent pF2 = &o1->clazz->ifields[0]; o2 = dvmGetFieldObject ( o1, pF2->byteOffset ); this->extract_str(o2); //mPackage in mComponent pF2 = &o1->clazz->ifields[1]; o2 = dvmGetFieldObject ( o1, pF2->byteOffset ); this->extract_str(o2); } else fprintf(traceFile_, "\n\n"); } //mType in Intent pF1 = &obj->clazz->ifields[6]; o1 = dvmGetFieldObject ( obj, pF1->byteOffset ); this->extract_str(o1); //mPackage in Intent pF1 = &obj->clazz->ifields[7]; o1 = dvmGetFieldObject( obj, pF1->byteOffset ); this->extract_str(o1); //fprintf(f, "\n"); fflush(traceFile_); }
void ObjTracer::extract_str(const Object * const obj, ObjWriteMode flag) { if ( !check_obj ( obj ) ) { ALOG(LOG_VERBOSE, "YWB", "OBJECT NULL"); fprintf(traceFile_, "\n"); return; } else { StringObject * so = (StringObject *) obj; const u2 *s = so->chars(); if ( s == NULL ) { ALOG(LOG_VERBOSE, "YWB","string is null"); return; } this->record_str( obj, s, sizeof(u2) * so->length(), flag ); } }
void fill_list(char **tmp, t_flag tab[], t_obj *obj, t_spot *spot) { static int i = 0; i++; if (is_in_tab(tmp[0], tab) == 1) { check_obj(tmp, i); new_obj(tmp, obj); } else if (my_strcompare("SPOT", tmp[0])) { check_spot(tmp, i); new_spot(tmp, spot); } else { fprintf(stderr, "Unknown object line %d\n", i); exit(EXIT_FAILURE); } }
void my_light(t_rtv *rtv, t_coord *light) { int x; int *color; double norme[3]; x = 0; norme[0] = 0; norme[1] = 0; norme[2] = 50; if (rtv->color != PLAN && rtv->color != 0x00896D) norme[2] = 0; check_obj(rtv, light, norme); color = malloc(sizeof(int) * (rtv->spot.here + 1)); while (x < rtv->spot.here) { light->vx = rtv->spot.tab[x][0] - light->xo; light->vy = rtv->spot.tab[x][1] - light->yo; light->vz = rtv->spot.tab[x][2] - light->zo; color[x++] = make_light(rtv, light, norme); } rtv->color = my_average(color, rtv->spot.here); free(color); }
void ObjTracer::extract_activRecord( const Object * const obj ) { InstField *pF, *pF1; Object *o, *o1; fprintf( traceFile_, "instUid %u #%d: %p\n", opcodeTracer.get_instUid(), ACTREC_OBJ, obj ); //baseDir pF = &obj->clazz->ifields[2]; o = dvmGetFieldObject ( obj, pF->byteOffset ); this->extract_str( o ); //taskAffinity pF = &obj->clazz->ifields[6]; o = dvmGetFieldObject ( obj, pF->byteOffset ); this->extract_str( o ); //dataDir pF = &obj->clazz->ifields[10]; o = dvmGetFieldObject ( obj, pF->byteOffset ); this->extract_str( o ); //stringName pF = &obj->clazz->ifields[11]; o = dvmGetFieldObject ( obj, pF->byteOffset ); this->extract_str( o ); //shortComponentName pF = &obj->clazz->ifields[14]; o = dvmGetFieldObject ( obj, pF->byteOffset ); this->extract_str( o ); //resDir pF = &obj->clazz->ifields[21]; o = dvmGetFieldObject ( obj, pF->byteOffset ); this->extract_str( o ); //realActivity pF = &obj->clazz->ifields[22]; o = dvmGetFieldObject ( obj, pF->byteOffset ); if ( check_obj(o) ) { //mClass in mComponent pF1 = &o->clazz->ifields[0]; o1 = dvmGetFieldObject ( o, pF1->byteOffset ); this->extract_str(o1); //mPackage in mComponent pF1 = &o->clazz->ifields[1]; o1 = dvmGetFieldObject ( o, pF1->byteOffset ); this->extract_str(o1); } else fprintf(traceFile_, "\n\n"); //processName pF = &obj->clazz->ifields[23]; o = dvmGetFieldObject ( obj, pF->byteOffset ); this->extract_str( o ); //intent pF = &obj->clazz->ifields[25]; o = dvmGetFieldObject ( obj, pF->byteOffset ); if (check_obj(o)) { pF1 = &o->clazz->ifields[0]; o1 = dvmGetFieldObject( o, pF1->byteOffset ); this->extract_str(o1); } else fprintf(traceFile_, "\n"); //packageName pF = &obj->clazz->ifields[28]; o = dvmGetFieldObject ( obj, pF->byteOffset ); this->extract_str( o ); //launchedFromUid pF = &obj->clazz->ifields[61]; u4 i = dvmGetFieldInt( obj, pF->byteOffset ); this->record_normal('I', &i ); //fprintf(f, "\n"); fflush(traceFile_); }