mycsy 发表于 2009-7-3 21:28

OD插件SkyPatch

前言
        NonaWrite出来时,还真以为以后在OD中写补丁代码是个比较爽的事,但写着写着,就发现还是不爽,
当有很多跳转时,就变得更痛苦了,最坏的情况是改一个地方,可能所有跳转都得改变。罪魁祸首就是没有标号
功能,这也是SkyPatch要实现的。

2009.07.02
版本1.3
重写汇编功能模块
修正
1,汇编后的代码没有优化
2,长跳转问题
3,菜单显示问题

2009.06.27
修正BUG1
描述:
如写入的字串变量 $str 放在 VA 地址 00A00000 以后,则类似 push $str 这样的指令无法构建。

错误的命令位于行: 18 PUSH a17250 Unknown identifier构建失败

修正BUG2
        一些语句与OD汇编的代码不一样,导致二进制字节串错位。
谢谢大家的提醒与支持

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

2006.12.26
版本1.1
修正了一些Bug
添加了patch数据的导出功能,使用也做了一下调整,脚本写好后,先要编译一下,直到没有错误
然后你可使用patch功能直接在当前调试的文件中打补丁,或直接把patch数据导出到一个文件中,
目前只是提供了C 和delphi两种格式的数据形式。




2006.12.10
版本1.0
一、安装
        只要把SkyPatch.dll这个文件放到OllyDBG的插件目录下,把RAEdit.dll这个文件放到OllyDBG的根目录下
(注:RAEdit.dll千万不能放到插件目录下,否则OD会认为也是个插件,如你已安装了NonaWrite,也请先把插件目
录下RAEdit.dll移到其他目录,其实NonaWrite没用到RAEdit.dll)。安装好后,就可通过OllyDbg 的插件菜单和
相关菜单上访问这个插件了。

二、使用
        SkyPatch是一个全新的,与NonaWrite类似的,用来帮助你在 OllyDbg 中写补丁代码的插件,有了它,这回
你会发现在OD中写补丁代码真的是个比较爽的事。
        界面比较简单,
        一个代码编辑窗口,借用KetilO(RadASM 的作者) 的 RAEdit 控件 (非常感谢)
        一个信息输出窗口
        四个按键,分别实现汇编补丁代码,打开脚本文件(扩展名为odp或txt),
                                        保存脚本,关闭主界面
        剩下的就是你写脚本的事了,但在写之前一定还请你先看完下面的说明

三、语法
        支持所有的能在 OllyDbg "汇编"窗口中输入的命令,并添加了标号和块注释功能。
===============================================================================
        标号
        标号不能重名,
        标号要单独一行

        分为以下几类

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

        一般标号
        格式:@xxx:
        说明:以“@”开始,“:”结尾,中间可是任意的26个字母和数字的组合
        参考:
@loop3:
xor ecx,ecx

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

        串标号
        格式:$xxx
        说明:以“@”开始,空格“ ”结尾,中间可是任意的26个字母和数字的组合,
           串标号后面可跟用“”引起的字符串,编译后会自动在串后加0,或
           用##引起的十六进制字符串,大小必须是2的倍数
           串标号可在代码中引用
        参考:
$str1 "this is the first string"   
                "jjjs this is the first string"
$str2 #45efe3003455667898df2256009980000#

mov esi,$str2 ;在代码中引用串标号
--------------------------------------------------------------------------------

        语句块结束标号
        格式:@$xxx:
        说明:以“@$”开始,“:”结尾,中间可是任意的26个字母和数字的组合
              这个标号刚开始只想用于串块后标识串块结束地址,后面发现有时
              在语句后也有用
        参考:
@0x00405E64:
        jmp @start;从0x00405E64跳出
@$backinit:   ;再跳回上一次跳出的下一句处

@0x00402690: ;EIP标号,标识串块开始
$str1 "this is the first string"   
                "jjjs this is the first string"
$str2 #45efe3003455667898df2256009980000#
@$: ;语句结束标号,标识串块结束

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

        EIP标号
        格式:@0xxxx:
           EIP标号 = 语句结束标号 ± 十六进制的常数(前面包含 0x 前缀):
        说明:有两种形式的eip标号,一、以“@0x”开始,“:”结尾,中间可是任意的十六进制地址
           二、EIP标号以“@”开始,连着任意的26个字母和数字的组合的标识,“=”后面是一
           个表达式(标号[一般标号|EIP标号|语句块结束标号][加或减] 一个十六进制的常数),
                最后以“:”结尾
        参考:
@0x00402690: ;EIP标号,标识串块开始
$str1 "this is the first string"   
                "jjjs this is the first string"
$str2 #45efe3003455667898df2256009980000#
@$:                 ;语句结束标号,标识串块结束

@start = @$ + 0x4:        ;与串块结束相隔4个字节开始写代码
call 406210

================================================================================
        注释,分为单行注释和块注释
       
--------------------------------------------------------------------------------

        单行注释
        格式:;xxxxxxxx
        说明:以“;”开始标识,可注一整行或跟在代码后

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

        块注释
        格式:/*xxxxxxx*/
        说明:以“/*”开始标识,以“*/”结束标识

--------------------------------------------------------------------------------
四、一个实例
        参见包中的test1.odp补丁脚本
       
五、感谢
        感谢olly开发出这么好的工具,试目以待2。0的到来
        感谢KetilO(RadASM 的作者) 的 RAEdit 控件 (非常感谢)

最后,如此插件能对你有所帮助,那我的目的就达到了,也真诚希望各位多提宝贵意见

gxwtk 发表于 2009-7-5 14:38

谢谢,下来收藏先。

newbie000 发表于 2009-7-22 22:57

不错,谢谢了啊 啊 啊

江城流氓 发表于 2009-7-3 23:00

好东西来分享一下拉

嗳在SKY 发表于 2009-7-11 13:03

顶顶先哈哈

fhqj 发表于 2009-7-5 14:52

学习了,谢谢!

grantman 发表于 2010-5-21 06:39

不错,谢谢了

che999 发表于 2010-5-25 18:20

目前还不会汇编。

wangq6688 发表于 2010-12-3 17:30

我下了试一下谢谢

Kiζs~乄 发表于 2011-3-3 23:55

要支持啊
页: [1] 2 3
查看完整版本: OD插件SkyPatch