kymeii
发表于 2008-3-28 19:56:25
学习了!
hnld
发表于 2008-3-30 20:44:59
初看觉得好简单,细思量才发现自己无知.
chen0226s
发表于 2008-4-2 13:02:03
真是 太谢谢了/:014 /:014
aaa507
发表于 2008-4-3 15:31:20
看看 学习学习:loveliness:
JackyChou
发表于 2008-4-9 17:14:54
学习,谈下学习心得。
=========================================================================================
004014D6 .E8 6F030000 call <jmp.&MFC42.#3876> ;取得用户名位数
004014DB .8B1D FC214000mov ebx,dword ptr ds:[<&USER32.>;USER32.PostQuitMessage
004014E1 .83F8 05 cmp eax,5 ;是否大于5位
004014E4 .7E 50 jle short chap202.00401536 ;小于就出错
=========================================================================================
这边首先将退出函数地址=>ebx。
那么,在用户名位数小于5的时候,就会跳向00401536这个地址。
在00401549这个地址后面有
push 0
call ebx
这样就调用PostQuitMessage函数,使程序退出。
JackyChou
发表于 2008-4-9 17:22:36
学习心得:
==============================================================================
004014D6 .E8 6F030000 call <jmp.&MFC42.#3876> ;取得用户名位数
004014DB .8B1D FC214000mov ebx,dword ptr ds:[<&USER32.>;USER32.PostQuitMessage
004014E1 .83F8 05 cmp eax,5 ;是否大于5位
004014E4 .7E 50 jle short chap202.00401536 ;小于就出错
==============================================================================
此时ebx存放的内容就是PostQuitMessage函数的地址
==============================================================================
00401536 > \6A 00 push 0
00401538 .68 64304000 push chap202.00403064 ;ASCII "ERROR"
0040153D .68 38304000 push chap202.00403038 ;ASCII "One of the Details you entered was wrong"
00401542 .8BCE mov ecx,esi
00401544 .E8 F5020000 call <jmp.&MFC42.#4224>
00401549 .6A 00 push 0
0040154B .FFD3 call ebx
==============================================================================
push 0
call ebx
此时调用PostQuitMessage函数,这样程序就退出了。
呵呵
[ 本帖最后由 JackyChou 于 2008-4-9 17:24 编辑 ]
guang827
发表于 2008-4-10 10:34:32
谢谢分享………………
lanjingyun
发表于 2008-4-14 14:13:32
算法分析很重要 进来学习入门篇
szzhougang
发表于 2008-4-21 23:28:18
/:L 好好学习一下,我还是多么菜
wiliiwin
发表于 2008-4-22 18:48:45
学习很适合初学者,这个确实很简单