汇编命令 CALL 的是什么参数
004719F6 |. E8 55FFFBFF CALL elementc.00431950
004719FB |. D95C24 4C FSTP DWORD PTR SS:[ESP+4C]
004719FF |. 8B4424 4C MOV EAX,DWORD PTR SS:[ESP+4C]
00471A03 |. 55 PUSH EBP
00471A04 |. 8D4C24 34 LEA ECX,DWORD PTR SS:[ESP+34]
00471A08 |. 50 PUSH EAX
00471A09 |. 51 PUSH ECX
00471A0A |. 53 PUSH EBX
00471A0B |. 8D5424 28 LEA EDX,DWORD PTR SS:[ESP+28]
00471A0F |. 6A 00 PUSH 0
00471A11 |. 52 PUSH EDX
00471A12 |. 8BCE MOV ECX,ESI
00471A14 |. E8 3724FEFF CALL elementc.00453E50
这是程序段开始部分
00453E50 /$ 51 PUSH ECX ;
00453E51 |. 53 PUSH EBX
00453E52 |. 56 PUSH ESI
00453E53 |. 8BF1 MOV ESI,ECX
00453E55 |. 8B4E 14 MOV ECX,DWORD PTR DS:[ESI+14]
00453E58 |. 81C1 98050000 ADD ECX,598
00453E5E |. E8 9D0DFBFF CALL elementc.00404C00
00453E63 |. 33DB XOR EBX,EBX
00453E65 |. 84C0 TEST AL,AL
00453E67 |. 74 0F JE SHORT elementc.00453E78 展开
00453E50 /$ 51 PUSH ECX ;
00453E51 |. 53 PUSH EBX
00453E52 |. 56 PUSH ESI //保存环境
00453E53 |. 8BF1 MOV ESI,ECX //esi = ecx = 第一个参数
00453E55 |. 8B4E 14 MOV ECX,DWORD PTR DS:[ESI+14]
看这段代码,应该是fastcall调用方式,该调用方式是使用ecx来传第一个参数,edx来传第二个参数,其他的使用堆栈来传递。00453E50这个函数在这部分只看出有一个参数,其他的参数不确定,找一下函数返回的地方,看返回几个参数。
我猜这里可能只有一个参数,即该函数调用:fun_00453E50(esi)
00471A12 |. 8BCE MOV ECX,ESI //ecx = esi = 第一个参数
00471A14 |. E8 3724FEFF CALL elementc.00453E50。
补充:汇编指令是汇编语言中使用的一些操作符和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
00453E51 |. 53 PUSH EBX
00453E52 |. 56 PUSH ESI //保存环境
00453E53 |. 8BF1 MOV ESI,ECX //esi = ecx = 第一个参数
00453E55 |. 8B4E 14 MOV ECX,DWORD PTR DS:[ESI+14]
看这段代码,应该是fastcall调用方式,该调用方式是使用ecx来传第一个参数,edx来传第二个参数,其他的使用堆栈来传递。00453E50这个函数在这部分只看出有一个参数,其他的参数不确定,找一下函数返回的地方,看返回几个参数。
我猜这里可能只有一个参数,即该函数调用:fun_00453E50(esi)
00471A12 |. 8BCE MOV ECX,ESI //ecx = esi = 第一个参数
00471A14 |. E8 3724FEFF CALL elementc.00453E50