1
0
Fork 0

DBG: added dis.isnop and dis.isunusual

This commit is contained in:
mrexodia 2016-11-18 08:27:38 +01:00
parent 58bf10ab41
commit 5167a040d9
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
3 changed files with 28 additions and 0 deletions

View File

@ -83,6 +83,8 @@ void ExpressionFunctions::Init()
RegisterEasy("dis.isret", disisret);
RegisterEasy("dis.iscall", disiscall);
RegisterEasy("dis.ismem", disismem);
RegisterEasy("dis.isnop", disisnop);
RegisterEasy("dis.isunusual", disisunusual);
RegisterEasy("dis.branchdest", disbranchdest);
RegisterEasy("dis.branchexec", disbranchexec);
RegisterEasy("dis.imm", disimm);

View File

@ -155,6 +155,30 @@ namespace Exprfunc
return (info.type & TYPE_MEMORY) == TYPE_MEMORY;
}
duint disisnop(duint addr)
{
unsigned char data[16];
if(MemRead(addr, data, sizeof(data), nullptr, true))
{
Capstone cp;
if(cp.Disassemble(addr, data))
return cp.IsNop();
}
return false;
}
duint disisunusual(duint addr)
{
unsigned char data[16];
if(MemRead(addr, data, sizeof(data), nullptr, true))
{
Capstone cp;
if(cp.Disassemble(addr, data))
return cp.IsUnusual();
}
return false;
}
duint disbranchdest(duint addr)
{
return DbgGetBranchDestination(addr);

View File

@ -32,6 +32,8 @@ namespace Exprfunc
duint disisret(duint addr);
duint disiscall(duint addr);
duint disismem(duint addr);
duint disisnop(duint addr);
duint disisunusual(duint addr);
duint disbranchdest(duint addr);
duint disbranchexec(duint addr);
duint disimm(duint addr);