首页
社区
课程
招聘
[旧帖] [求助][PEDIY问题]关于在程序末尾加入一个对话框 0.00雪花
发表于: 2008-1-26 19:02 3660

[旧帖] [求助][PEDIY问题]关于在程序末尾加入一个对话框 0.00雪花

2008-1-26 19:02
3660
在论坛看到有一篇给程序添加一个启动对话框的文章(就是在程序启动的时候弹出一个对话框),心里开始痒痒,能不能在程序结束的时候添加一个对话框呢(形如Are you sure to exit?的对话框,按下yes则退出,按下no则不退出),这个从理论上应该是可以的吧!
但是我在实际操作的过程中确出现了问题
我用的是系统自带的Notepad.exe做实验,操作过程如下
1.首先下断PostQuitMessage,找到了程序退出时要调用的地方,然后记下这里的地址
2.找一段空白的地方写入如下代码
push 4 ;MB_YESNO
push 0 ;因为这还只是一个实验,所以先不让MessageBox显示任何信息
push 0
push 0
call [0100xxxx] ;call MessageBoxW
cmp eax,6 ;事先编了一程序,用OD跟踪,得知ID_YES的值为6,ID_NO则为7
jne xxxxxxxx;点"否"则跳到程序的消息处理函数
push 0
call [0100xxxx] ;call PostQuitMessage
3.回到开始找到的调用PostQuitMessage的地方,将这里的调用NOP掉,写入代码
jmp 0100xxxx;跳到步骤2中push 4的位置
我觉得我的操作并没有什么错啊,但是却没有实现我想要的效果,希望大家指点一下我这菜鸟,我怀疑是不是我的消息处理函数入口找得不对,我只是臆测那个地方为消息处理函数的入口
有没有什么好的方法可以快速找到程序消息处理函数的入口啊?希望大家不吝赐教,在此先谢谢各位了-_-

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
Call PostQuitMessage 应该就在消息处理函数里面
1、堆栈平衡问题。
2、在什么地方patch。你在PostQuitMessage处处理已经来不及再返回程序了(点击“否”),也就是说已经有部分退出代码执行了。
2008-1-27 01:00
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
那我应该在什么地方patch呢?
我在跳转到PostQuitMessage的地方patch仍然失败,petnt大哥能否详细讲一下,谢谢了
2008-1-27 11:03
0
雪    币: 221
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也想学习一下,等待高手解答
2008-1-27 12:29
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
5
等我写个详细的过程吧,我会尽快的。
2008-1-27 14:22
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
好的,非常感谢你petnt!这也算是给我们这些菜鸟的一篇PEDIY教程吧
期待ing...
2008-1-27 14:53
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
7
http://bbs.pediy.com/showthread.php?t=58993
终于写完了,有不对的地方请指出,仅供参考。
2008-1-27 21:41
0
游客
登录 | 注册 方可回帖
返回
//