2010-12-24 2 views
1

'this'키워드의 정확한 의미가 IDA pro 의사 C++ 코드에 무엇인지 궁금합니다. 우리가 어떤에 따라 '이 INT'의 정의를 볼 수있는 기능에, 그래서IDA pro 'this'키워드

int __thiscall sub_100010B3(int this, const char *Str1) 
    { 
    int result; // [email protected] 
    int v3; // [email protected] 
    int v4; // [sp+0h] [bp-8h]@1 
    int v5; // [sp+4h] [bp-4h]@1 

    v4 = this; 
    v5 = sub_10001090(this, 1); 
    if (v5) 
    { 
    while (*(_DWORD *)(v5 + 16)) 
    { 
     v3 = sub_10001470(v4, *(_DWORD *)(v5 + 12)); 
     if (!stricmp(Str1, (const char *)v3)) 
     return v5; 
     v5 += 20; 
    } 
    result = 0; 
    } 
    else 
    { 
    result = 0; 
    } 
    return result; 
} 

확인 :이 함수를 호출

v2 = sub_100010B3((int)&v12, "QtGui4.dll"); 

:

내가 함수 호출을 가지고 말할 수 있습니다 docs는 객체를 호출하는 데 사용되는 객체에 대한 포인터입니다. 내가 궁금해하는 건 어떻게 그들이 동일한 작동하지만 '이'매개 변수를 전달할 필요가 없도록 함수를 다시 작성할 수 있습니다?

답변

4

thiscall 당신이

class MyClass { 
    int sub_100010B3(const char* Str1); 
}; 

MyClass::sub_100010B3(const char* Str1) 
{ 
    // .. implementation 
} 
+0

로 다시 할 것이다, 그래서이 클래스의 멤버 함수 의미 'sub_100010B3' 아마 변환 된 이름이다. –

+0

sub_100010B3은 IDA Pro에서 이진을 역 어셈블하는 루틴을 제공하는 이름입니다. 함수의 원래 이름과 아무런 관련이 없습니다. – jcopenha

+0

감사합니다 jcopenha. 클래스가 정적 일 수 있습니까? – flavour404