类的逆向分析
類的權限控制只是編譯器的產物,在匯編層次無法體現
?
類的構造函數VC特征
1.調用時,傳遞this指針。例如:lea???? ecx, [ebp+testb] ; this
2.函數內部,先處理this指針。例如:mov???? [ebp+this], ecx
3.若是有虛函數,則虛函數表賦值.例如:mov???? dword ptr [eax], offset???_7CTestA@@6B@ ; const CTestA::`vftable'
4.返回this指針.例如:mov???? eax, [ebp+this]
?
類的析構函數VC特征
1.調用時,傳遞this指針。例如:lea???? ecx, [ebp+testb] ; this
2.函數內部,先處理this指針。例如:mov???? [ebp+this], ecx
3.若是有虛函數,則虛函數表賦值.mov???? dword ptr [eax], offset???_7CTestA@@6B@ ; const CTestA::`vftable'
4.無返回值
?
類的成員函數VC特征
1.調用時,傳遞this指針。例如:lea???? ecx, [ebp+testb] ; this
2.函數內部,先處理this指針。例如:mov???? [ebp+this], ecx
3.函數地址引用,只有CALL指令。
類的內聯成員函數VC特征
與類的成員函數VC特征一樣
?
類的虛成員函數VC特征
1.調用時,傳遞this指針。例如:lea???? ecx, [ebp+testb] ; this
2.函數內部,先處理this指針。例如:mov???? [ebp+this], ecx
3.函數地址引用,能在虛表中找到。例如:
.rdata:00402394 ; const CTestA::`vftable'
.rdata:00402394???_7CTestA@@6B@ dd offset??Sub@CTestA@@UAEHHH@Z
.rdata:00402394???????????????????????????????????????? ; DATA XREF: CTestA::CTestA(int,char,int)+Ao
.rdata:00402394???????????????????????????????????????? ; CTestA::CTestA(void)+Ao ...
.rdata:00402394???????????????????????????????????????? ; CTestA::Sub(int,int)
.rdata:00402398???????????????? dd offset??Sub@CTestA@@UAEHXZ?; CTestA::Sub(void)
.rdata:0040239C???????????????? dd 0
類的內聯虛成員函數VC特征
與類的虛成員函數VC特征一樣
類的靜態成員函數VC特征
1.與普通函數無異。
總結
- 上一篇: 推荐一款cpp解析json工具--rap
- 下一篇: 利用ida对程序的静态链接库进行处理