苦逼热狗 路边通讯社社长 VIP 注册 2002-10-12 消息 47,114 荣誉分数 2,376 声望点数 393 2006-08-04 #1 PUSH 004F5618 ;UNICODE "STRING" PUSH ESI CALL 004XXXXXXX ;自己的一个STRING比较函数 ADD ESP,8 TEST EAX,EAX JNZ SHORT 004XXXXXX MOV EAX,0A0 RETN //----------// 这么一段32位汇编吗,到64位程序下头以后就彻底的无影无踪了,有谁能讲解一下64位程序的一些结构啥的吗?还有汇编时候,原来那些PUSH XXXX之类的东西变成啥了?
PUSH 004F5618 ;UNICODE "STRING" PUSH ESI CALL 004XXXXXXX ;自己的一个STRING比较函数 ADD ESP,8 TEST EAX,EAX JNZ SHORT 004XXXXXX MOV EAX,0A0 RETN //----------// 这么一段32位汇编吗,到64位程序下头以后就彻底的无影无踪了,有谁能讲解一下64位程序的一些结构啥的吗?还有汇编时候,原来那些PUSH XXXX之类的东西变成啥了?
dragonLinux 知名会员 注册 2005-02-06 消息 1,030 荣誉分数 7 声望点数 198 2006-08-04 #2 你都能试,就不能反汇编一下其它的程序吗? 也可以去下个linux kernel的源码,里面也有些源码的,你可以参考。
mooncake 资深人士 VIP 注册 2002-03-02 消息 7,270 荣誉分数 883 声望点数 273 2006-08-09 #3 第一个push的是一个指针,在64为系统里是8bytes,call 之后的add esp 8实际上漏了,应该改为add esp 12.堆栈混乱了之后ret自然就完蛋了.
苦逼热狗 路边通讯社社长 VIP 注册 2002-10-12 消息 47,114 荣誉分数 2,376 声望点数 393 2006-08-09 #4 .................我没说明清楚问题 but anyway了,已经解决了 就是郁闷,VS2005里头要想c++/asm混编好麻烦
碳 碳膜电阻 知名会员 注册 2003-07-13 消息 190 荣誉分数 1 声望点数 128 2006-08-14 #5 推荐二楼的听听罗胖子的"术语",我贴一个,看看行不行. [music]http://www.vickizhaowei.com/attachments/laoluo2/24.术语.mp3[/music]