优化函数增强可读性和时间复杂度可以修改变量命名typedef struct uint32_t old_func; 这里包含基准地址 uint32_t new_func; uint32_t count; vectoruint32_t old_pos_v; 此处不包含基准地址 vectoruint32_t new_pos_v; 此
typedef struct { uint32_t old_function; uint32_t new_function; uint32_t count; vector<uint32_t> old_positions; vector<uint32_t> new_positions; } AddressMapping;
unordered_multimap<uint32_t, AddressMapping> normalFunctionAddressMap;
int32_t saveNormalFunctionAddress(uint32_t oldFunction, uint32_t newFunction, uint32_t oldPosition, uint32_t newPosition, bool countFlag) { auto range = normalFunctionAddressMap.equal_range(oldFunction);
for (auto iter = range.first; iter != range.second; iter++)
{
if (iter->second.new_function == newFunction)
{
if (countFlag)
{
iter->second.count++;
}
iter->second.old_positions.push_back(oldPosition);
iter->second.new_positions.push_back(newPosition);
return 0;
}
}
AddressMapping addressMapping;
if (countFlag)
{
addressMapping.count++;
}
addressMapping.old_function = oldFunction;
addressMapping.new_function = newFunction;
addressMapping.old_positions.push_back(oldPosition);
addressMapping.new_positions.push_back(newPosition);
normalFunctionAddressMap.insert(std::make_pair(oldFunction, addressMapping));
return 1;
原文地址: http://www.cveoy.top/t/topic/iVk5 著作权归作者所有。请勿转载和采集!