-
; Exported entry 2253. ?DoDialog@WSaveFileDialogBase@@UAEFPBVIDFile@@PAV2@PAJFFPBVPMString@@@Z
-
-
-
; Attributes: bp-based frame
-
-
; public: virtual short __thiscall WSaveFileDialogBase::DoDialog(class IDFile const *, class IDFile *, long *, short, short, class PMString const *)
-
public ?DoDialog@WSaveFileDialogBase@@UAEFPBVIDFile@@PAV2@PAJFFPBVPMString@@@Z
-
?DoDialog@WSaveFileDialogBase@@UAEFPBVIDFile@@PAV2@PAJFFPBVPMString@@@Z proc near
-
-
var_460= word ptr -460h
-
var_258= byte ptr -258h
-
var_220= byte ptr -220h
-
var_1E8= byte ptr -1E8h
-
var_1B0= byte ptr -1B0h
-
var_16C= byte ptr -16Ch
-
var_160= byte ptr -160h
-
var_128= byte ptr -128h
-
var_F0= byte ptr -0F0h
-
var_B8= byte ptr -0B8h
-
var_80= byte ptr -80h
-
var_70= tagOFNW ptr -70h
-
var_24= dword ptr -24h
-
var_20= dword ptr -20h
-
var_1C= dword ptr -1Ch
-
var_18= dword ptr -18h
-
var_14= dword ptr -14h
-
var_10= dword ptr -10h
-
var_C= dword ptr -0Ch
-
var_4= dword ptr -4
-
arg_0= dword ptr 8
-
arg_4= dword ptr 0Ch
-
arg_8= dword ptr 10h
-
arg_C= dword ptr 14h
-
arg_10= dword ptr 18h
-
arg_14= dword ptr 1Ch
-
-
push ebp ;把ebp压入栈
-
mov ebp, esp ;栈地址赋给ebp
-
push 0FFFFFFFFh ;压入0FFFFFFFFh
-
push offset ?DoDialog@WSaveFileDialogBase@@UAEFPBVIDFile@@PAV2@PAJFFPBVPMString@@@Z_SEH ;压入函数吧
-
mov eax, large fs:0 ;FS:0指向线程环境块TEB
-
push eax ;压入栈
-
mov large fs:0, esp ;这3句可能是异常处理,large是ida自己加的
-
sub esp, 454h ;在堆栈中留出局部变量的空间
-
push ebx
-
push esi
-
mov esi, ecx
-
xor ebx, ebx ;清零
-
push edi
-
lea ecx, [ebp+var_1B0] ;ecx=ebp+var_1B0
-
mov [ebp+var_14], ebx ;ebx不是0了么
-
call ds:??0IDFile@@QAE@XZ ; IDFile::IDFile(void) ;感觉是个声明,找不到具体的定义
-
mov edi, [ebp+arg_0] ;参数0赋值
-
mov [ebp+var_4], ebx ;这里又清零了?
-
cmp edi, ebx ;比较edi和ebx,edi是参数0,ebx是0。
-
jz short loc_100786FB ;如果edi比较后ZF置1,则跳转到loc_100786FB
var_460= word ptr -460h开始是相对于指针EBP偏移距离为负,代表着是一些局部变量。
偏移距离为正的代表着用到的形参。
call ds:IDFile
这条指令不是很清楚
阅读(1010) | 评论(0) | 转发(0) |