惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
TaoSecurity Blog
TaoSecurity Blog
H
Heimdal Security Blog
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
V2EX - 技术
V2EX - 技术
博客园 - 【当耐特】
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Secure Thoughts
C
CERT Recently Published Vulnerability Notes
罗磊的独立博客
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
有赞技术团队
有赞技术团队
S
Schneier on Security
S
SegmentFault 最新的问题
Google Online Security Blog
Google Online Security Blog
H
Hacker News: Front Page
The Last Watchdog
The Last Watchdog
Schneier on Security
Schneier on Security
PCI Perspectives
PCI Perspectives
IT之家
IT之家
Project Zero
Project Zero
博客园 - 司徒正美
P
Privacy International News Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Jina AI
Jina AI
Security Latest
Security Latest
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
NISL@THU
NISL@THU
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
L
Lohrmann on Cybersecurity

博客园 - mumuliang

php.ini 开发和线上配置的差异 [laravel]malformed header from script 'index.php': Bad header: HTTP/1.1 302 Found, referer: http://localhost/auth/login 4e00~9fa5 [todo] 3rd [笔记] 为了不让移动端页面分权重你应当如何做? 一样的alert代码,样式不同 Eclipse中Sever启动成功,但tomcat无法管理页面无法访问。 Process的Waitfor() 引起代码死锁 [转载]Eclipse调试Java的10个技巧 写了一阵儿西夏普以后回头写西加加你会想不起来的那些事儿 为毛无法创建文本文件COM1.txt C# Marshal.GetActiveObject() 遭遇 HRESULT:0x800401E3 (MK_E_UNAVAILABLE)) AutoVue打开ProE工程图中文乱码 Visual studio智能感知挡住了当前代码输入行 创建COM对象时遭遇 800702e4 以Administrator权限运行VS时无法拖入文件 如何判断exe或dll的目标平台及是否是.NET? 批处理设置当前路径为工作路径 调用约定__cdecl和__stdcall
PADS在注册表中的菜单栏数据
mumuliang · 2015-03-02 · via 博客园 - mumuliang

Posted on 2015-03-02 16:29  mumuliang  阅读(2209)  评论()    收藏  举报

位于

[HKCU\Software\Mentor Graphics\PADS9_5\PADS Layout\Workspaces\ENU\Default\BCGToolBar-593980]

下的二进制数据项:Buttons。

 字符串的表达 

该二进制数据记录字符串时,在字符串数据头部增加1byte用来记录长度。

首位05即表示接下来这个字符串的长度为5byte,“&File”。

 菜单项的表达 

记录菜单的数据长度不定,结构如下。

0b,00,00,00, // CommandId 菜单的命令id,特殊值:FF FF FF FF为分隔线;00 00 00 00为拥有子菜单的菜单项。当commandId查找不到对应的command时,该菜单项会变成不可用。这是自定义菜单异常的常见情况。
00,00,00,00, // MenuItemType 通常都是全零,分隔线和最近使用的Macros,此处为00 00 04 00。
ae,00,00,00, // IconId 若菜单有图标,这里会存放图标信息,否则为FF FF FF FF。
04,26,4e,65,77, // Text 菜单显示的文字。
00,00,00,00,00,00,00,00, // IsCustomed PADS的菜单项此处全零。自定义的菜单都为01 00 00 00 00 00 00 00。
00,00,00,00,01,00,00,00, // IconType 有图标值 00 00 00 00 01 00 00 00;没图标为 10 00 00 00 00 00 00 00 
01,00,00,00,00,00,00,00, // 未知,始终为该值
00,00,00,00,01,00,00,00, // 未知,始终为该值
00,00 // 子菜单的个数

菜单项之间的分隔

01,80,// 01 80 表示接下来还有菜单项,00 00 表示菜单项描述结束。

如果把最后一个菜单之前的分隔标记01 80替换为 00 00的话:

1. 启动PADS后最后一个菜单会消失掉,因为解析到此就结束了;最后一个菜单不会被加载到PADS界面中;

2. 在关闭PADS后,因为关闭时PADS会使用当前的UI重新写入注册表,因此原先位于 00 00 之后的二进制数据会全部被删掉。最后一个菜单的数据也就无法恢复了。

Buttons 数据开始的部分 

00,20,00,00,01,00,00,00,07,00, // 未知
ff,ff,01,00, // 未知
16,00, // 字符串长度,这里用了 2byte记录长度,而不是1byte。
43,42,43,47,50,54,6f,6f,6c,62,61,72,4d,65,6e,75,42,75,74,74,6f,6e, // CBCGPToolbarMenuButton

Buttons数据结束的部分 

最后一个菜单项的数据结束后,会有2byte 0表示其后再无menuitem。然后才是

00,00 // 表示后续没有菜单项了

00,00, // 未知
08,4d,65,6e,75,20,42,61,72,  // Menu Bar
6d,00,00,00 // 未知