首页
社区
课程
招聘
[原创]OllyDBG 数据转换和反汇编代码插件2013-3-10 更新 支持OD2.01h
发表于: 2013-2-24 17:41 36193

[原创]OllyDBG 数据转换和反汇编代码插件2013-3-10 更新 支持OD2.01h

2013-2-24 17:41
36193

内存数据转换OD-Plugin
;===============================================================================================
  这个插件可以将内存数据转换成(asm,vb,vc,delphi,E)编程语言的静态数组和
Masm32源代码。可以说是整合了"内存数据格式转换.dll"和"Asm2Clipboard.dll",
但解决了两个插件的中存在bug。新增子过程引用的代码抽取,生成的代码可以直接编
译,大大方便了反源码工作,总之这个插件超实用 :)

        *****功能:反汇编代码,提取包括子过程和相关引用内存数据
        **** 功能:反汇编代码带行号处理和进制处理(可直接编译)
        ***  功能:转换成各种编程语言的静态数组
        ***  功能:支持OD2.0x 和 OD1.0x
        **   功能:文本编码转换
        *    功能:菜单设置快捷键,方便键盘选取
        *    功能:复制文本

       
        选定代码或数据,然后右键“数据转换”
        转换后的数据在ClipBoard中,用右键粘贴出来就可以
        DataChage.dll  是Olldbg 1.0X插件
        DataChage2.dll 是Olldbg 2.0X插件

;==============================问答操作小技巧======================================================

<1>        问:如何大范围选定数据块?
        答:先点击“开始地址”,然后跳到“结束地址”,然后按下"Shift"键,再点击“结束地址”位置。

<2>        问:如何提取子过程代码
        答:先择"Call XXXX"后,点"包括子过程",然后点右键粘贴出来就行。

<3>        问:为什么点“包括子过程”时会崩溃?
        答:因为子过程中的Call过多,生成的代码太大,所以会出错,在.net中这个问题比较突出。

<4>        问:配置文件如何修改?(注:在菜单中"设置"可直接更改)
        答:个人的配置可以直接修改ollydbg.ini文件中的[Plugin DataChage],数值型的用十六进制数,是/否的用'1','0'
                EditDlg=<0或1>                        ;是否转换数据后弹出Text对话框
                MultiAsmLabel=<0或1>                ;设置为MUltimate Assembler插件的label
                LineCount=<十六进制数值>        ;设置每行多少个数据
                SetTabLen=<十六进制数值>        ;设置Tab对齐位数,如果不为0,则用N个空格代替
                SubCallCount=<十六进制数值>        ;设置生成Proc的总数
                SubCallDepth<十六进制数值>        ;设置调用call的递归深度

                DataAutoBuild=<0或1>                ;是否自动转换相关内存引用数据
                DataAddrStart=<十六进制数值>        ;设置数段开始地址(过滤掉常量)
                DataAddrEnd=<十六进制数值>        ;设置数段结束地址(过滤掉常量)
                DataAddrStep=<十六进制数值>        ;地址1-地址2 <DataAddrStep时直接转换
                DataAddrArea=<十六进制数值>        ;超过DataAddrStep,只转换DataAddrArea

<5>        问:自动转换相关内存数据有误或代码数据引用有误?
        答:内存地址引用的数据自动提取与地址有关,能过参数优化,减少错误,
            但有些还是要手动修改地,要对"内存地址、[内存地址]、常量"进行修正!!!

;===================================================================================================
;==============================更新历史=============================================================
2013-03-10
        修正生成易语言数组
2013-02-17
        新增生成易语言数组
2013-01-29
        修改对Ollydbg 2.01h的支持,与2.01f以前不兼容
2012-09-27
        新增对Ollydbg 2.0的支持
        优化菜单的快捷键(点右键后用键盘选取),方便操作
        修正ReadMemory时没有恢复断点的错误
        修正贴粘板的异常问题.
2012-09-04
        修正Buffer大小和自动转换数据的错误
2012-08-22
        新增相关内存地址引用的数据自动提取,但"内存地址、[内存地址]、常量"要注意区分修正!!!
        新增DataAutoBuild=<0或1>等相关选项设置
2012-08-08
        新增"数据转换-重复"命令,不用在子菜单中查找(默认是"文本")

2011-12-22
        修正某些小Bug,新增网页Unicode的转换(如"#20332,#48334")

2011-03-23
        修正贴粘板的异常问题.
2011-03-14
        修改了一些小bug,增强反汇编功能中对api的一些优化处理
2011-03-11
        加入设置对话框,配置保存在ollydbg.ini,使更新版本不用改dll。
        增加SubCallCount=<十六进制数值>,SubCallDepth=<十六进制数值>
2011-03-02
        加上设置Tab对齐位数SetTabLen=<十六进制数值>,数值为空格个数,另更改内存申请方式,减少粘贴板占用内存.

2011-02-27
        修正反汇编时int3断点问题

2011-02-26
        加上dump数据的转存和加载,更正一些小错误。

2011-02-23
        加对MUltimate Assembler v1.3 的label的支持开关MultiAsmLabel=<0或1>,在FileIP:0420h处
        加上特征码提取功能.

2011-02-22
        加上清除地址中的模块名称,另外加了子过程要是有函数名时,生成的proc直接使用子过程名称

2011-2-10
        加上弹框选项和数据一行多少个,喜欢DIY的请自己用hex编辑器修改datachage.dll
        fileIP 400 处的(EditDlg=<0或1>,LineCount=<十六进制数值>

2011-2-9
         加上Delphi数组定义的完整格式

2011-2-1
        加上反汇编时连子过程也一起生成出来(跟IDA中的GetCall)类似 ,更加方便提取代码
        加上EN版的dll

2011-1-25
        加上了中英插件的菜单分行

2011-1-9
        修正 push -1 问题

2011-1-7
        字符串带编码转换
        更正label错位bug


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (52)
雪    币: 7428
活跃值: (3714)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢楼主分享,楼主元宵快乐!
2013-2-24 18:13
0
雪    币: 143
活跃值: (263)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
顶楼主一个,
2013-2-24 18:31
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看看!支持下!
2013-2-24 18:33
0
雪    币: 6535
活跃值: (4491)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
5
这个插件不错,方便
2013-2-24 19:00
0
雪    币: 3645
活跃值: (4212)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
6
支持更新!感谢提供好工具。
2013-2-24 22:27
0
雪    币: 12365
活跃值: (3805)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
非常感谢,收下了
2013-3-1 09:27
0
雪    币: 172
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢LZ分享。。。
2013-3-1 19:58
0
雪    币: 2882
活跃值: (1267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
9
支持又更新了。
2013-3-1 21:05
0
雪    币: 16403
活跃值: (1615)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
能给个视频 就更牛X了。
2013-3-5 15:45
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
11
感谢分享,辛苦辛苦。
2013-3-7 20:10
0
雪    币: 97697
活跃值: (200744)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
12
2013-3-8 11:17
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
veryGood,非常强大的插件~~~~~~~~
2013-3-9 15:47
0
雪    币: 65
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
顶一下好工具。
2013-3-9 15:54
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
生成的易语言数据有点问题
会提示: 错误(14),存在无效的字符,名称运算符,或表达式

解决方案
首先把 0D 0A  ,也就是换行符去掉
然后把 09 09  ,貌似是TAB符号,也去掉
最后把 3B       ,也就是 ";" 去掉

可以看出楼主对易语言算是非常陌生,猜测以为易语言的注释符为" ;"
其实易语言的注释符号为 单引号~

最后,再在生成的代码前面加上

.版本 2

.局部变量 MyArray, 字节集


就完美了~~~
2013-3-9 16:09
0
雪    币: 220
活跃值: (107)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
要是数据量大不能分行吗?分行也是为了对齐好看。还是换行只要 0a 或 0d ?
09 只要设置 SetTabLen 就会换成空格
易语句结束不是像C一样用“;”号吗?
最好弄一小段程序例子来看看...我照抄一下..
2013-3-9 17:37
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
17
首先纠正楼主:易语言的ide是智能的,处理数据时,会自动整理数据,这非常重要

好的,为了易语言,详细弄一下吧

首先打开od,载入一个程序,在入口处选一个过程然后复制易语言的数据
得到这个原始数据
MyArray ={
                106, 000, 232, 242, 000, 000, 000, 163, 036, 064, 064, 000, 106, 000, 104, 117,
                034, 064, 000, 106, 000, 104, 232, 003, 000, 000, 255, 053, 036, 064, 064, 000,
                232, 038, 000, 000, 000, 080, 232, 182, 000, 000, 000, 195 };


上面的数据复制到易语言会提示不正确
经过修改后(下面的是修改后的,请关闭记事本的自动换行!!!)
MyArray ={106, 000, 232, 242, 000, 000, 000, 163, 036, 064, 064, 000, 106, 000, 104, 117,034, 064, 000, 106, 000, 104, 232, 003, 000, 000, 255, 053, 036, 064, 064, 000,232, 038, 000, 000, 000, 080, 232, 182, 000, 000, 000, 195 }

好了,把换行,回车,和后面的分号去掉得到上面的数据,复制到易语言,ok,按一下回车,自动整理
'估计楼主不知道易语言会自动整理语句(所以说回车啊,TAB啊,分号啊,通通不要,要了居然会出错)

下面我在易语言里复制一些易语言源码贴出来楼主参考吧
下面全部都是经过易语言IDE整理的代码
代码1(易语言IDE中的形式)


复制出文本后的形式

.版本 2

' 这是注释,代码开始
MyArray = { 106, 0, 232, 242, 0, 0, 0, 163, 36, 64, 64, 0, 106, 0, 104, 117, 34, 64, 0, 106, 0, 104, 232, 3, 0, 0, 255, 53, 36, 64, 64, 0, 232, 38, 0, 0, 0, 80, 232, 182, 0, 0, 0, 195 }  ' 这里也可以写注释哦
' 这是注释,代码结束了哦


下面来一个helloword的
首先是易语言IDE中显示的样子


下面是复制出来的文本(可以看到,很特别)
.版本 2

' 这是注释,代码开始
信息框 (“你好,世界~~~”, 0, #确认钮)  ' 这里也可以写注释哦
' 这是注释,代码结束了哦



哦居然忘说了,易语言每一句语句的结尾不用加分号,不用加任何东西
上传的附件:
2013-3-9 18:44
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
18
好吧,这个插件的确很好用,我也不辞辛劳想要更完善
我用易语言写了个小程序,能修正你的插件复制出来的易语言数据
注意:易语言程序误报是出了名的!!!(看附件吧)

[ATTACH]附件+源码[/ATTACH]
上传的附件:
2013-3-9 19:19
0
雪    币: 220
活跃值: (107)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
2013-03-10
        修正生成易语言数组

试看看对不对..

MyArray ={104, 180, 065, 064, 000, 104, 025, 000, 002, 000, 106, 000, 104, 143, 065, 064,000, 104, 002, 000, 000, 128, 232, 245, 013, 000, 000, 131, 248, 000 } '00030
2013-3-10 10:31
0
雪    币: 112
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
Mark一下
2013-3-10 14:02
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
21
verygood,完全没问题了~~~
2013-3-10 14:56
0
雪    币: 256
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
我在用这个插件的老版本的,很不错
2013-3-11 00:23
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
强力up.....................
2013-3-12 02:21
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好东西,谢谢楼主分享
2013-3-12 08:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
做什么用的?
2013-3-12 12:51
0
游客
登录 | 注册 方可回帖
返回
//