下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用OD给exe文件添加一个对话框初探【文章标题】: 用OD给exe文件添加一个对话框初探【文章作者】: CxLrb【作者邮箱】: cxlrb【作者主页】: 【作者qq号】: 21252130【软件名称】: Pe_optimizer1.4汉化版by.CxLrb【下载地址】: 自己搜索下载【使用工具】: OD,HexDecChar,XN Resource Editor【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!-【详细过程】 也许你正想者diy一个可执行文件,给一个汉化好的文件加上自己的对话框,或者直接加上帮助文本,或者显示破解 组织信息。总之是为一个exe文件添加一个对话
2、框,功能类似关于窗口。在此举一个例子供大家参考,实际没什么意义, 但仅仅是出于兴趣和技术探讨,给大家分享我的成功喜悦! 我们以Pe_optimizer1.4 (以下简称PO)这个小程序为例来学习: 1.预备知识-对话框响应原理: 当我们按下界面上的一个菜单或者一个按钮时,DialogBoxParamA会调用窗口回调函数来处理,即把包含菜单命令 的信息作为参数送给窗口回调函数,因为一般界面中菜单或按钮有多个,所以很明显会有下面的类型的代码: cmp ebx, xxxx1 比较按下的按钮ID是否等于xxxx1 jnz short xxxxxxxx1 如果不是,跳过继续判断,xxxxxxxx1为下一
3、个比较的地址 call xxxxxxxx1 如果是,调用该按钮响应的操作 cmp ebx, xxxx2 jnz short xxxxxxxx2 call xxxxxxxx2 . 或者 cmp eax,xxxx1 比较点击的菜单ID是否等于xxxx1 jz xxxxxxxx1 如果是,调用该按钮响应的操作 cmp eax,xxxx2 不是,继续判断 jz xxxxxxxx2 . 或者 cmp ax,xxxx1 比较点击的菜单ID是否等于xxxx1 jz xxxxxxxx1 如果是,调用该按钮响应的操作 cmp ax,xxxx2 不是,继续判断 jz xxxxxxxx2 . 也许还有其他形式,但总
4、会类似以上列举的几种。 本文的例子就是第一种情况。 2. 添加资源按钮和对话框资源 我们用XN Resource Editor 3.0 来打开,然后在主界面对话框上添加一个按钮,ID改为505 (16进制1F9); 然后再添加一个对话框,将对话框的资源名(其实就是ID)称改为103 (16进制67),再在103对话框上添加 一个按钮,ID与关于对话框中关闭的ID (即505)相同即可。最后保存关闭。 运行程序看看,已经出现添加的按钮,但点击不会出现我们添加的对话框,因为还没有响应代码。 3. 添加响应代码。 我们用OD载入PO,右键查找所有模块间的调用,在最后几行我们看到两了DialogBox
5、ParamA这个函数 找到的模块间的调用 地址 反汇编 目标 0040654E call GDI32.CreateFontA 00406567 call jmp.&USER32.SendDlgItemMessageA USER32.SendDlgItemMessageA 004065D1 call USER32.SetDlgItemTextA 00406610 call USER32.EndDialog 00406634 call kernel32.ExitProcess 00406665 call USER32.EndDialog 004066D7 call USER32.DialogBox
6、ParamA 0040675C push ebp (初始 CPU 选择) 004067A1 call USER32.DialogBoxParamA 双击进入第一个看看,到这里: 004066D7 E8 5CDFFFFF call 004066DC EB 14 jmp short Pe_optim.004066F2 004066DE 8B45 08 mov eax, ebp+8 004066E1 A3 E0844000 mov 4084E0, eax 004066E6 E8 F5FDFFFF call Pe_optim.004064E0 004066EB EB 05 jmp short Pe_o
7、ptim.004066F2 004066ED E8 16FFFFFF call Pe_optim.00406608 往上翻翻,目标出现了 00406695 81FB F8010000 cmp ebx, 1F8 典型的ID对比 0040669B 75 05 jnz short Pe_optim.004066A2 ID不正确则执行下一比较 0040669D E8 66FFFFFF call Pe_optim.00406608 ID就转到 00406608 执行响应操作 004066A2 81FB F6010000 cmp ebx, 1F6 第二个ID对比 004066A8 75 05 jnz sh
8、ort Pe_optim.004066AF 004066AA E8 89FCFFFF call Pe_optim.00406338 004066AF 81FB F5010000 cmp ebx, 1F5 004066B5 75 05 jnz short Pe_optim.004066BC 004066B7 E8 C0ECFFFF call Pe_optim.0040537C 004066BC 81FB F7010000 cmp ebx, 1F7 004066C2 75 2E jnz short Pe_optim.004066F2 我们用 资源编辑软件打开 PO,看看各按钮的ID,关于按钮ID为
9、503,我们再看这段代码: 004066BC 81FB F7010000 cmp ebx, 1F7 1F7是10进制503,正好是关于按钮的ID 004066C2 75 2E jnz short Pe_optim.004066F2 如果ID不是503,跳转到004066f2 004066C4 6A 00 push 0 以下就是关于对话框的响应代码 004066C6 68 3C664000 push Pe_optim.0040663C 004066CB 8B45 08 mov eax, ebp+8 004066CE 50 push eax 004066CF 6A 66 push 66 66是关于
10、对话框的ID,10进制102 004066D1 A1 DC844000 mov eax, 4084DC 004066D6 50 push eax 004066D7 E8 5CDFFFFF call 004066DC EB 14 jmp short Pe_optim.004066F2 004066DE 8B45 08 mov eax, ebp+8 004066E1 A3 E0844000 mov 4084E0, eax 004066E6 E8 F5FDFFFF call Pe_optim.004064E0 004066EB EB 05 jmp short Pe_optim.004066F2 00
11、4066ED E8 16FFFFFF call Pe_optim.00406608 004066F2 8BC6 mov eax, esi 004066F4 5E pop esi 004066F5 5B pop ebx 004066F6 5D pop ebp 004066F7 C2 1000 retn 10 我们就从这里下手,找一段空间,添加一段类似以上这段代码,把 004066BC 81FB F7010000 cmp ebx, 1F7 中的1F7 改为你添加的按钮的ID,比如我们添加的按钮ID为1F9,即505,把 004066CF 6A 66 push 66 这句中的66改为你添加的对话框的
12、资源ID,比如我们添加的为67,即103. 其他更高深的代码本人就不能企及了,所以就直接仿造关于窗口。 因此,本人所提到的方法不具有普遍的通用性,还希望抛砖引玉,高人指点,写出一些通用代码给我等菜鸟参考。 接下来就是添加代码了 我们首先找一处空间,文件末端有很多,所以就用那里的,选择一个比较好记忆的地址,如:0040B333,然后我们将上面 比较的代码改成下面这样: 00406693 /75 5D jnz short Pe_optim.004066F2 00406695 |81FB F8010000 cmp ebx, 1F8 0040669B |75 05 jnz short Pe_optim
13、.004066A2 0040669D |E8 66FFFFFF call Pe_optim.00406608 004066A2 |E9 8C4C0000 jmp Pe_optim.0040B333 004066A7 |90 nop 004066A8 |90 nop 004066A9 |90 nop 004066AA |90 nop 004066AB |90 nop 004066AC |90 nop 004066AD |90 nop 004066AE |90 nop 004066AF |81FB F5010000 cmp ebx, 1F5 004066B5 |75 05 jnz short Pe
14、_optim.004066BC 004066B7 |E8 C0ECFFFF call Pe_optim.0040537C 004066BC |81FB F7010000 cmp ebx, 1F7 004066C2 |75 2E jnz short Pe_optim.004066F2 即从 004066A2 81FB F6010000 cmp ebx, 1F6 处直接跳转 0040B333,然后再把这段比较代码加上去即可,其他两句先nop掉。 我们再 0040B333 处加上以下代码: 0040B333 81FB F6010000 cmp ebx, 1F6 把上面nop掉的代码补回 0040B3
15、39 75 05 jnz short Pe_optim.0040B340 0040B340是我们新增的比较的地址 0040B33B E8 F8AFFFFF call Pe_optim.00406338 这一句不变 0040B340 81FB F9010000 cmp ebx, 1F9 1F9这是我们添加的按钮的ID 0040B346 0F85 63B3FFFF jnz Pe_optim.004066AF 注1 0040B34C 6A 00 push 0 0040B34E 68 3C664000 push Pe_optim.0040663C 0040B353 8B45 08 mov eax, e
16、bp+8 0040B356 50 push eax 0040B357 6A 67 push 67 67是我们添加的对话框的ID 0040B359 A1 DC844000 mov eax, 4084DC 0040B35E 50 push eax 0040B35F E8 D492FFFF call 0040B364 EB 14 jmp short Pe_optim.0040B37A 0040B366 8B45 08 mov eax, ebp+8 0040B369 A3 E0844000 mov 4084E0, eax 0040B36E E8 6DB1FFFF call Pe_optim.004064E0 0040B373 EB 05 jmp short Pe_optim.0040B37A 0040B375 E8 8EB2FFFF call Pe_optim.00406608 0040B37A 8BC6 mov eax, esi 0040B37C 5E pop esi 0040B37D 5B pop ebx 0040B37E 5D pop ebp 注1:0040B346
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024展览会场保安服务与展览会期间卫生防疫合同3篇
- 2024年度商标专用权转让及许可使用合同协议3篇
- 2024年度职业院校校服定制及学生制服配套服务合同3篇
- 部队训练安全教案
- 防火安全巡查和检测的重要性
- 2023年新七年级历史开学分班自学反馈拔高题检测卷(解析版)
- 2023-2024学年初中九年级上学期期末道法试题及答案
- 2024年茶艺师(四级)理论知识考试题库(附答案)
- 签订保险协议合同范例
- 商铺乙方解约合同范例
- 01中国电信云计算产品体系架构
- 饮食基因与文化智慧树知到期末考试答案2024年
- 广东省课程思政示范高职院校申报书
- 墙面修复施工方案
- 徐工集团招聘测评题库
- 初中语文九年级下册《短诗五首-月夜》+教学课件
- 开荒保洁物业管理开荒保洁服务实施方案
- 山东省烟台市莱州市2023-2024学年五年级上学期期末考试数学试题
- 2016-2023年南京信息职业技术学院高职单招(英语/数学/语文)笔试历年考点试题甄选合集含答案解析
- 山东省枣庄市滕州市2023-2024学年高二上学期1月期末考试物理试题
- 售前解决方案部门管理规章制度
评论
0/150
提交评论