Visual c++ 如何解码Visual C++;损坏修饰名称的方法参数?
给出以下导出名称示例:Visual c++ 如何解码Visual C++;损坏修饰名称的方法参数?,visual-c++,Visual C++,给出以下导出名称示例: 0x00cf ?GetI@PyIDispatch@@SAPAUIDispatch@@PAU_object@@@Z 0x0119 ?ParseTypeInformation@PythonOleArgHelper@@QAEHPAU_object@@@Z 0x014f ?PyObject_FromSTGMEDIUM@@YAPAVPySTGMEDIUM@@PAUtagSTGMEDIUM@@@Z 对于方法GetI、ParseTypeInformation、PyObject\u F
0x00cf ?GetI@PyIDispatch@@SAPAUIDispatch@@PAU_object@@@Z
0x0119 ?ParseTypeInformation@PythonOleArgHelper@@QAEHPAU_object@@@Z
0x014f ?PyObject_FromSTGMEDIUM@@YAPAVPySTGMEDIUM@@PAUtagSTGMEDIUM@@@Z
对于方法GetI、ParseTypeInformation、PyObject\u FromSTGMEDIUM,方法参数是什么
当前的解决方法是跳过对参数的解析,但是我有如下所示的不具信息性的漏洞:)
参考资料:
static ::IDispatch* PyIDispatch::GetI(::_object*);
但是,我没有访问Windows计算机进行测试的权限。您可以使用该功能
不幸的是,pinvoke.net上还没有可用的p/invoke声明
尝试以下方法:
[DllImport("Dbghelp.dll", SetLastError = true)]
static extern uint UnDecorateSymbolName(string decorated, StringBuffer undecoratedBuffer, uint undecoratedBufferLength, uint flags);
从Visual Studio命令提示符运行undname.exe实用程序。使用“系统”菜单中的“编辑+粘贴”命令,以避免键入名称。样本输出:
C:\temp>undname ?GetI@PyIDispatch@@SAPAUIDispatch@@PAU_object@@@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.
Undecoration of :- "?GetI@PyIDispatch@@SAPAUIDispatch@@PAU_object@@@Z"
is :- "public: static struct IDispatch * __cdecl PyIDispatch::GetI(struct _objec
t *)"
我实际上是在寻找实现。使用PInvoke直到它不可用。假设undname和Dbghelp.dll不可用。我正在寻找实际的实现。你必须闯入雷德蒙德某处的一个金库。只有编译器有足够的标识符信息来生成完整的名称。您能否扩展您的答案以包括查找答案所采取的步骤?非常感谢。我是按照我喜欢的语法手工做的(看起来已经过时了)。
C:\temp>undname ?GetI@PyIDispatch@@SAPAUIDispatch@@PAU_object@@@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.
Undecoration of :- "?GetI@PyIDispatch@@SAPAUIDispatch@@PAU_object@@@Z"
is :- "public: static struct IDispatch * __cdecl PyIDispatch::GetI(struct _objec
t *)"