首页
论坛
专栏
课程

[原创]关于“IDA Pro 5.4 中文帮助手册.chm”在IDA打开文件时按F1出现错误的解决方法

2009-6-29 19:24 11812

[原创]关于“IDA Pro 5.4 中文帮助手册.chm”在IDA打开文件时按F1出现错误的解决方法

2009-6-29 19:24
11812
关于“IDA Pro 5.4 中文帮助手册.chm”在IDA打开文件时按F1出现错误的解决方法

首先感谢“看雪”提供的中文翻译版帮助文件,同时也感谢各位翻译人员的辛勤劳动。
中文版的帮助有助于迅速普及国人学习IDA的使用。一个小遗憾就是在IDA打开数据文件
时按快捷键F1出现“HH_HELPCONTEXT called without a [MAP] section”错误信息。
现在提供该错误的解决办法。

所用的工具是Far Helpware。其实问题很简单,就是在用FAR的项目编辑器(HH Project Editor)打开项目
文件时的“Other Sections”选项下定义[MAP]和[ALIAS]两个节。我们首先要学习一下[MAP]和[ALIAS]的
语法,在Far的帮助文件(Help)内搜索“[MAP]”, 可找到如下信息:

===============================================================================================================================
[MAP] [ALIAS]
The Map and Alias sections must be set if you want to create a Context ID to URL mapping. Used when the application opens help using the HH_HELP_CONTEXT help command. ie. For opening help using an HelpContext / integer ID.

EG. HtmlHelp(0, "c:\app\help\Help.chm", HH_HELP_CONTEXT, 1001);

The [MAP] section defines the IDs.
The [ALIAS] section defines the mapping between ID and help topic.

Example MAP and ALIAS section
[ALIAS]
IDH_HomePage=default.htm
IDH_TestTopic1=htmlfiles\testtopic1.htm
IDH_TestTopic2=mychm::htmlfiles\testtopic2.htm

[MAP]
#define IDH_HomePage 1000 ;comment
#define IDH_TestTopic1 1001
#define IDH_TestTopic2 1002

Example MAP and ALIAS section using #include statements;Use the #include statement to include an external header file at compile time.

[ALIAS]
#include myhelp.ali

[MAP]
#include myhelp.h

where myhelp.ali is a text file containing

IDH_HomePage=default.htm
IDH_TestTopic1=htmlfiles\testtopic1.htm
IDH_TestTopic2=mychm::htmlfiles\testtopic2.htm

and myhelp.h is a text file containing

#define IDH_HomePage 1000
#define IDH_TestTopic1 1001
#define IDH_TestTopic2 1002
===============================================================================================================================

内容翻译如下:
===============================================================================================================================
要想创建上下文ID与URL关联信息,就必须设置Map和Alias节,这两个节用与应用程序在打开帮助文件时使用"HH_HELP_CONTEXT"帮助命令的情况。也就是说使用一个
"帮助上下文"与"ID号"关联对(ID号为一个整数类型的数值)来打开帮助信息。

例如命令:
HtmlHelp(0, "c:\app\help\Help.chm", HH_HELP_CONTEXT, 1001); // 帮助上下文为“HH_HELP_CONTEXT”,“ID”为1001。
[MAP]节定义ID值。
[ALIAS]节定义ID与帮助主题的映射关系。

直接定义MAP与ALIAS节的例子:
[ALIAS]
IDH_HomePage=default.htm
IDH_TestTopic1=htmlfiles\testtopic1.htm
IDH_TestTopic2=mychm::htmlfiles\testtopic2.htm

[MAP]
#define IDH_HomePage 1000 ;comment
#define IDH_TestTopic1 1001
#define IDH_TestTopic2 1002

此外还可以用类似C语言的#include语句在编译帮助文件时包含外部定义的头文件来定义[MAP]和[ALIAS]节,相应的例子如下:
[ALIAS]
#include myhelp.ali

[MAP]
#include myhelp.h

其中myhelp.ali为一个纯文本文件,其内容如下:
IDH_HomePage=default.htm
IDH_TestTopic1=htmlfiles\testtopic1.htm
IDH_TestTopic2=mychm::htmlfiles\testtopic2.htm

而myhelp.h也是一个纯文本文件,其内容如下:
#define IDH_HomePage 1000
#define IDH_TestTopic1 1001
#define IDH_TestTopic2 1002
===============================================================================================================================

下面的问题就简单了, 只要在Other Sections的"[ALISAS]"和"[MAP]"填入相应信息即可。因为涉及的文件有756个之多,所以我们采用包含头文件的方法,
即用#include语句来定义相关信息。

idahelp.ali文件的内容如下(因篇幅省略表示):
--------------------------------------
IDH_1=IDA Pro 中文帮助手册说明.htm
IDH_2=index.htm
IDH_4=4.htm
IDH_5=5.htm
IDH_6=6.htm
IDH_7=7.htm
IDH_8=8.htm
......
......
IDH_1523=1523.htm
--------------------------------------

idahelp.h文件的内容如下(因篇幅省略表示):
--------------------------------------
#define IDH_1 2
#define IDH_2 2
#define IDH_4 4
#define IDH_5 5
#define IDH_6 6
#define IDH_7 7
#define IDH_8 8
......
......
#define IDH_1523 1523
--------------------------------------

按如下步骤操作:
1) 将idahelp.ali和idahelp.h文件放在与idahelp.hpp(帮助项目助文件)相同的文件夹下;
2) 在FAR项目编辑器(HH Project Editor)主界面下Other Options选项向的中间栏内选中“[ALIAS]”,
在右侧单击“Include File...”并选中idahelp.ali文件;
3) 在FAR项目编辑器(HH Project Editor)主界面下Other Options选项向的中间栏内选中“[MAP]”,
在右侧单击“Include File...”并选中idahelp.h文件;
4) 保存帮助项目助文件idahelp.hpp,然后编译帮助文件;
5) 将编译好的文件复制到IDA的安装位置(注意一定要先备份英文的idahelp.chm文件,或先将其更名为idahelp_en.chm),
  再将中文版的帮助文件更名为idahelp.chm,此时大功告成。

另外发现一个小窍门:.chm文件中的“#IVB”就是编译结果,因此也可以将“#IVB”文件直接放入.chm文件中。
我使用的是Total Commander的chm插件将其直接放入chm内的。请大家在试验之前一定要做好备份工作。但这个方法
不是十分可靠,有时可能会显示空页(“无法显示网页”),但可以点击其它主题。

还有一个问题,用IDA 5.2的F1打开帮助文件时,显示的是“WindowOpen”主题,可能IDA5.2调用的命令是
HtmlHelp(0, "IdaHelp.chm", HH_HELP_CONTEXT, 585);
经查585.htm正是该主题。如果要想显示index.htm的话,应将其更名为585.htm。但原来的585.htm可能与其他文件有关联,
因此,要把所有的关联修正好后才行。当然还可以分析idag.exe将那个585改为2(我这里将index.htm的ID定义为2)。

附件内含“idahelp.ali”、“idahelp.h”、“idahelp.hpp”、“#IVB”和搞定的中文版帮助文件idahelp_cn.chm共5个文件。

更正后的附件见14楼,对此造成的不便表示歉意。

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (18)
非虫 7 2009-6-29 21:56
2
0
支持支持。。
ldljlzw 2009-6-30 02:20
3
0
谢谢!都是好样的!!
老伙计 2009-6-30 10:14
4
0
难道IDA5.4已经可以使用了???
san123 2009-6-30 10:49
5
0
不错,支持,谢谢
smallpig 2009-6-30 11:11
6
0
5.4 什么地方下载?
楼z来一个连接
加百力 12 2009-6-30 11:27
7
0
非常感谢mavermaver的介绍。

不过希望修改者在修改和发布时能够通知一下原作者,否则很容易造成混乱,不利于大家下载。

无论是跟帖或者发短消息都可以。
加百力 12 2009-6-30 11:50
8
0
另外修改者可能不小心把手册上的“看雪论坛”按钮遗漏了。

这本来就是为了支持看雪论坛而专门设置的。

所以欢迎大家提出修改意见。要发帖介绍也欢迎。但最好通知原作者统一修改,更新版本,避免混乱。
jackozoo 14 2009-6-30 13:03
9
0
在我机器上中文乱码了
机器:Server2003企业版SP2。

jackozoo 14 2009-6-30 13:08
10
0
支持了~~~
Aker 4 2009-6-30 13:21
11
0
应该是不小心遗漏了最上面的按钮:)
加百力 12 2009-6-30 13:34
12
0
   
tsts 2009-6-30 13:57
13
0
天天见猪跑,就是没机会吃猪肉,我们用的还是ida5.2,其实已经很够用,不过见到新版本,就是想用用,ida博客上对bochs调试说的很拉风,真的很吊人胃口。
mavermaver 3 2009-6-30 15:08
14
0
因为没有.HPP项目文件,我是将.chm中的文件释放出来以后,用FAR自动生成的.HPP文件,当初关注的是帮助文件调不出来的问题,确实没注意到最上面的按钮。经过学习现已将那个按钮补
上。无意中改变了译者的原意,在此表示歉意,望版主海涵。
上传的附件:
加百力 12 2009-6-30 15:52
15
0
呵呵。还要多亏你的帖子才解决了这个问题。我已经按你介绍的方法改好了。大家使用新版本可以在IDA调试过程中实时得到中文帮助信息,就更方便了。

我在制作CHM文件上经验还不足,有什么问题还请多多指教。

都是为大家服务。
suiyingjie 2009-7-1 17:21
16
0
支持,感谢各位翻译人员的辛勤劳动
ypcok 2009-7-1 18:18
17
0
感谢 楼主、版主,为大家服务!
快雪时晴 4 2009-7-1 18:56
18
0
感觉far好复杂,做个chm真不容易
zjomin 2010-1-6 20:42
19
0
看雪怎么这么牛呢!
我希望有一天能为看雪做一点贡献!
游客
登录 | 注册 方可回帖
返回