吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

[其他图文] 【星空出品】教你制作自己的OD之二:打造自己的OD插件

  [复制链接]
逍遥绝尘 发表于 2015-2-24 11:03 | 显示全部楼层

能不能整理好再发啊!!!!

评分

参与人数 2HB +2 THX +1 收起 理由
tomdjj + 1
月光下の魔术师 + 1 + 1 QAQ窝错了表打

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 月光下の魔术师 发表于 2015-2-24 11:08 | 显示全部楼层

本帖最后由 月光下の魔术师 于 2015-2-25 14:55 编辑

第二步,解压文件,打开VS2012这个不用我教了吧
第三步,新建一个dll工程。
Q:如何创建dll工程?
A:请按照下面的图示进行操作。
1.点击新建工程
2.选择下一步来更改设置
3.将原本选中的 控制台应用程序 改为 DLL 并勾选 空项目 选项。
注:以上为创建dll通用方法,创建其它dll也可以这么玩哦。

第四步,将之前下载的.h作为头文件,.cpp作为源文件,.lib作为资源文件添加进去。

Q:如何在创建好的工程内添加现有文件?
A:请按照下面的提示进行操作,提示方法为头文件添加方法,其它文件同理。
单击 头文件 ——右键——添加——现有项——找到Plugin.h——添加

第五步,打开源.cpp文件

第六步,注释是我对这四个基本函数的描述。看完了你可以选择删也可以不删,反正编译的时候不会弄进去不会影响程序。不推荐删除,以后忘记了还可以回来查看一下。
第七步,将ODBG_Plugindata函数中“测试插件—插件名”更改为你自己的插件名。

Q:什么是插件名?
A:用SOD举例啥叫插件名

                               
登录/注册后可看大图
,看清楚我箭头指的地方,没错是箭头不是鼠标,截图的时候失误了……懂插件名是啥了吧?不懂劳驾楼下回复,不回复我也不强迫你,到时候别喷我说我讲的乱七八糟人家都看不懂就行。

第八步,将ODBG_Pluginmenu函数里面的"0 一级子菜单1"(标题栏插件菜单)与"0 插件名{1 一级子菜单1}"(右键菜单插件菜单)更改为你自己的插件菜单

Q:那道“|”是干什么用的?
A:

                               
登录/注册后可看大图
看到我剪头指的那道横线了吗?啥,你没看到?不好意思,麻烦你先关掉电脑,换个显示屏配副眼镜再来继续,哦卧槽给你一包辣条别动手。那个|的作用如图所示,就是那道线,可以代替逗号,当然我觉着如果不是闲着无聊的话没必要一溜|下去……

Q: if(origin == PM_MAIN) 与 if(origin == PM_DISASM) 有何作用?
A: if(origin == PM_MAIN) 的意思是判断这个插件是不是被在标题栏调用, if(origin == PM_DISASM) 的意思是判断这个插件是不是被在右键菜单调用,标题栏调用和右键调用可以有不同的项目,如果你的插件两项菜单都一样可以删掉子菜单2,将
if(origin == PM_MAIN)
{
        strcpy(data, "0 一级子菜单1");
        return 1;
}
if(origin == PM_DISASM)
{
        strcpy(data, "0 插件名{1 一级子菜单1}");
        return 1;
}
改为
if(origin == PM_MAIN || origin == PM_DISASM)
{
        strcpy(data, "0 一级子菜单1");
        return 1;
}


Q:SOD的二级子菜单是怎么做出来的?

                               
登录/注册后可看大图

A:很简单,只要再用{}就可以了,大括号内的所有子项都会成为括号前子项的二级子项。需要注意的是,这种写法也是符合规范并且可以正常使用的,因为一级子菜单1尽管ID为0,但因为它的作用是引出二级子菜单1,所以OD并不会为它分配响应事件,它的ID取多少都无所谓。

Q:你前面讲了这么多,菜单ID到底是什么?
A:菜单ID就是这个插件的某级菜单中某个子项独一无二的标示。就像进程拥有PID,窗口拥有窗口句柄一样,菜单只有拥有自己独一无二的ID,OD才能根据这个ID为菜单确定响应事件,这也是为什么同在一个菜单中ID不能重复的原因(同在一个菜单中指同在标题栏菜单或者同在右键菜单),重复了的话OD就没有办法准确地为它分配响应事件了。

第九步,更改ODBG_Pluginaction函数里的响应事件

Q:代码 if(action == 0) 有什么作用?
A:action代表了被触发的子项的ID,也就是菜单ID,请设置好对应ID的菜单的响应事件,设置方法是在 if(action == 0) 后, if(origin == PM_MAIN || origin == PM_DISASM) 内继续添加判断,当然,你也可以使用 switch,比if效率更高,Let you go。



评分

参与人数 2HB +2 THX +1 收起 理由
yating + 1 + 1 【恭喜】楼主升级为逗帝。。。
叶落 + 1 其实我想说这里似乎没有只看楼主的功能,你这样可能有点难找

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 月光下の魔术师 发表于 2015-2-24 11:39 | 显示全部楼层

本帖最后由 月光下の魔术师 于 2015-2-25 14:23 编辑

第二步,解压文件(就是个.e文件),打开,可以看到具体需要的子程序的作用我都写在备注里面了
第三步,展开_ODBG_Plugindata子程序 Snap7.png ,更改“插件名”为你自己的插件名。

Q:什么是插件名?
A:用SOD举例啥叫插件名

                               
登录/注册后可看大图
,看清楚我箭头指的地方,没错是箭头不是鼠标,截图的时候失误了……懂插件名是啥了吧?不懂劳驾楼下回复,不回复我也不强迫你,到时候别喷我说我讲的乱七八糟人家都看不懂就行。

第四步,看_ODBG_Pluginmenu子程序, Snap5.png ,更改标题栏菜单和右键菜单。

Q:那道“|”是干什么用的?
A:

                               
登录/注册后可看大图
看到我剪头指的那道横线了吗?啥,你没看到?不好意思,麻烦你先关掉电脑,换个显示屏配副眼镜再来继续,哦卧槽给你一包辣条别动手。那个|的作用如图所示,就是那道线,可以代替逗号,当然我觉着如果不是闲着无聊的话没必要一溜|下去……

Q: 判断 (origin = #PM_MAIN) 与 判断 (origin = #PM_DISASM) 有何作用?
A: 判断 (origin = #PM_MAIN) 的意思是判断这个插件是不是被在标题栏调用, 判断 (origin = #PM_DISASM) 的意思是判断这个插件是不是被在右键菜单调用,标题栏调用和右键调用可以有不同的项目,如果你的插件两项菜单都一样可以删掉子菜单2,将
.判断开始 (origin = #PM_MAIN)
    API_RtlMoveMemory_拷贝 (data, API_lstrcpyn (标题栏菜单, 标题栏菜单, 0), 取文本长度 (标题栏菜单) + 1)
    返回 (1)
.判断 (origin = #PM_DISASM)
    API_RtlMoveMemory_拷贝 (data, API_lstrcpyn (右键菜单, 右键菜单, 0), 取文本长度 (右键菜单) + 1)
    返回 (1)
.默认
.判断结束

改为
.如果真 (origin = #PM_MAIN 或 origin = #PM_DISASM)

    API_RtlMoveMemory_拷贝 (data, API_lstrcpyn (标题栏菜单, 标题栏菜单, 0), 取文本长度 (标题栏菜单) + 1)
    返回 (1)

Q:SOD的二级子菜单是怎么做出来的?

                               
登录/注册后可看大图

A:很简单,只要再用{}就可以了 Snap3.png 大括号内的所有子项都会成为括号前子项的二级子项。需要注意的是, Snap6.png 这种写法也是可以通过的,且二级子菜单1可以正常响应事件,因为一级子菜单1尽管ID为0,但因为它的作用是引出二级子菜单1,所以OD并不会为它分配响应事件,ID取多少都无所谓。

Q:你前面讲了这么多,菜单ID到底是什么?
A:菜单ID就是这个插件的某级菜单中某个子项独一无二的标示。就像进程拥有PID,窗口拥有窗口句柄一样,菜单只有拥有自己独一无二的ID,OD才能根据这个ID为菜单确定响应事件,这也是为什么同在一个菜单中ID不能重复的原因(同在一个菜单中指同在标题栏菜单或者同在右键菜单),重复了的话OD就没有办法准确地为它分配响应事件了。
第五步,看_ODBG_Pluginaction子程序 Snap9.png ,修改响应事件

Q:代码 如果真 (action = 0) 有什么作用?
A:action代表了被触发的子项的ID,也就是菜单ID,请设置好对应ID的菜单的响应事件,设置方法是在 如果真 (action = 0) 下面(是比较ID的代码下面,不是判断是否是菜单栏调用和右键调用的如果真下面,这里需要注意)继续添加如果真,当然,你也可以连续使用 判断() 子程序,Let you go。



点评

逍遥绝尘”点评说:
快写吧!C的我看不懂!  发表于 2015-2-24 11:53

评分

参与人数 1HB +1 THX +1 收起 理由
yating + 1 + 1 【恭喜】楼主达到巅峰,成为逗神!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
逍遥灬泪痕 发表于 2015-2-24 11:45 | 显示全部楼层

久伴。 发表于 2015-2-24 09:50
.判断开始 (灌水 + 骂人 + 和泪痕说话 + 和亚轩说话 = 真)
    HB减完 = 真
    永久封号 = 真

尼玛久伴又想死了?

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yating 发表于 2015-2-24 11:53 | 显示全部楼层

逍遥灬泪痕 发表于 2015-2-24 11:45
尼玛久伴又想死了?

看不懂他写的什么意思!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
gmh5225 发表于 2015-2-24 11:59 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 月光下の魔术师 发表于 2015-2-24 12:15 | 显示全部楼层

本帖最后由 月光下の魔术师 于 2015-2-25 15:05 编辑
gmh5225 发表于 2015-2-24 11:59
笑了,一个静态lib说开源。。。

LIB是OD自带的。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 月光下の魔术师 发表于 2015-2-25 13:40 | 显示全部楼层

刚刚想继续写这个帖子,找了半天没找到,最后回头一看原来就在之前一篇帖子的上面 QQ截图20150225133923.png

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 月光下の魔术师 发表于 2015-2-25 15:33 | 显示全部楼层

本帖最后由 月光下の魔术师 于 2015-2-25 16:13 编辑

下面我们就来尝试用易语言来写一个,也是你们(写过的一看就知道绝对是顶尖大牛,求别喷)自己的第一个OD插件:清除UDD、OD的文件打开记录以及还原OD配置。
为啥是易语言呢,对我来说易语言和C++没啥区别,因为我学易语言把常用功能全都封装好了但是对于没这么玩的C++将来说就有点麻烦,所以我用易语言了,C++党表打我
有了之前的介绍和基础,我估计这个对大家来说没难度
第一步,将模板文件复制一份,更名为清理插件.e
第二步,插入——资源——图片或图片组,名字改一个你喜欢的,内容导入上一节教程我们设置好的干净的配置文件。
啥,你上节课没来没认真听讲?那就试试我这个吧,或者回去找上节课的教程去 ollydbg.rar (2.55 KB, 下载次数: 2) 放心好了,里面只有一个ini
第三步,回到程序集,展开_ODBG_Plugindata,插件名改成你的插件的名字,我这里改成了“万能清理插件”
第四步,因为这个不涉及到现行选定内容对功能的影响,所以可以将右键菜单与菜单栏菜单合并,也就是
.如果真 (origin = #PM_MAIN 或 origin = #PM_DISASM)
    API_RtlMoveMemory_拷贝 (data, API_lstrcpyn (菜单, 菜单, 0), 取文本长度 (菜单) + 1)
    返回 (1)
第五步,正式编写响应代码,出于与第四步同样的理由,我们选择合并菜单的方式。
作为一个合格的程序猿,最不应该的就是直接看别人的思路对不对
所以我就不提供源码的思路了,我先撸去,撸好了发上来给大家做参考,也希望大家共享自己的插件源码,这东西也不是独一无二对吧……共享也不会损失啥。




吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
lyl537c 发表于 2015-2-28 16:57 | 显示全部楼层

插件重来没有写过,正好学习学习。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

11层
12层
13层
14层
15层
16层
17层
18层
19层
20层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表