"""
NvramPei - Function Rename Script
===================================
Run this script in IDA Pro (File -> Script File...) to rename all
functions in the NvramPei module with meaningful names.
Module: 0407_NvramPei
Binary: NvramPei.efi
IDA database: NvramPei.efi.i64
"""
import idaapi
import ida_funcs
import idc
renames = {
0xFFE4D6F4: "InternalMemCopyMem",
0xFFE4D734: "InternalMemZeroMem",
0xFFE4D754: "InternalMemSetMem32",
0xFFE4D774: "InternalMemZeroMem32",
0xFFE4D794: "_ModuleEntryPoint",
0xFFE4D7F9: "GpioLockPads",
0xFFE4D8E5: "GpioNvramProtectInit",
0xFFE4D948: "PeiGetVariableOld",
0xFFE4D991: "PeiGetNextVariableNameOld",
0xFFE4D9D5: "PeiGetVariable",
0xFFE4DA3B: "PeiGetNextVariableName",
0xFFE4DA9A: "PeiServicesInstallPpi",
0xFFE4DB15: "NvramLoadDefaults",
0xFFE4DBAC: "NvramSetupBackup",
0xFFE4DBEB: "NvramCheckHobForVariable",
0xFFE4DC55: "NvramPeiEntry",
0xFFE4DFDF: "NvramPeiGetFvInfo",
0xFFE4DFF9: "NvramVarStoreInitHeader",
0xFFE4E01D: "NvramVarStoreInit",
0xFFE4E092: "FvbFindBlockMap",
0xFFE4E147: "FvbIsBufferErased",
0xFFE4E205: "FvbEraseBlock",
0xFFE4E28C: "FvbGetNextBlock",
0xFFE4E2C3: "FvbInternalWrite",
0xFFE4E3DF: "FvbWriteBlock",
0xFFE4E4CA: "FvbFindBlock",
0xFFE4E50E: "FvbInit",
0xFFE4E573: "FvbGetVolumeAttributes",
0xFFE4E5E2: "FvbSetVolumeAttributes",
0xFFE4E633: "FvbGetPhysicalAddress",
0xFFE4E74B: "FvbGetBlockSize",
0xFFE4E789: "FvbRead",
0xFFE4E81E: "FvbWrite",
0xFFE4E87B: "FvbAllocateNewBuffer",
0xFFE4E8CA: "VariableServiceGetVariable",
0xFFE4E93B: "VariableServiceGetNextVariableName",
0xFFE4EADD: "GetVariableHeaderSize",
0xFFE4EB27: "GetVariableStoreStatus",
0xFFE4EB46: "CompareVariableStoreBackup",
0xFFE4EBB5: "NvramRepairFromBackup",
0xFFE4EC6E: "GpioGetPadConfig",
0xFFE4EE88: "GpioIsPadLocked",
0xFFE4EED7: "GpioGetPadCfgFromDev",
0xFFE4F027: "GpioLockPad",
0xFFE4F073: "GpioUnlockAllPads",
0xFFE4F0BF: "GpioGetGroupCount",
0xFFE4F0E0: "GpioGetGroupToPadBase",
0xFFE4F1FD: "GpioConfigurePad",
0xFFE4F4EC: "GpioUpdatePadCfg",
0xFFE4F513: "GpioGetPadCfgRegAddr",
0xFFE4F73A: "PeiServicesGetBootMode",
0xFFE4F76B: "DebugPrint",
0xFFE4F7B3: "PeiServicesGetPpiList",
0xFFE4F7E5: "DebugAssert",
0xFFE4F8B6: "NvramValidateStore",
0xFFE4FAC2: "ReadPciConfigRegister",
0xFFE4FB4F: "PeiGetVariableAddressAmi",
0xFFE4FD63: "DebugPrintEnabled",
}
count = 0
for ea, name in renames.items():
if idc.set_name(ea, name, idc.SN_NOWARN | idc.SN_NOCHECK):
count += 1
else:
print(f"Failed to rename 0x{ea:08X} -> {name}")
print(f"Renamed {count}/{len(renames)} functions successfully.")