首页
社区
课程
招聘
[原创]OD插件 - 支持chm帮助文档
发表于: 2021-8-14 16:15 12823

[原创]OD插件 - 支持chm帮助文档

2021-8-14 16:15
12823

 

机缘巧合看到科锐学长的一个帖子,讲述了制作OD插件 -- 支持chm帮助文档的分析过程,王老师也带我们写过两个OD插件,这个插件也蛮实用的,来学习一下该插件的原理,并修复了一个小BUG

 

原帖传送门:https://bbs.pediy.com/thread-207265.htm

 

主题1:该插件的原理

原始OD并不支持打开chm,选择help – Select API Help File,发现只有hlp选项,且就选适用Any file选项选择了chm文件,OD也是提示不支持chm文件,所以OD初衷只支持hlp文件,我们确实需要经常使用API帮助文档,反而OD的hlp使用频率没有那么高。所以这个插件还是比较实用的,懒人之福吧


 

原帖中已经很详细的解释了制作插件的过程以及原理,不过看评论还是有和我一样的新手并不是很理解,在这里总结一下,希望可以帮些忙,提供一些理解的思路。

首先解决的是文件选择对话框的文件过滤,GetOpenFileName API是可以创建一个文件打开的对话框,参数是一个OPENFILENAME结构体,MSDN上有很详细的介绍,该结构体的第四个参数lpstrFilter可以指明文件过滤字符串。直接hookAPI不是一个合适的选择,毕竟可能会影响其他功能,所以学长选择继续栈回溯,选择hook Select API Help File功能的初始化结构体的位置。

 

接下来需要解决OD不能打开chm文件的问题,说真的我这个小白API不是很熟,没用过winhel,最大的困惑的MSDN查不到啊,这个就比较纠结了,不过不要紧,我也好奇是怎么打开帮助文档的,所以自己跟了一下。

简单讲一下过程,用VS打开OD的EXE文件,找到菜单的控件ID是2504,十六进制0x9c8,接着用OD调试OD,spy++拿到了主窗口的句柄(话说微软的东西真是好用啊),确定了主窗口的过程函数,

 

我要找的就是WM_COMMAND响应0x9c8的分支,我发现确实调用了WinHelpA,(呃,看来也不能迷信MSDN,人家OD标的明明白白),跟了一下API发现会判断文件的类型,如果不是hlp文件则弹框提示。

这回清楚了,做法也简单,hook WinHelpA,用ShellExecute打开chm

 


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

最后于 2021-8-14 18:00 被xyjstone编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (6)
雪    币: 26398
活跃值: (63257)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2021-8-14 21:00
1
雪    币: 3241
活跃值: (2069)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
自從自己包了一個全功能版OD增强插件包使得OD每次開啓都會自動開兩三個CMD窗口,并且關閉CMD窗口之後OD就自己關了之後,就再也沒使用過OD。我不會分析原因,我只知道是有的插件我不會用,導致的問題,那我就不用了。留下了沒技術的眼淚。
2021-8-15 00:54
0
雪    币: 3534
活跃值: (3914)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

遇到插件问题,我只会删插件。

最后于 2021-8-15 07:48 被院士编辑 ,原因:
2021-8-15 07:46
0
雪    币: 482
活跃值: (424)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
Editor 感谢分享!
感谢版主大大认可
2021-8-15 22:38
0
雪    币: 482
活跃值: (424)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
那插件功能不用了吗
2021-8-15 22:39
0
雪    币: 229
活跃值: (330)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
留下了沒技術的眼淚。
2021-8-16 16:41
0
游客
登录 | 注册 方可回帖
返回
//