0

我需要用它们的原始源代码替换分配器。我正在从 PE 导出表中提取导出的方法,并面对奇怪的冗长分配器,其中 STL 容器在原始源代码中使用。即如果源代码是:

   typedef std::list<std::basic_string<_TCHAR> > TokenList;
   EXPORTS_API const TokenList& getLiteralList( );

从我得到的导出表中:

std::list<class std::basic_string<unsigned short, std::char_traits<unsigned short>,class
 std::allocator<unsigned short> >,class std::allocator<class std::basic_string<unsigned 
short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > > > 
const & __thiscall CExpressionTokenizer::getLiteralList(void)

如何从上述冗长的分配器中获取其原始源代码的回溯?(typedef 的大小增加得更多。)

问候,

乌斯曼

4

2 回答 2

1

我认为您的意思是您希望能够从导出表中确定更简洁的类型名称。标准分配器 ( std::allocator) 是大多数标准容器类模板中分配器参数的默认模板参数,因此您可以从模板特化中删除整个分配器参数,以提供相同类型的更简单表达式。

例如

std::list<class std::basic_string<unsigned short, std::char_traits<unsigned short>,class
std::allocator<unsigned short> >,class std::allocator<class std::basic_string<unsigned 
short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > > > 
const & __thiscall CExpressionTokenizer::getLiteralList(void)

变成

std::list<class std::basic_string<unsigned short, std::char_traits<unsigned short> > > 
const & __thiscall CExpressionTokenizer::getLiteralList(void)
于 2010-07-27T18:14:53.260 回答
0

我相信您在谈论解码错误消息?尝试STLFilt

于 2010-07-27T18:24:50.163 回答