iamok 发表于 2008-6-27 12:26:50

轻松自己写补丁(易语言补丁模块)[7月1日放源码]

源码在11楼


模块名称:补丁模块
作者:Iamok
版本:1.0


------------------------------

.版本 2

.子程序 内存补丁, , 公开
.参数 补丁文件, 文本型, , 欲应用补丁的文件名,注意大小写要一致
.参数 补丁地址, 整数型, 数组, 欲应用补丁的地址(10进制)
.参数 地址原值, 整数型, 数组, 此地址的值(10进制)
.参数 地址修改值, 整数型, 数组, 此地址欲修改的值(10进制)
.参数 LOADER模式, 逻辑型, , 真为loader模式;假为普通模式

.子程序 文件补丁, , 公开
.参数 补丁文件, 文本型, , 打补丁的文件名(包括完整路径)
.参数 原始内容, 文本型, , 欲修改部分的HEX代码
.参数 补丁内容, 文本型, , 修改后的HEX代码

.子程序 文件补丁2, , 公开
.参数 补丁文件, 文本型, , 打补丁的文件
.参数 地址, 文本型, , 偏移地址
.参数 修改值, 文本型, , 修改的HEX值

.子程序 转换到十进制, 整数型, 公开, 将2,8,16进制文本转换到10进制数值(返回十进制数)
.参数 文本, 文本型, , 2,8,16进制文件
.参数 进制, 整数型, , 2为二进制,8为八进制,16为16进制
文件补丁例子:
.版本 2

.程序集 窗口程序集1

.子程序 _补丁_被单击
.局部变量 程序路径, 文本型
.局部变量 临时内容, 字节集

.如果 (文件是否存在 (取当前目录 () + “\MP3_Audio_Recorder_gb.exe”) = 假)
    .如果真 (通用对话框1.打开 ())
      程序路径 = 通用对话框1.文件名
    .如果真结束

.否则
    程序路径 = 取当前目录 () + “\MP3_Audio_Recorder_gb.exe”
.如果结束
.如果真 (选择框1.选中 = 真)
    临时内容 = 读入文件 (程序路径)
    写到文件 (程序路径 + “.bak”, 临时内容)
.如果真结束
文件补丁 (程序路径, “8D 45 F4 BA 03 00 00 00 E8 EF 9D F2 FF C3 E9 25 97 F2 FF EB EB 8B C3”, “8D 45 F4 BA 03 00 00 00 E8 EF 9D F2 FF C3 E9 25 97 F2 FF EB EB B0 01”)
信息框 (“补丁成功!”, 64, )

内存补丁例子:
.版本 2

.程序集 窗口程序集1

.子程序 __启动窗口_创建完毕

内存补丁 (“MP3_Audio_Recorder_gb.exe”, { 5088853, 5088854 }, { 139, 195 }, { 176, 1 }, 真)
结束 ()

例子程序下载地址:
http://www.flywing.cn/mp3_audio_recorder.htm
修改方式:
004DA640      8D45 F4            lea eax,dword ptr ss:
004DA643      BA 03000000      mov edx,3
004DA648      E8 EF9DF2FF      call MP3_Audi.0040443C
004DA64D      C3               retn
004DA64E    ^ E9 2597F2FF      jmp MP3_Audi.00403D78
004DA653    ^ EB EB            jmp short MP3_Audi.004DA640
004DA655      8BC3               mov eax,ebx                         ;改为 mov al,1
004DA657   .5F               pop edi




6月29日添加文件补丁2,偏移修改方式:
例子代码:
.版本 2

.程序集 窗口程序集1

.子程序 _按钮1_被单击
.局部变量 程序路径, 文本型

.如果真 (通用对话框1.打开 ())
    程序路径 = 通用对话框1.文件名
    文件补丁2 (程序路径, “13E94E”, “00”)
    信息框 (“补丁完成!”, 64, )
修改程序下载地址:
http://www.skycn.com/soft/574.html
修改方法:
0053E945    8B55 FC         mov edx,dword ptr ss:
0053E948    E8 DB59ECFF       call ScriptEx.00404328
0053E94D    75 04             jnz short ScriptEx.0053E953                        ; 修改为75 00
0053E94F    C645 F7 01      mov byte ptr ss:,1
0053E953    33C0            xor eax,eax
0053E955    5A                pop edx
0053E956    59                pop ecx
说明:
使用文件补丁和文件补丁2时,如果要修改多处内容请按以下格式(注意引号的位置):
"{1111111111,2222222222,33333333}"

[ 本帖最后由 iamok 于 2008-7-1 08:30 编辑 ]

ruyi7952 发表于 2008-6-29 09:55:12

楼主?
你用的是不是外挂海模块呢???

iamok 发表于 2008-6-29 10:25:48

我发的就是模块啊,我自己写的,其中有部分也是参考了外挂海的源码,专门给程序做补丁用。。。
看来没什么人需要啊。。。

[ 本帖最后由 iamok 于 2008-6-29 10:28 编辑 ]

ThanksBoy 发表于 2008-6-29 16:50:25

不知可否做内存注册机啊?

iamok 发表于 2008-6-29 17:54:09

原帖由 ThanksBoy 于 2008-6-29 16:50 发表 https://www.chinapyg.com/images/common/back.gif
不知可否做内存注册机啊?
不能。。。

冰糖 发表于 2008-6-29 20:03:57

啥时候开源/:023

dzbbs 发表于 2008-6-29 20:13:35

感谢楼主分享!!!支持一下~

qqyspgj 发表于 2008-6-30 13:26:52

感谢楼主分享!!!/:001

lml0126 发表于 2008-6-30 16:27:16

强烈希望到到楼主的源代码,模块轻易还是不敢用

hflywolf 发表于 2008-6-30 16:31:32

/:09 /:09
支持LZ开源,让大家也学习一下:handshake :handshake
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 轻松自己写补丁(易语言补丁模块)[7月1日放源码]