我有一些IDA伪C++代码,我想知道它有多近...这些行:CHAR Filename; // [sp+26Ch] [bp-110h]@1char v31; // [sp+36Ch] [bp-10h]@1int v32; // [sp+378h] [bp-4h]@1GetModuleFileNameA(0, &Filename, 0x100u);CString__CString(&v31, &Filename);v32 = 0;CString::MakeLower(&v31);if ( CString__Find(&v31, "notepad") != -1 )...由于反编译的.dll使用CString,因此我假定它是基于MFC的dll。我以为,阅读文档后,CString将立即可用。但是,我收到错误错误1错误C2665:'ATL::CStringT::CStringT':17个重载都不能转换所有参数类型?使用MakeLower和Find也会遇到类似的错误,根据我所读的内容,这些错误是标准的CString函数,所以我在哪里出错?此外,您应该能够通过使用#include header 在基于非mfc的.dll中使用CString类,但是,我得到相同的错误1错误C2039:'CString':不是'ATL::的成员CStringT',那么我又如何使用它呢?谢谢。 最佳答案 与带有对象的C++相比,hexrays将产生更多的类似于C的代码。因此所有“this”指针都明确传递。为了解决问题,您可能应该将v31的类型更改为CString。而且我认为编译器将无法理解CString__CString(,FileName)是构造函数。因此,您应该在以下方面进行更改:CString v31(文件名);
07-27 13:20