MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / BNKCViewGetAllImages

Function BNKCViewGetAllImages

view/kernelcache/core/KernelCache.cpp:2270–2297  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2268 }
2269
2270 BNKCImage* BNKCViewGetAllImages(BNKernelCache* cache, size_t* count)
2271 {
2272 if (cache->object)
2273 {
2274 auto viewImageHeaders = cache->object->AllImageHeaders();
2275 *count = viewImageHeaders.size();
2276 BNKCImage* images = (BNKCImage*)malloc(sizeof(BNKCImage) * viewImageHeaders.size());
2277 size_t i = 0;
2278 for (const auto& [baseAddress, header] : viewImageHeaders)
2279 {
2280 images[i].name = BNAllocString(header.installName.c_str());
2281 images[i].headerFileAddress = baseAddress;
2282 images[i].mappingCount = header.sections.size();
2283 images[i].mappings = (BNKCImageMemoryMapping*)malloc(sizeof(BNKCImageMemoryMapping) * header.sections.size());
2284 for (size_t j = 0; j < header.sections.size(); j++)
2285 {
2286 images[i].mappings[j].rawViewOffset = header.sections[j].offset;
2287 images[i].mappings[j].vmAddress = header.sections[j].addr;
2288 images[i].mappings[j].size = header.sections[j].size;
2289 images[i].mappings[j].name = BNAllocString(header.sectionNames[j].c_str());
2290 }
2291 i++;
2292 }
2293 return images;
2294 }
2295 *count = 0;
2296 return nullptr;
2297 }
2298
2299 void BNKCViewFreeAllImages(BNKCImage* images, size_t count)
2300 {

Callers 1

GetImagesMethod · 0.85

Calls 3

AllImageHeadersMethod · 0.80
c_strMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected