vc写汇编 两句不懂
PUSH EBX
PUSH EDI
PUSH ECX
MOV ECX,DWORD PTR SS:[ESP+2C] //esp是固定值,貌似是基址什么的
PUSH EBP //ebp会变化
CALL elementc.004C2340
[解决办法]
MOV ECX,DWORD PTR SS:[ESP+2C] //esp是固定值,貌似是基址什么的
很久不用汇编,好像是这么解释的。。 把 DWORD型 指针 SS 偏移地址[ESP+2C] 移到 寄存器ECX中
[解决办法]
把堆栈+2 //堆栈是向下增长
的地址个ecx;
把epb 压入栈
[解决办法]
MOV ECX,DWORD PTR SS:[ESP+2C] //esp是固定值,貌似是基址什么的
把 esp+2c 这一个地址所指向的一个DWORD值传给ecx。 ss代表堆栈段,因为esp默认使用ss段描述符寻址
PUSH EBP //ebp会变化
把ebp压栈,ebp不会变化,esp会自减4。楼主看花眼了吧
[解决办法]
光会语法不够。要知道一些C编译器例行的东东。比如VC编译器,call一个函数时ECX一般放的是this指针。还有一般函数的开头都是这样:
PUSH EBP
MOV EBP, ESP
然后引用某个参数和栈上的变量时都用EBP+XXX来引用。
[解决办法]
怎么写都可以,但是一般按编译规则写比较好修改了你的2个小bug如下:_asm{PUSH 0PUSH 1PUSH 2MOV ECX,[0x12ef8c] //esp=12ef60PUSH EBP //ebp暂时还不会 只能知道这次的值 下次就变了 所以直接代入mov eax, 0x4c2340CALL eax}