1
0
Fork 0

DBG: small performance optimizations

This commit is contained in:
mrexodia 2016-06-04 20:24:34 +02:00
parent e2181da7a2
commit 60034795e5
No known key found for this signature in database
GPG Key ID: D72F9A4FAA0073B4
4 changed files with 7 additions and 7 deletions

View File

@ -73,7 +73,7 @@ extern "C" DLL_EXPORT bool _dbg_memmap(MEMMAP* memmap)
extern "C" DLL_EXPORT bool _dbg_memisvalidreadptr(duint addr)
{
return MemIsValidReadPtr(addr);
return MemIsValidReadPtr(addr, true);
}
extern "C" DLL_EXPORT bool _dbg_valfromstring(const char* string, duint* value)
@ -137,7 +137,7 @@ static bool getLabel(duint addr, char* label)
{
BASIC_INSTRUCTION_INFO basicinfo;
memset(&basicinfo, 0, sizeof(BASIC_INSTRUCTION_INFO));
if(disasmfast(addr, &basicinfo) && basicinfo.branch && !basicinfo.call && basicinfo.memory.value) //thing is a JMP
if(disasmfast(addr, &basicinfo, true) && basicinfo.branch && !basicinfo.call && basicinfo.memory.value) //thing is a JMP
{
duint val = 0;
if(MemRead(basicinfo.memory.value, &val, sizeof(val), nullptr, true))
@ -584,7 +584,7 @@ extern "C" DLL_EXPORT int _dbg_getbplist(BPXTYPE type, BPMAP* bpmap)
extern "C" DLL_EXPORT duint _dbg_getbranchdestination(duint addr)
{
unsigned char data[MAX_DISASM_BUFFER];
if(!MemIsValidReadPtr(addr) || !MemRead(addr, data, sizeof(data)))
if(!MemIsValidReadPtr(addr, true) || !MemRead(addr, data, sizeof(data)))
return 0;
Capstone cp;
if(!cp.Disassemble(addr, data))

View File

@ -105,10 +105,10 @@ bool disasmfast(const unsigned char* data, duint addr, BASIC_INSTRUCTION_INFO* b
return true;
}
bool disasmfast(duint addr, BASIC_INSTRUCTION_INFO* basicinfo)
bool disasmfast(duint addr, BASIC_INSTRUCTION_INFO* basicinfo, bool cache)
{
unsigned int data[16];
if(!MemRead(addr, data, sizeof(data)))
if(!MemRead(addr, data, sizeof(data), nullptr, cache))
return false;
return disasmfast((unsigned char*)data, addr, basicinfo);
}

View File

@ -5,7 +5,7 @@
#include <capstone_wrapper.h>
void fillbasicinfo(Capstone* disasm, BASIC_INSTRUCTION_INFO* basicinfo, bool instrText = true);
bool disasmfast(duint addr, BASIC_INSTRUCTION_INFO* basicinfo);
bool disasmfast(duint addr, BASIC_INSTRUCTION_INFO* basicinfo, bool cache = false);
bool disasmfast(const unsigned char* data, duint addr, BASIC_INSTRUCTION_INFO* basicinfo);
#endif //_DISASM_FAST_H

View File

@ -276,7 +276,7 @@ bool MemRead(duint BaseAddress, void* Buffer, duint Size, duint* NumberOfBytesRe
if(!MemIsCanonicalAddress(BaseAddress))
return false;
if(cache && !MemIsValidReadPtr(BaseAddress))
if(cache && !MemIsValidReadPtr(BaseAddress, cache))
return false;
// Buffer must be supplied and size must be greater than 0