我正在尝试学习吉德拉。说,如果它生成了以下代码,以从gpfnCommCtrlAPI的函数名称数组中加载函数:



我能够将gpfnCommCtrlAPI重新输入到char*[14]中,这使其非常易读:



但是可以重新键入指向函数指针数组的指针g_pfnsUxCtrl(可能使用自定义enum),使它更多可读吗?这是g_pfnsUxCtrl[7]情况下的外观示例:



PS。要了解在这种情况下7指的是什么索引,我需要回到gpfnCommCtrlAPI数组,在使用g_pfnsUxCtrl[7]的情况下可能无法立即使用它。在这种情况下,我手动重命名了p_comctl32_HandleScrollCmd变量以使其更具可读性。

评论

您分析了哪个可执行文件?

@Biswapriyo:从Win10构建comctrl32.dll x86。

如果您想让X表示g_pfnsUxCtrl [7],这听起来像是您需要typedef,除非您想使用枚举代替7

#1 楼

您可以在Data Type Manager内添加自己的枚举类型。 (请记住选择正确的尺寸)。







那么您应该可以将类型更改为新创建的枚举,并且应该很好地解决所有问题。

评论


是的,这就是定义通用枚举的方式。但是您如何将其应用于上面显示的特定示例?

–c00000fd
19年4月23日在20:41

如果该proc列表的const计数相对较短,并且您确实希望使用自定义名称而不是整数,则可以创建包含许多不同名称的整数的自定义类型。然后,您将拥有一个带有几个变量的对象,每个变量都有一个自定义名称。而且,如果这些地址是常数,这有点愚蠢,但是您可以查看它的位置,则可以尝试将p_comct132_HandleScrollCmd设置为enumType,并将g_pfnsUxCtrl设置为指向enumType的指针。两种解决方案都很愚蠢,在您的情况下,我只记住那些整数

– Erexo
19年4月24日在13:26