All pastes #653845 Raw Edit

Something

public text v1 · immutable
#653845 ·published 2007-08-11 20:56 UTC
rendered paste body
// Search and make code..

#include <idc.idc>

static do_brute(ea, str, end)
{
    auto count;
    count = 0;
    while ((ea = FindUnexplored(ea, SEARCH_DOWN)) != BADADDR && ea < end)
    {
        if (!isCode(ea) && MakeCode(ea))                                             
        {   
            MakeComm(ea, "Rule '" + str + "'");
            if (MakeFunction(ea, BADADDR))
            {
                count++;
            }
        }   
        ea = ea + 4;
    }                   
    Message("%s: %d funcs\n", str, count);                                                   
}

static do_find(ea, str, offset)
{
    auto next1, next2;
    auto count;
    count = 0;
    while ((ea = FindBinary(ea, SEARCH_DOWN, str)) != BADADDR)
    {
        ea = ea + offset;
        if (!isCode(ea) && MakeCode(ea))                                             
        {   
            MakeComm(ea, "Rule '" + str + "'");
            if (MakeFunction(ea, BADADDR))
            {
                count++;
            }
        }   
        ea = ea + 4;
    }                   
    Message("%s: %d funcs\n", str, count);                                                   
}

static main()
{
    auto ea;
    ea = 0;
    
    do_find(ea,"2d e9", -2);            // STMFD = xx xx 2D E9
    do_find(ea, "00 C4 E5", -3);        // STRB = xx 00 C4 E5
    do_find(ea, "00 C4 E1", -3);        // STRH = xx 00 C4 E1
    do_brute(ea, "brute", 0x00245FF8);
}