123456

 

2013年5月13日

ThisCall调用分析

摘要: C++程序的成员函数默认使用的调用约定是thiscall,这种约定是把this指针放到ECX寄存器中.This调用协定也是要求被调用函数负责清理栈,因此不支持可变数时的参数,当我们在C++类中定义了可变数量参数的成员函数时,偏译器会自动改为使用C调用约定,当这种调用时,编译器会将所有参数压入栈中,再将this指针压入栈:关键两点:1.this时,是被调用函灵敏清理栈 2.如果可变参数,则使用C约定,由调用者来清理写个小demo测试:#include "stdafx.h"#include enum MEAL {BREAKFAST, LUNCH, SUPPER};class C 阅读全文

posted @ 2013-05-13 17:46 hgy413 阅读(400) 评论(0) 推荐(0) 编辑

关于windbg---Type information missing error for

摘要: 今天用vc6时,发现有些函数用x显示不了:0:000> x ThisCall!Cat::*Type information missing error for Cat::Fun0歪招:用bm直接下断点:0:000> bm ThisCall!Cat::* 1: 00401090 @!"ThisCall!Cat::Func1" 2: 00401060 @!"ThisCall!Cat::Fun0"0:000> x ThisCall!Cat*Type information missing error for Cat::Func1Type in 阅读全文

posted @ 2013-05-13 15:53 hgy413 阅读(230) 评论(0) 推荐(0) 编辑

REPNZ SCANS

摘要: 重复前缀指令任何一个串操作指令,都可以在前面加一个重复前缀,以实现串操作的重复执行,重复次数隐含在CX寄存器中REP;REP前缀用在MOVS、STOS、LODS指令前,每次执行一次指令,CX减1;直到CX=0,重复执行结束REPZ;也可以表把为REPE,用在CMPS、SCAS指令前,每执行一次串指令CX减1,并判断ZF标志是否为0;只要CX=0或ZF=0,则重复执行结束REPNZ;也可以表达为REPNE,用在CMPS、SCAS指令前,每执行一次串操作指令CX减1,并判断ZF标志是否为1,只要CX=0或ZF=1,则重复执行结束。串扫描指令SCASSCASB;字节串扫描:AL-ES:[DI],DI 阅读全文

posted @ 2013-05-13 11:07 hgy413 阅读(271) 评论(0) 推荐(0) 编辑

导航