鱼C论坛

 找回密码
 立即注册
查看: 2601|回复: 16

win32 汇编中的问题

[复制链接]
发表于 2013-5-4 15:11:26 | 显示全部楼层 |阅读模式
20鱼币
  •    .else  
  •             invoke  DefWindowProc,hWnd,uMsg,wParam,lParam  
  •             ret  
  •         .endif  
  • ;********************************************************************  
  •         xor eax,eax  
  •         ret  
win32第一个窗口程序中窗口过程的部分代码  
我想知道其中ret 返回到哪了?
每个invoke  调用函数的时候  是不是都 必须返回啊  ?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-4 18:02:23 | 显示全部楼层
我也想知道,求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-4 19:44:02 | 显示全部楼层
返回到你用invoke或CALL调用的下一句  是不是必须返回得看你的代码,如果你RET前用了结束程序的代码,那就不可能返回了,一般的都是应该返回的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-4 19:56:55 | 显示全部楼层
我也得好好学一下汇编
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-11 13:19:47 | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-13 17:56:17 | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-13 19:20:47 | 显示全部楼层
返回函数调用之前。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-17 00:48:29 | 显示全部楼层
董卓宴请吕布、张飞、关羽等人。席间貂禅给众人倒酒,忽然灯灭!等重新点灯后见众人手皆黑!董卓大笑:我已在貂禅的双乳上涂上墨汁,唯吕兄正直!吕布大笑,众人见齿黑!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-17 01:58:36 | 显示全部楼层

什么啊    什么 啊 帮我 解释啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-19 22:09:32 | 显示全部楼层
本帖最后由 dAb 于 2013-5-19 22:13 编辑
枫辰 发表于 2013-5-17 01:58
什么啊    什么 啊 帮我 解释啊

invoke是可以检查参数的,一般系统API的返回值都是在EAX。。程序的返回是在你调用的下一句代码处。。
多跟踪调试自己的程序,这样才可以更深地了解。。别人说的可能深了你就难懂,跟着书本做,然后用OD之类的调试器单步调试自己的程序,慢慢观察过程。。自己走一遍程序,好过在网上问啊。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-20 02:48:00 | 显示全部楼层
dAb 发表于 2013-5-19 22:09
invoke是可以检查参数的,一般系统API的返回值都是在EAX。。程序的返回是在你调用的下一句代码处。。
多 ...

谢谢啊   我知道了 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-21 12:49:02 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-21 23:57:19 | 显示全部楼层

这要看你ret之前的栈内存的内容是多少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-21 23:57:28 | 显示全部楼层
invoke 调用的API函数返回值保存在eax中,基本上所有的win32api都有返回值的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-23 06:21:25 | 显示全部楼层
在OD里这个函数上下一个断点!然后你运行一下,结果就有了,哈哈!!!!多谢你提示啊,本来这里我也不知道,现在知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-23 06:25:17 | 显示全部楼层
本帖最后由 属専色灰 于 2013-5-23 06:51 编辑

win32_6.zip (1.88 KB, 下载次数: 1) 98页有张图片,完美的解释啊!!!

常用的消息循环,注意DispatchMessage只是一个回调函数而已,他内部调用USER32,
;USER32又调用我们的窗口过程,等到窗口过程返回,那么它是返回到我们的USER32去了,
;USER32处理好后返回就是我们的这里啦!然后就是新的一层循环!建议不要在USER32
;里面浪费时间,就只要看他的流程方向就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-23 18:55:02 | 显示全部楼层
每个都返回 ?这倒不必  别忘了 在win32程序中  eax中存放的是一个函数结束时的返回值  DefWindowProc这个函数 是windows默认帮你处理的函数  举个例子 .if eax == WM_COMMAND  .elseif eax ==WM_CLOSE
.else invoke DefWindowProc...   也就是除了COMMAND消息或者关闭消息  做的其他一切关于窗口的事情  DefWindowProc都会默认帮你处理  这个函数中,eax中肯定要存放返回值的,至于COMMAND 和关闭消息要清零,也就是xor eax,eax  是为了清除eax中的返回值  。。。   打了这么多字 不知道你看懂没,反正我是晕了。。。 :lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-10 01:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表