Я новичок в написании программ для pintool. Я хочу найти основную функцию целевой программы с помощью PIN-кода. Но я всегда получал UnNamedImageEntryPoint
с SYM_Name () и RTN_Name. Я думаю, что отсутствие символов вызвало это. Так есть ли решение для меня, чтобы найти основную функцию, когда нет символов? Это моя основная функция:
int main(int argc, char *argv[]) {
PIN_InitSymbols();
init_all();
if (PIN_Init(argc, argv)) return Usage();
INS_AddInstrumentFunction(Instructions, 0);
IMG_AddInstrumentFunction(ImageLoad, 0);
PIN_AddFiniFunction(Fini, 0);
PIN_StartProgram();
return 0;
}
И вот как я ищу основную функцию:
VOID ImageLoad(IMG img, VOID *v) {
if (IMG_IsMainExecutable(img)) {
for (SYM sym = IMG_RegsymHead(img); SYM_Valid(sym); sym = SYM_Next(sym)) {
string undFuncName = PIN_UndecorateSymbolName(SYM_Name(sym), UNDECORATION_NAME_ONLY);
output<<undFuncName<<endl;
if (undFuncName == "main") {
RTN_InsertCall(rtn, IPOINT_BEFORE,(AFUNPTR)onMainStarted, IARG_END);
}
}
}
}
Это все undFuncName, которое я получил.
unnamedImageEntryPoint
.text