看雪论坛
发新帖
16

[逆向分析基础] [原创]简单编写OD插件(附prince's TracKid源码)

prince 2005-3-2 14:22 35964
简单编写OD插件(附prince's TracKid源码)

        OllyDbg是一个超强的WIN32调试器,相信大家都熟悉得不能再熟悉了,这里就不多说了。她提供

的插件接口给无数喜爱她的FANS带来了极大的方便,常用的OD隐藏插件、内存DUMP插件等更是脱壳必备。

看着各种插件的推陈出新,大家有没有想过自己写一个属于自己的插件,实现给OD增加自己想要的功能呢

?如果答案是肯定的话,其实很简单,看了本文之后你就可以轻松地写出属于你自己的插件了。

        首先到OllyDbg的网站(http://home.t-online.de/home/ollydbg/)上下载OD的API手册OllyDbg

Plugin API v1.10,仔细阅读。如果你英文足够好的话,OK,看到这里就可以了,剩下的去看OD的API手

册足够了,从那里你可以获得你想要的任何东西! :)

        如果你懒得看英文,那我们继续。

        准备工作,设置编译器。打开VC++6.0新建一个Win32 Dynamic-Link Library工程,把Plugin.h

头文件加到工程中来,在.cpp文件中include Plugin.h头文件。然后ALT+F7打开Project->Settings,在

C/C++选项卡的最下面Project Options里加上“/J”(没有引号),就是将缺省的char类型设置为

unsigned(Set default char type to unsigned)。把OllyDbg.lib文件加到Resource Files里面。在编

译链接过程中出现LNK2001错误可将Plugin.h头文件中的API函数名称前加下划线"_"即可。

        在OD的Plugin API手册里面Plugin callback functions目录里可以看到如下说明:
        Plugin interface includes several callback functions. OllyDbg calls them to install

or remove plugin and on important events, like selected menu item or pressed shortcut key.

Only two callback are mandatory: ODBG_Plugindata and ODBG_Plugininit, all other are

optional. Don't forget to export your callbacks!

        看到了吗?只有ODBG_Plugindata和ODBG_Plugininit这两个函数是必需的(mandatory),也就是

编写OD插件的必要元素:

        int ODBG_Plugindata(char *shortname);

        shortname - 32个字节的字符指针,buffer内容为我们要编写的插件名称,此名称用来显示在OD

的插件菜单里面。

        int ODBG_Plugininit(int ollydbgversion,HWND hw,ulong *features);

        ollydbgversion - 看名字就知道了,OD的版本号;
       
        hw                - OD主窗口的句柄;

        features       - 保留。

        在你的程序中编写完这两个回调函数,你就可以在OD的插件菜单里看到你自己的插件的名称了。

接下来编写插件的子菜单的显示。同样编写回调函数ODBG_Pluginmenu:

        ODBG_Pluginmenu(int origin,char data[4096],void *item);

        origin - 调用该回调函数的窗口编号。具体值请参考API手册,举例来说,PM_MAIN,子菜单显

示在主窗口的插件菜单中,PM_DISASM, 子菜单显示在反汇编窗口中...

        data   - 子菜单显示的字符串,具体格式请参考API手册;

        item   - 指向窗口中显示的和被选中的数据,可以为NULL。

        OK,现在菜单都有了,开始编写我们自己的代码了。回调函数ODBG_Pluginaction帮助我们实现

插件菜单的响应代码:

        ODBG_Pluginaction(int origin, int action, void *item);

        origin - 上面介绍过了;

        action - 菜单的ID;

        item   - 同上。

        我们在这个回调函数中用switch (action)来分类各个菜单ID并添加响应代码,具体想实现什么

功能,呵呵,完全看你了~

        到此,一个最简单的OD插件基本就成型了,这里只是讲OD插件的简单编写方法,其实复杂的东西

也是由简单的、微小的元素按照逻辑堆积而成的,我们知道了基本的编写方法,何愁写不出优秀强大的插

件呢?

        这里给出一个简单的例子,小弟胡乱写的一个玩具,OD跟踪记录插件prince's TracKid的VC源码

,就当随便抛个砖头吧,希望能够早日看到各位的"美玉"!

        更复杂的例子可以参考Luocong大侠的OD中文字符插件源码。

        小弟编程菜鸟,代码混乱,请各位大侠指教。
       
        E-mail: cracker_prince@163.com            QQ: 812937

                                                                 prince 2005.03.02

        附件中包含prince's TracKid源码、OllyDbg Plugin API V1.10
        附件:TracKid.rar
本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (40)
85
fly 2005-3-2 15:32
2
辛苦   
1
萝卜 2005-3-2 15:54
3
强烈支持!!!
2
hmimys 2005-3-2 15:56
4
好,支持一下!
11
FishSeeWater 2005-3-2 16:44
5
好贴!!!!
1
benbentaiyang 2005-3-2 17:13
6
兄弟,我来给你顶了!!!
24
nbw 2005-3-2 17:23
7
学习一下!
linhanshi 2005-3-2 17:39
8
I sustain.
1
ljy3282393 2005-3-2 22:42
9
学习一下!
7
clide2000 2005-3-2 23:17
10
辛苦了,支持
9
newsearch 2005-3-2 23:17
11
辛苦,我顶!
7
clide2000 2005-3-2 23:38
12
希望有更多的源码出现,特别是一些其它语言的,如delphi
1
采臣·宁 2005-3-3 00:14
13
好贴正如美妇,我顶
16
prince 2005-3-3 08:35
14
[i]最初由 clide2000 发布[/i] [B]希望有更多的源码出现,特别是一些其它语言的,如delphi [/B]


OllyDbg网站提供了两个编译器的设置方法,一个是MSVC,另一个是Borland C++,如果你习惯Borland公司的编译器,可以使用BC。Delphi以前用过,但是不熟...
kkx2008 2005-3-3 11:46
15
19
qiweixue 2005-3-3 11:50
16
我也之之之啊。。。
3
北冥之鱼 2005-3-3 12:40
17
好贴!学习!
东方弘 2005-3-3 15:11
18
不错,有机会试一试。
1806 2005-3-9 20:40
19
楼主你太强了,我怎么才能......
2
poppig 2005-5-10 15:38
20
了解了
1
pmma 2005-11-20 14:34
21
好,不知道谁能出个OLLYDBG.INC,汇编的版本
张小刚 2008-11-14 07:31
22
顶下  
技术发扬光大。。。。
已被使用 2009-1-31 11:20
23
学习的开始,谢楼主
ZHUQM 2010-4-3 22:30
24
学习一下! 顶一下!
komnb 2010-4-8 02:12
25
不错的文章!太有才了!**
imbadyc 2010-11-5 20:05
26
相见太晚
cnfixit 2010-11-5 23:28
27
不错不错,学习了
高军 2010-11-6 17:00
28
好东西,收藏了
kaso 2011-3-16 19:58
29
剛剛看了樓主的代碼...........真是讓我收穫良多
flycgx 2011-3-16 21:05
30
学习一下,楼主辛苦了
1
sunlulu 2011-4-9 09:00
31
好贴!!!!!
qincccken 2011-9-18 23:42
32
不错啊,写得很详细,学习了!
3
tihty 2011-9-18 23:45
33
od插件我也要学
pcboyman 2012-4-14 20:05
34
绝对的好东西
夜Wang 2012-5-17 23:20
35
学习了,非常感谢,辛苦楼主。。。
evilor 2012-5-17 23:44
36
支持,顶一个
影帝宿命 2013-1-12 22:07
37
看看了辛苦了
adslxyz 2013-1-13 20:18
38
学习了,嘿嘿
iwantbmw 2013-5-29 15:32
39
正在寻找如何编写OD插件,
学习了,
谢谢!
Jmdebugger 2013-6-28 14:45
40
3q very much!
安守一份思念 2017-9-8 16:13
41
附近打不开了呢,支持一下
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 微信公众号:ikanxue
Time: 0.016, SQL: 11 / 京ICP备10040895号-17