如何将变量或函数的类型设置为 std::string?

逆向工程 艾达 二元分析 C++
2021-06-28 02:28:13

我正在使用 IDA Pro 并确定了一个将 std::string 作为参数的函数。

但是,当我单击函数和“设置项目类型”时,输入其定义:

std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>> funcname(const std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>& foo)

我收到一个语法错误:

Syntax error near: std::__ndk1::basic_string

但是,IDA 可以使用具有这种类型的其他变量。为什么当我尝试设置它时失败?

1个回答

IDA 的 C 解析器不处理某些 C++ 语法,如命名空间。有两种选择:

  1. 将局部类型或结构重命名为没有“错误”符号,您可以在类型声明中使用它然后
  2. 在参数/变量上使用“转换为结构*”上下文菜单命令。这绕过了 C 解析器并直接设置类型。