7 uint64_t remainingBytesToCopy = length;
10 while (remainingBytesToCopy) {
12 uint8_t* shadowPageCopyBeginAddress = showPageStartAddress +
PAGE_OFFSET((uint64_t)curAddress);
13 uint64_t bytesToCopy = (remainingBytesToCopy <
PAGE_SIZE ? remainingBytesToCopy :
PAGE_SIZE);
14 memcpy(shadowPageCopyBeginAddress, originalAddress, bytesToCopy);
15 remainingBytesToCopy -= bytesToCopy;
16 curAddress += bytesToCopy;
23 uint32_t numRegions = IMG_NumRegions(img);
25 for (uint32_t regionIndex = 0; regionIndex < numRegions; regionIndex++) {
26 ADDRINT regionLowAddr = IMG_RegionLowAddress(img, regionIndex);
28 ADDRINT regionHighAddr = IMG_RegionHighAddress(img, regionIndex);
uint8_t * GetOrCreateShadowBaseAddress(void *address)
#define PAGE_OFFSET(addr)
static VOID ImageLoad(IMG img, VOID *v)
static void CopyRegionToShadowMemory(uint8_t *address, uint64_t length)