assembly IDA PRO中的CPP功能

gev0vcfq  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(108)

试图解决一个crackme写在C++为Windows在x86-64。https://www.crackmes.one/crackme/649a2ced33c5d43938913c6c
在IDA中有如下函数调用:
第一个月
call __ZNSs4_Rep9_S_createEjjRKSaIcE ; std::string::_Rep::_S_create(uint,uint,std::allocator<char> const&)
我想知道这些功能是做什么的。关于他们的信息被谷歌搜索得很糟糕。在反汇编程序中理解每个这样的函数是非常困难的。
请告诉我是否有描述这些函数的资源。我想这和ABI有关。

4szc88ey

4szc88ey1#

您提供的函数名似乎是被篡改的名称,这些名称通常由编译器生成,以编码有关函数的其他信息,例如函数签名及其参数的类型。这些被篡改的名称是特定于所使用的编译器和平台的。
要理解这些函数的作用,将这些名称分开会很有帮助。Demangling是将损坏的名称转换回人类可读形式的过程。
有几个在线的分离工具可以帮助你分离这些函数名。一个常用的工具是c++filt命令行实用程序,它在大多数类Unix系统上都可用。你可以通过运行下面的命令来使用它对函数名进行分离:

c++filt __ZNSs4_Rep8_M_cloneERKSaIcEj
c++filt __ZNSs4_Rep9_S_createEjjRKSaIcE

字符串
这将为您提供函数的非标准名称,这可能会提供有关其用途的更多信息。
至于描述这些函数的资源,参考您正在使用的库或框架的文档或源代码会很有帮助。由于这些函数名似乎与std::string相关,因此您可以参考C++标准库文档或编译器标准库实现的源代码,以获得有关这些函数及其用途的更多信息。
此外,如果这些函数是特定库或框架的一部分,则可以搜索与该库或框架相关的文档或论坛,因为它们可能提供有关函数及其用法的更具体信息。

相关问题