日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

11.IDA-this指针

發(fā)布時(shí)間:2024/4/11 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11.IDA-this指针 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

所有非靜態(tài)C++成員函數(shù)都使用this指針。任何時(shí)候調(diào)用這樣一個(gè)函數(shù),this都被初始化,指向用于調(diào)用該函數(shù)的對(duì)象.?
最好是把this看成是傳遞到所有非靜態(tài)成員函數(shù)的第一個(gè)隱藏參數(shù).

this存放的地方

1.Visual C++利用thiscall調(diào)用約定,并將this傳遞到ECX寄存器中?
2.GNU g++編譯器則把this看做是函數(shù)的第一個(gè)(最左邊)參數(shù),并在調(diào)用該函數(shù)之前將用于調(diào)用函數(shù)的對(duì)象的地址作為最后一項(xiàng)壓入棧中

從逆向工程的角度看,在調(diào)用函數(shù)之前,將一個(gè)地址轉(zhuǎn)移到ECX寄存器中可能意味著兩件事情?
1.該文件使用Visual C++編譯?
2.該函數(shù)是一個(gè)成員函數(shù)?
如果同一個(gè)地址被傳遞給兩個(gè)或更多函數(shù),我們可以得到結(jié)論,這些函數(shù)全都屬于同一個(gè)類層次結(jié)構(gòu)。?
如果發(fā)現(xiàn)一個(gè)函數(shù)向其他函數(shù)傳遞this指針,則這些函數(shù)可能和傳遞this的函數(shù)屬于同一個(gè)類

如下示例:

class A { public:int fun(){return 1;}int Lk(){return fun();} }; int _tmain(int argc, _TCHAR* argv[]) {A a;a.Lk();return 0; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

對(duì)應(yīng)IDA反匯編如下:?

附:

構(gòu)造函數(shù)并未指定返回類型,但由Visual C++生成的構(gòu)造函數(shù)實(shí)際上把this指針存在EAX寄存器中并返回?

總結(jié)

以上是生活随笔為你收集整理的11.IDA-this指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。