int main(int argc, char *argv[]) { PIN_InitSymbols(); if( PIN_Init(argc, argv)) { return usage(); } traceFile.open(outputFile.Value().c_str()); string trace_header = string("#\n" "# Shellcode detector\n" "#\n\nMAX_LEGIT_INSTRUCTION_LOG_SIZE : ") + KnobMaxLegitInsLogSize.ValueString() + "\n\n"; for ( UINT32 i = 0; i < KnobModuleConcerned.NumberOfValues(); i++ ) { LOG( "[+] ... " + KnobModuleConcerned.Value(i) + "\n" ); modlist.insert( KnobModuleConcerned.Value(i) ); } traceFile.write(trace_header.c_str(), trace_header.size()); INS_AddInstrumentFunction(traceInst, 0); PIN_AddFiniFunction(fini, 0); // Never returns PIN_StartProgram(); return 0; }