代码拉取完成,页面将自动刷新
#include "idc.idc"
static dump(addr, file)
{
// find tail
auto ee;
for (ee = NextHead(addr, BADADDR); ee != BADADDR; ee = NextHead(ee, BADADDR))
{
if (Name(ee) != "") break;
}
if (ee == BADADDR) return ;
// make file
GenerateFile(OFILE_ASM, file, addr, ee, 0);
// walk
auto ea;
for (ea = addr; ea != ee; ea = NextHead(ea, BADADDR))
{
auto line = GetDisasm(ea);
auto p = strstr(line, "dd offset ");
if (p != -1)
{
auto soff = substr(line, 10, strlen(line));
auto ploc = LocByName(soff);
Message("%s: %x\n", soff, ploc);
if (ploc != BADADDR)
{
// flags
auto flags = GetFlags(ploc);
// Message("FF_COMM: %d\n", !(flags & FF_COMM));
// dump it
if ((isData(flags) || isUnknown(flags)) && !(flags & FF_COMM) && Name(ploc) != "")
{
// clear flags
SetFlags(ploc, flags | FF_COMM);
// trace
// Message("FF_COMM: %d\n", !(GetFlags(ploc) & FF_COMM));
// dump
dump(ploc, file);
}
}
}
}
}
static main()
{
// flags
auto flags = GetFlags(here);
// is data?
if (!isData(flags) && !isUnknown(flags))
{
Message("export: no data\n");
return ;
}
// has name?
auto name = Name(here);
if (name == "")
{
Message("export: no name\n");
return ;
}
// init filename
auto filename = AskFile(1, "*.asm", "asm file");
if (filename == 0)
{
Warning("export: no file!\n");
return;
}
// init file
auto file = fopen(filename, "w");
if (file == 0)
{
Warning("export: open file %s failed\n", filename);
return;
}
// dump
dump(here, file);
// exit file
fclose(file);
// ok
Message("export: data: ok\n");
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。