#include static pktsearch() { auto str, num; auto ea, ed, opcode, arg; auto cCounter; auto lHandle; auto fName, fCounter; auto getBYTE, getWORD, getDWORD, getString, getBuffer; auto wantBYTE, wantWORD, wantDWORD, wantString, wantBuffer; wantBYTE = 1; wantWORD = 2; wantDWORD = 1; wantString = -1; wantBuffer = -1; lHandle = fopen(GetInputFilePath() + "_search.txt", "w"); if (lHandle == 0) { Message("Failed to open log file\n"); return; } //ea = ScreenEA(); ea = FirstSeg(); ed = SegEnd(ea); Message(form("Beginning search from 0x%08X...\n", ea)); cCounter = 0; fCounter = 0; fName = ""; while (ea < ed) { str = GetFunctionName(ea); if (str != fName) { if (fName != "") { if ((wantBYTE < 0 || getBYTE == wantBYTE) && (wantWORD < 0 || getWORD == wantWORD) && (wantDWORD < 0 || getDWORD == wantDWORD) && (wantString < 0 || getString == wantString) && (wantBuffer < 0 || getBuffer == wantBuffer)) { fprintf(lHandle, "%s\n", fName); } } getBYTE = 0; getWORD = 0; getDWORD = 0; getString = 0; getBuffer = 0; fName = str; } if (fName != "") { opcode = GetMnem(ea); if (opcode == "call") { arg = GetOpnd(ea, 0); if (arg == "fPacketGetBYTE") { getBYTE++; } else if (arg == "fPacketGetWORD") { getWORD++; } else if (arg == "fPacketGetDWORD") { getDWORD++; } else if (arg == "fPacketGetString") { getString++; } else if (arg == "fPacketGetBuffer") { getBuffer++; } } } ea = ItemEnd(ea); } fclose(lHandle); } static main() { pktsearch(); }