银太 发表于 2013-10-12 02:32

给exe添加一个启动时的消息框

本帖最后由 银太 于 2013-10-13 00:48 编辑

前几分钟刚注册的吾爱破解论坛   现在发个贴子,呵呵,新手,不知道会不会有违反版规的情况 {:1_907:}

先说下我说的这个教程是啥吧,运行计算器后先弹出一个消息框



点击确定然后计算器正常出现



好了,废话不多说,开始了,文字加图片。

使用的软件是:任意版本OD,winxp系统自带计算器。这两个东西应该都很好找吧

首先用OD载入计算器,,这个不会的话建议不要往下看了

然后我的od就停在入口点了,我的这个是 1012475 这个位置如图



我们复制从前三行的内容。选中前三行-右键复制-到剪切板。 然后打开记事本ctrl+v粘贴进去,记事本这个东西很有用啊





回到OD,在程序结尾部分找一段0区域,就是结尾处空白的地方 ,HEX数据是 00 的地方 (我不知道0区域是不是这么说的,反正我是这么理解的)

右键-查找-二进制字串。   HEX那里填好多0然后确定会很快找到



如果找到了但是看到后面还有数据的(后面HEX还有不是00的),可以右键-查找-下个(快捷键ctrl+l)找到尾部的00

我找到的00区域是从 10136AF处开始的,你也可以直接ctrl+g定位到这里

我们空几行,别离人家程序太近嘛,呵呵。大约空个几行就好了。

我们从10136B4 开始反汇编

push 0
PUSH 10136B6
PUSH 10136BB
PUSH 0

妈呀太费事了,想不到写个东西这么费劲 ……半天写这么点。。好吧我坚持下,下面的稍微不这么详细了,太费时间

现在到od-右键-查找-所有模块间的调用

出来的对话框点一下目标文件,排序一下好找。我们找 USER32.MessageBoxW

找到第一个双击,我的第一个的地址是 100209C 我们在这个地址上空格,复制这段文字ctrl+v粘贴进记事本 ,我的是CALL DWORD PTR DS:   复制到记事本以后用。有可能不一样,按你的就行

然后回到刚刚汇编的那个地方,ctrl+g 定位到 10136B4

紧接着继续汇编,空格,粘贴刚刚复制的东西(我的是CALL DWORD PTR DS:)



这样弹出消息框的部分就完成了,四个push加一个call就是弹消息框的,忘了这就话是谁说的了

然后我们继续接着汇编,第一次粘贴到记事本里面的东西,就是od在入口点那三行

PUSH 70
PUSH 010015E0
CALL 010127C8

写完这三行以后加一句jmp 1012481就是再跳到运行计算器程序那边



我的这个语文不好啊,写的顺序有点乱,现在双击 右边寄存器那边的 EIP 就到了程序入口点



我们选中前三行,右键-二进制-用 NOP 填充



然后选中填充的第一行,也就是入口点 汇编 jmp 10136B4也就是我们找到的00地方汇编的第一个地址



到这里可能有些人就知道是怎么回事了。       程序运行,先跳到我们的程序,执行弹出消息框,然后再回到原程序继续执行,就是这么个过程

然后你可以试一下,右键复制到可执行文件,所有修改-全部复制,再右键-保存文件。自己保存,执行一下弹出一个乱码的对话框

因为我们没有指定它弹出的内容。

好,我们继续,关掉对话框继续汇编

ctrl+g 定位到 刚刚汇编的地方10136B4

隔着我们写的汇编,再空几行我们选 10136DD

从10136DD 多选几行,大概三十行吧,选好后右键-二进制-编辑,在UNICODE里面键入“hello world” (这么经典的东西。)如果刚刚你选少了就装不下这么多字了。



然后确定。 我们把刚刚的

push 0
PUSH 10136B6
PUSH 10136BB
PUSH 0

改一下,改成

push 0
PUSH 10136DD
PUSH 10136DD
PUSH 0

第二次push的是消息框的标题,第三次push的是消息框的内容,我们为了省事就写一样的(第一是按钮样式,自己完了可以改 1、2、3、4、瞎看看。第四个不要乱改了。似乎是窗口句柄还是父窗口句柄忘了)



然后再复制到可执行文件就可以弹出一个 hello world 的消息框了。教程结束好费劲。
这个方法对大多数windows程序应该都可以添加消息框。
至于里面的东西自己要学会,收人以鱼不如收人以渔。
第一次写,各位见笑了,不足之处请批评了。
最后附上本人的计算器..方便不是XP系统的或者无聊删了计算器的。
这附件咋还要CB啊。。免CB http://good.gd/2750214.htm
关于显示中文的问题,OD的二进制编辑似乎有问题,用别的东西查一下编码就好了。“你好”的UNICODE 是 604F7D59 填这个就可以现实"你好"的中文了。帖子再发一个转换字符的工具






其实写了这么多也就改了两个地方


01012475 > $ /E9 3A120000               JMP 010136B4
0101247A   |90                                     NOP
0101247B   |90                                     NOP
0101247C   |90                                     NOP
0101247D   |90                                     NOP
0101247E   |90                                     NOP
0101247F   |90                                     NOP
01012480   |90                                     NOP
01012481   > |33DB                               XOR EBX,EBX

010136B1      00                                     DB 00
010136B2      00                                     DB 00
010136B3      00                                     DB 00
010136B4   >6A 00                               PUSH 0
010136B6   .68 DD360101                   PUSH 010136DD
010136BB   .68 EA360101                   PUSH 010136EA
010136C0   .6A 00                              PUSH 0
010136C2   .FF15 A8110001                CALL DWORD PTR DS:
010136C8   .6A 70                              PUSH 70
010136CA   .68 E0150001                  PUSH 010015E0
010136CF   .E8 F4F0FFFF                  CALL 010127C8
010136D4   .^ E9 A8EDFFFF                   JMP 01012481
010136D9      00                                     DB 00
010136DA      00                                     DB 00
010136DB      00                                     DB 00
010136DC      00                                     DB 00
010136DD   .6800 6500 6C00 6C00 6F00 0000   ; 这个右键-二进制-编辑   在HEX那里粘贴
010136E9      00                                     DB 00
010136EA   .60 4F 7D 59 00                                 ; 这个右键-二进制-编辑   在HEX那里粘贴
010136EF      00                                     DB 00
010136F0      00                                     DB 00

最后这俩图是所有修改过的地方

免CBhttp://good.gd/2750343.htm    (字串编码查看器.rar)


银太 发表于 2015-8-22 10:44

q40989795 发表于 2015-6-27 16:20
不要乱下结论.
MessageBox 不管A或W"Unicode" 编码如果显示乱码就使用"ANSI"编码

我记得不知道在哪里见过一句    用vc使用MessageBox 的话 如果是英文就调用 MessageBoxA如果是中文就自动调用MessageBoxW 我再去查查看

银太 发表于 2015-8-22 10:55

q40989795 发表于 2015-6-27 16:20
不要乱下结论.
MessageBox 不管A或W"Unicode" 编码如果显示乱码就使用"ANSI"编码

嗯多谢指教了   自己亲自试了MessageBoxA 可以弹出中文

银太 发表于 2013-10-12 02:35

自己抢沙发了。第一次沙发{:1_918:}

qin_xs 发表于 2013-10-12 02:39

这尼玛什么节奏感情是奔着出教程来的

支持~

qq80107525 发表于 2013-10-12 02:54

板凳?某子玩意、?下载看看先?

CarroAro 发表于 2013-10-12 03:46

挺好玩的
這樣子可以加入提示
就算是非原創軟件也能提醒那些小白該怎麼操作了

L。a 发表于 2013-10-12 07:53

我的为什么不能显示成中文或者是什么的,只要输入就是跟乱码一样。

wkxq 发表于 2013-10-12 08:27

可以加入提示

mwy1024 发表于 2013-10-12 08:31

嘛程序写的都可以么。

hxw555 发表于 2013-10-12 08:48

看样子也是个人才啊

linglong2013 发表于 2013-10-12 08:59

牛人,膜拜
页: [1] 2 3 4 5 6 7
查看完整版本: 给exe添加一个启动时的消息框