能力值:
( LV2,RANK:10 )
2 楼
没人懂么?给点指点啊
能力值:
( LV2,RANK:10 )
3 楼
要提示框,就用MessageBox()函数,如果想显示图片,就要定义一个CDialog类
能力值:
( LV2,RANK:10 )
4 楼
帮你顶一下。。
能力值:
( LV2,RANK:10 )
5 楼
以前写的 供参考
http://www.rrgod.com/post/29.html
能力值:
( LV2,RANK:10 )
6 楼
多谢各位~我研究一下
能力值:
( LV2,RANK:10 )
7 楼
要提示框,就用MessageBox()函数,如果想显示图片,就要定义一个CDialog类
我试着在空白地方加了代码,可是就是无法实现提示出对话框,网页用ShellExecuteA可以做到弹出了!请具体说下,汇编太难了
能力值:
( LV2,RANK:10 )
8 楼
在入口处.加入.只是调用一个MessageBoxA而已很简单的
能力值:
( 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 修改程序入口地址 然後再跳回來 晚上有時間我寫一個
上传的附件:
能力值:
( LV2,RANK:10 )
10 楼
非常感谢9楼朋友详细的解答,我研究一下你的东西~!!分怎么给?
能力值:
( 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的地址 呵呵~
能力值:
( LV2,RANK:10 )
12 楼
修改入口地址的,blue兄弟有空写个发上来我研究一下
能力值:
( LV2,RANK:10 )
13 楼
学习来着 看看高手怎么弄?
能力值:
( LV2,RANK:10 )
14 楼
修改后的exe运行后,关闭后,提示报错,不知,你们有没有试过?
能力值:
( LV2,RANK:10 )
15 楼
嗯,我也报错了,我以为是我机器的问题,这个错误是怎么回事?还有就是messagebox的内容如何定义,比如提示“欢迎光临”
能力值:
( LV2,RANK:10 )
16 楼
这个虽然简单对于新手还是难的,如果有详细的教程,倒能是一个入门的开始
能力值:
( LV2,RANK:10 )
17 楼
嗯,是啊,这个问题我一定要搞明白~还希望各位高手多多指点,多种方法最好了~
能力值:
( LV2,RANK:10 )
18 楼
方法有很多种,看想如何实现了。
能力值:
( LV2,RANK:10 )
19 楼
那请楼上指点几种方法,最好详细些,让我们这些初学者能多点思路学习下
能力值:
( LV2,RANK:10 )
20 楼
程序是从上到下运行的,但如果入口上面没有空的地方怎么办?在最后的空白数据做是不是不可以?
能力值:
( LV2,RANK:10 )
21 楼
在push的地方定义提示框内容,怎么定义?
能力值:
( 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 , 博客里有一些很基础的题目的分析,希望对你有帮助
能力值:
( LV2,RANK:10 )
23 楼
那个messagebox的地址能否解释下,就是我在push 0后该怎么写
能力值:
( LV2,RANK:10 )
24 楼
我已经实现了提示框,内容不知道怎么定义,vc里提示框很简单,到汇编里怎么这么复杂
能力值:
( 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更详细~ 另外一个细节 就是注意参数入栈的顺序~ 字符串类型的 入栈的的字符串的首地址,真晕