Example #1
0
VOID InstructionProp(INS ins, VOID *v)
{
	PIN_LockClient();
	for (IMG image = APP_ImgHead();image!=IMG_Invalid();image=IMG_Next(image))
	{
		inst_func_summary(image);
	}
	PIN_UnlockClient();

}
static IMG FindNamedImg(const string& imgName)
{
    // Visit every loaded image
    for (IMG img= APP_ImgTail(); IMG_Valid(img); img = IMG_Prev(img))
    {
        if (IMG_Name(img) == imgName)
            return img;
    }
    return IMG_Invalid();
}
Example #3
0
IMG GetImgByTrace(TRACE trace) {
  IMG img = IMG_Invalid();
  RTN rtn = TRACE_Rtn(trace);
  if (RTN_Valid(rtn)) {
    SEC sec = RTN_Sec(rtn);
    if (SEC_Valid(sec)) {
      img = SEC_Img(sec);
    }
  }
  return img;
}
Example #4
0
int main(int argc, char * argv[])
{
    // Initialize symbol table code, needed for rtn instrumentation
    PIN_InitSymbols();

    // Initialize pin
    if (PIN_Init(argc, argv)) return Usage();

    IMG img = IMG_Open(argv[argc-1]);
    if(img == IMG_Invalid( ) ) {
      printf("Can't open file %s\n", argv[argc-1]);
      return 1;
    }


    PIN_AddFiniFunction(FINI_CALLBACK(my_fini), NULL);

    IMG_AddInstrumentFunction(ImageLoad, 0);

    // Start the program, never returns
    PIN_StartProgram();
    return 0;
}