怎么不懂变通呢,既然知道补丁原理了 那么工具只是调用函数 写入内存地址啊,就和hook一样,或者注入器一样道理我这里给你看一下源码,希望你能看懂
.版本 2
.支持库 edroptarget
.支持库 iext
.支持库 spec
.支持库 eAPI
.程序集 窗口程序集1
.程序集变量 内存1, 类_内存
.子程序 __启动窗口_创建完毕
多炫皮肤 (#_黑客风格)
拖放对象1.注册拖放控件 (编辑框_程序路径.取窗口句柄 ())
拖放对象1.接收文件 = 真
.子程序 _拖放对象1_得到文件
.参数 接收到的文件路径, 文本型
编辑框_程序路径.内容 = 接收到的文件路径
.子程序 _时钟1_周期事件
.如果真 (编辑框_程序路径.内容 ≠ “”)
程序名 = 分割文本 (编辑框_程序路径.内容, “\”, )
.如果 (真 = 进程_是否存在 (程序名 [取数组成员数 (程序名)], 真))
编辑框_运行状态.内容 = “-----已运行-----”
.否则
编辑框_运行状态.内容 = “-----未运行-----”
.如果结束
.如果真结束
.子程序 _按钮_浏览文件_被单击
通用对话框1.初始目录 = 取运行目录 ()
通用对话框1.标题 = “选择目标文件”
通用对话框1.初始过滤器 = 0
通用对话框1.打开 ()
编辑框_程序路径.内容 = 通用对话框1.文件名
.子程序 _按钮_添加_被单击
.如果真 (编辑框_修改指令.内容 ≠ “” 且 编辑框_内存地址.内容 ≠ “”)
表项索引 = 超级列表框1.插入表项 (, , , , , )
编辑框_内存地址.内容 = 删全部空 (编辑框_内存地址.内容)
编辑框_修改指令.内容 = 删全部空 (编辑框_修改指令.内容)
超级列表框1.置标题 (表项索引, 0, 编辑框_内存地址.内容)
超级列表框1.置标题 (表项索引, 1, 编辑框_修改指令.内容)
编辑框_内存地址.内容 = “”
编辑框_修改指令.内容 = “”
.如果真结束
.子程序 _超级列表框1_被双击, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
编辑框_内存地址.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 0)
编辑框_修改指令.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
.子程序 _按钮_修改_被单击
超级列表框1.置标题 (超级列表框1.现行选中项, 0, 编辑框_内存地址.内容)
超级列表框1.置标题 (超级列表框1.现行选中项, 1, 编辑框_修改指令.内容)
.子程序 _按钮_删除_被单击
超级列表框1.删除表项 (超级列表框1.现行选中项)
.子程序 _按钮_一键逆向_被单击
.如果真 (编辑框_程序路径.内容 ≠ “”)
.如果真 (超级列表框1.取表项数 () ≠ 0)
运行 (编辑框_程序路径.内容, 假, )
超级延迟 (到数值 (编辑框_等待时间.内容))
打补丁 ()
.如果真结束
.如果真结束
.子程序 超级延迟
.参数 时间, 整数型
.局部变量 启动时间, 整数型
.局部变量 结束时间, 整数型
启动时间 = 取启动时间 ()
.判断循环首 (结束时间 - 启动时间 < 时间)
延迟 (5)
结束时间 = 取启动时间 ()
.判断循环尾 ()
.子程序 打补丁
.局部变量 系统进程, 进程信息, , "0"
.局部变量 计次, 整数型
.局部变量 被和谐的进程数组, , , "0"
.局部变量 计次1, 整数型
.局部变量 计次2, 整数型
程序名 = 分割文本 (编辑框_程序路径.内容, “\”, )
' 信息框 (程序名 [取数组成员数 (程序名)], 0, )
系统进程 = 取系统进程列表 ()
.计次循环首 (取数组成员数 (系统进程), 计次)
.如果真 (系统进程 [计次].进程名称 = 程序名 [取数组成员数 (程序名)])
加入成员 (被和谐的进程数组, 系统进程 [计次].进程标识符)
.如果真结束
.计次循环尾 ()
.计次循环首 (取数组成员数 (被和谐的进程数组), 计次1)
.计次循环首 (超级列表框1.取表项数 (), 计次2)
内存1.写字节集 (被和谐的进程数组 [计次1], 进制_十六到十 (超级列表框1.取标题 (计次2 - 1, 0)), 字节集_还原 (超级列表框1.取标题 (计次2 - 1, 1)))
.计次循环尾 ()
.计次循环尾 ()
编辑框_逆向状态.内容 = “-----已PJ-----”
.子程序 _按钮_仅逆向_被单击
.如果真 (编辑框_程序路径.内容 ≠ “”)
.如果真 (超级列表框1.取表项数 () ≠ 0)
打补丁 ()
.如果真结束
.如果真结束
.子程序 _按钮_保存配置项_被单击
.局部变量 临时文本, 文本型
.局部变量 i, 整数型
.如果 (超级列表框1.取表项数 () ≠ 0)
通用对话框2.初始目录 = 取运行目录 ()
通用对话框2.标题 = “选择目标文件”
' 通用对话框2.过滤器 = “文件(*.ini)|*.ini”
通用对话框2.文件名 = “配置项”
通用对话框2.打开 ()
.计次循环首 (超级列表框1.取表项数 (), i)
临时文本 = 临时文本 + 超级列表框1.取标题 (i - 1, 0) + “|” + 超级列表框1.取标题 (i - 1, 1) + “|”
.计次循环尾 ()
.如果真 (-1 ≠ 寻找文本 (通用对话框2.文件名, “ini”, , 假))
写到文件 (通用对话框2.文件名, 到字节集 (临时文本))
.如果真结束
.否则
信息框 (“我擦 忘记写东西了”, 0, “汗!”)
.如果结束
.子程序 _按钮_读取配置项_被单击
.局部变量 得到的文本, 文本型
.局部变量 分割后的文本, 文本型, , "0"
.局部变量 j, 整数型
.局部变量 k, 整数型
.局部变量 计次, 整数型
超级列表框1.全部删除 ()
通用对话框3.初始目录 = 取运行目录 ()
通用对话框3.标题 = “选择目标文件”
通用对话框3.过滤器 = “文件(*.ini)|*.ini”
通用对话框3.打开 ()
得到的文本 = 到文本 (读入文件 (通用对话框3.文件名))
分割后的文本 = 分割文本 (得到的文本, “|”, )
.计次循环首 (取数组成员数 (分割后的文本) ÷ 2, 计次)
j = 2 × 计次 - 1
k = 超级列表框1.插入表项 (, , , , , )
超级列表框1.置标题 (k, 0, 分割后的文本 [j])
超级列表框1.置标题 (k, 1, 分割后的文本 [j + 1])
.计次循环尾 ()
.子程序 _时钟2_周期事件
.如果真 (编辑框_运行状态.内容 = “-----未运行-----”)
编辑框_逆向状态.内容 = “-----未逆向-----”
.如果真结束
|