首页
社区
课程
招聘
[旧帖] [求助]如何给软件加提示框 0.00雪花
发表于: 2009-12-23 10:24 6216

[旧帖] [求助]如何给软件加提示框 0.00雪花

2009-12-23 10:24
6216
请教一个问题,如何给一个软件添加一个提示框,图片可以自己定义的还有调用windows的,内容自己定,比如“欢迎光临”,点击确定然后软件再运行!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (26)
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人懂么?给点指点啊
2009-12-23 11:03
0
雪    币: 266
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
要提示框,就用MessageBox()函数,如果想显示图片,就要定义一个CDialog类
2009-12-23 11:22
0
雪    币: 22
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
帮你顶一下。。
2009-12-23 11:36
0
雪    币: 290
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
以前写的 供参考
http://www.rrgod.com/post/29.html
2009-12-23 11:46
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
多谢各位~我研究一下
2009-12-23 11:56
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
要提示框,就用MessageBox()函数,如果想显示图片,就要定义一个CDialog类


我试着在空白地方加了代码,可是就是无法实现提示出对话框,网页用ShellExecuteA可以做到弹出了!请具体说下,汇编太难了
2009-12-23 13:43
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
在入口处.加入.只是调用一个MessageBoxA而已很简单的
2009-12-23 13:50
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
9
方法1:
此方法不用修改PE文件的入口點
載入原始.exe,隨便找到介面顯示之前的一個地方,隨便找啦,我們要用這個地方進行跳轉,執行完你需要的提示MessageBox,然後再跳回來。
好了我找的地方是:004011F8  \.  C2 0400       RETN 4
然後還需要找一個跳到的地方,來執行我們的代碼,我隨便看看了,找了地址 00401944,這個地址的找發比較隨便,找一個應用程序不用的地方就ok,但是要注意 不要找到的那個地址不可讀,具體怎麼找,我也想請教別人,如果找的地方不可讀,就需要修改其屬性,讓其可讀。

我們修改這個004011F8地址的東西
004011F8   . /E9 47070000   JMP 00401944     ;這裏就跳到我們的代碼
004011FD     |90            NOP
004011FE   > |C2 0400       RETN 4                  ;記下這個地址,一會還要跳回來

然後修改
00401944   > \60            PUSHAD             ;保存現場
00401945   .  6A 00         PUSH 0               ;這裏是MessageBox的4個參數,你修改下參數就能達到你要的效果了
00401947   .  6A 00         PUSH 0
00401949   .  6A 00         PUSH 0
0040194B   .  6A 00         PUSH 0
0040194D   .  FF15 14204000 CALL DWORD PTR DS:[<&MFC42.#2512_?DoMess>;  MFC42.#2512_?DoMessageBox@CWinApp@@UAEHPBDII@Z
00401953   .  61            POPAD                ;恢復現場
00401954   .  83C4 04       ADD ESP,4               ;至於這個地方為什麼加4  
00401957   .^ E9 A2F8FFFF   JMP 004011FE     ;跳回去咯~

那個地方為什麼加4呢  我也沒想明白 我修改完了 發現不對  調試發現ESP 少了4  就加上了  然後就ok了  ,誰來解釋下?

至於那個MessageBox的地址  見下圖: 雙擊選中的那行就ok,
方法2 修改程序入口地址 然後再跳回來  晚上有時間我寫一個
上传的附件:
2009-12-23 14:54
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
非常感谢9楼朋友详细的解答,我研究一下你的东西~!!分怎么给?
2009-12-23 16:07
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
11
解釋一下 00401954   .  83C4 04       ADD ESP,4               ;至於這個地方為什麼加4 這句
其實 前面call的那個MessageBox不是標準的API函數,這個call的函數只有3個參數,多做了一次push 所以會出現esp 比原來減少了4,需要那句ADD ESP,4       來恢復,去掉一個push就ok~~
按道理講,我們應該 LoadLibrary 然後GetProcessAddress來獲得MessageBoxA的地址 呵呵~
2009-12-23 16:27
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
修改入口地址的,blue兄弟有空写个发上来我研究一下
2009-12-23 16:51
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习来着  看看高手怎么弄?
2009-12-23 18:34
0
雪    币: 22
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
修改后的exe运行后,关闭后,提示报错,不知,你们有没有试过?
2009-12-23 18:36
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
嗯,我也报错了,我以为是我机器的问题,这个错误是怎么回事?还有就是messagebox的内容如何定义,比如提示“欢迎光临”
2009-12-24 10:57
0
雪    币: 22
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这个虽然简单对于新手还是难的,如果有详细的教程,倒能是一个入门的开始
2009-12-24 11:01
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
嗯,是啊,这个问题我一定要搞明白~还希望各位高手多多指点,多种方法最好了~
2009-12-24 13:24
0
雪    币: 166
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
方法有很多种,看想如何实现了。
2009-12-24 14:19
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
那请楼上指点几种方法,最好详细些,让我们这些初学者能多点思路学习下
2009-12-24 14:27
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
程序是从上到下运行的,但如果入口上面没有空的地方怎么办?在最后的空白数据做是不是不可以?
2009-12-24 15:23
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
在push的地方定义提示框内容,怎么定义?
2009-12-24 15:33
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
22
我也是初学者,才来论坛不久,虽然帐号注册时间挺久了,但是真正来论坛学习也就才一个月,告诉你一个学习破解加密解密的好方法,多实践!这绝对是真理。其实很多很多的问题自己动动手就解决了,都不需要问别人。举个例子,你不是问 那个MessageBox的参数怎么加上去吗?
你这样做,先用VC6.0 或者随便VS几点几的  写一个空的Dlg程序,然后在按钮里加一句话:
::MessageBoxA(m_hWnd, "欢迎光临!", "提示", NULL);
如果你对上面这句还有疑问的话,建议先不要学破解,先把Windows编程学好一点再来学习破解,我继续说
然后编译连接生成exe文件,把生成的Release版本拿出来,用OD载入,点击右键查找所有参考文本字符串
找到 ‘欢迎光临!’字符串双击,然后就到了 下面这个界面:
0040147C      90            NOP
0040147D      90            NOP
0040147E      90            NOP
0040147F      90            NOP
00401480   .  8B41 20       MOV EAX,DWORD PTR DS:[ECX+20]
00401483   .  6A 00         PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
00401485   .  68 2C304000   PUSH 11.0040302C                         ; |Title = "提示"
0040148A   .  68 20304000   PUSH 11.00403020                         ; |Text = "欢迎光临!"
0040148F   .  50            PUSH EAX                                 ; |hOwner
00401490   .  FF15 CC214000 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00401496   .  C3            RETN
00401497      90            NOP

然后你来分析MessageBox在汇编中的如何调用的,就知道怎么自己为他添加参数了
友情提示:在这个漫长的过程中最好找一本权威汇编书来学习,个人推荐《Intel 汇编语言程序设计》
我的博客:http://hi.baidu.com/blueapple_c, 博客里有一些很基础的题目的分析,希望对你有帮助
2009-12-24 15:41
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
那个messagebox的地址能否解释下,就是我在push 0后该怎么写
2009-12-24 15:43
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
我已经实现了提示框,内容不知道怎么定义,vc里提示框很简单,到汇编里怎么这么复杂
2009-12-24 15:49
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
25
建议楼主先好好学习一下Windows编程 至少对于常用 api 函数 要熟悉
先看一下这个MessageBox API的函数原型,摘自MSDN
The MessageBox function creates, displays, and operates a message box. The message box contains an application-defined message and title, plus any combination of predefined icons and push buttons.

int MessageBox(
  HWND hWnd,          // handle of owner window
  LPCTSTR lpText,     // address of text in message box
  LPCTSTR lpCaption,  // address of title of message box
  UINT uType          // style of message box
);

Parameters
hWnd
Identifies the owner window of the message box to be created. If this parameter is NULL, the message box has no owner window.
lpText
Pointer to a null-terminated string containing the message to be displayed.
lpCaption
Pointer to a null-terminated string used for the dialog box title. If this parameter is NULL, the default title Error is used.
uType
Specifies a set of bit flags that determine the contents and behavior of the dialog box. This parameter can be a combination of flags from the following groups of flags.
不翻译了,自己看,这是一部分 MSDN更详细~ 另外一个细节 就是注意参数入栈的顺序~   字符串类型的  入栈的的字符串的首地址,真晕
2009-12-24 16:14
0
游客
登录 | 注册 方可回帖
返回
//