强制IDA反编译器在命名空间中使用静态函数的不同函数签名

时间:2018-01-22 01:26:24

标签: c++ ida

我正在使用一些简单的代码测试IDA,以了解如何使用它,并且因为它没有正确反编译命名空间中的静态函数而陷入困境:

以这种方式声明的函数:

namespace pvrtex
{
    bool transcode(CPVRTexture& tex,
        const PixelType fmt,
        const EPVRTVariableType chType,
        const EPVRTColourSpace clrSpace,
        const ECompressorQuality q,
        const bool dither = false);    
}

这个功能最终得到了这个签名:?transcode@pvrtex@@YA_NAAVCPVRTexture@1@TPixelType@1@W4EPVRTVariableType@@W4EPVRTColourSpace@@W4ECompressorQuality@1@_N@ZOnline demangler生成正确的c ++签名。当我在IDA中加载我的可执行文件时,它也会显示相同的函数签名,但是,当我尝试反编译此函数时,IDA错误地将此函数视为pvrtex类的某些成员函数,并且内部所有代码最终都会出现一些随机的混乱:

bool __cdecl pvrtex::transcode(pvrtex *__hidden this, struct pvrtex::CPVRTexture *, union pvrtex::PixelType, enum EPVRTVariableType, enum EPVRTColourSpace, enum pvrtex::ECompressorQuality, bool)

这是一个错误吗?可以做些什么来解决它?我试图rclick功能并编辑它并指定它是静态的,但没有任何变化:IDA仍将其视为具有隐藏pvrtex *__hidden this的成员函数。

0 个答案:

没有答案