原版插件: https://gitlab.com/colinsenner/Rtti-plugin-x64
原版代码 https://gitlab.com/colinsenner/Rtti-plugin-x64/-/blob/master/Rtti-plugin-x64/plugin.cpp#L20
bool AutoLabel(RTTI rtti)
{
if (!rtti.IsValid())
return false;
if (settings.auto_label_vftable)
{
char sz_vftable_label[MAX_COMMENT_SIZE] = "";
// If there isn't a label already there
if (!DbgGetLabelAt(rtti.GetVftable(), SEG_DEFAULT, sz_vftable_label))
{
string label = rtti.name + "_vftable";
if (!DbgSetLabelAt(rtti.GetVftable(), label.c_str()))
return false;
}
}
return true;
}
修复为
bool AutoLabel(RTTI rtti)
{
if (!rtti.IsValid())
return false;
if (settings.auto_label_vftable)
{
char sz_vftable_label[MAX_COMMENT_SIZE] = "";
// If there isn't a label already there
if (!DbgGetLabelAt(rtti.GetAddressVftable(), SEG_DEFAULT, sz_vftable_label))
{
string label = rtti.name + "_vftable";
if (!DbgSetLabelAt(rtti.GetAddressVftable(), label.c_str()))
return false;
}
GuiUpdateAllViews();
}
return true;
}
这里需要改为设置虚表地址的 label,而原始代码粗心大意,为一个 bool 型。并且需要刷新视图。
在你调到敏感的 ecx 地址,可以输入命令 rtti address ,之后这个信息也会保存到 x64dbg 的调试数据库里,再次启动也会存在。
rtti_dp32_dp64.zip
(158.39 KB, 下载次数: 143)
|