리버싱

PinTool BBL 개수 출력

삼전동해커 2022. 2. 15. 16:10
#include "pin.H"
#include<fstream>
#include<iostream>

// FILE *trace;

UINT32 nbl = 0;

VOID printnbbl(UINT32 nb){
    fprintf(trace,"%d",nb);
}

VOID Trace(TRACE trace,VOID *v){
    nbl = TRACE_NumBbl(trace);
}

VOID Fini(INT32 code, VOID *v) {
    printf("count = %ld\n",(long)nbl);
}

INT32 Usage(VOID) {
    PIN_ERROR("This Pintool failed\n"
          + KNOB_BASE::StringKnobSummary() + "\n");
    return -1;
}

int main(int argc, char *argv[]){

    // trace = fopen("trace.out","w");

    if(PIN_Init(argc,argv)){
        return Usage();
    }

    PIN_InitSymbols();
    TRACE_AddInstrumentFunction(Trace,0);
    PIN_AddFiniFunction(Fini,0);

    PIN_StartProgram();

    return 0;
}