前几天发现了一款名叫MindMaster的思维导图软件,用起来比Xmind舒服很多。
但是他们有个很奇怪的地方:
部分快捷键不允许修改
那我用的就很难受了。本来我用x64dbg和ida,回撤都是用Esc(在键盘左边),现在删除只能是用backspace和del(在键盘右边)。
这设计不是反人类吗?本来右手就要拿鼠标操控xy轴,我一个左手还给你跑到右边键盘去按backspace???偏偏还是“删除”这么常用的功能。
所以我决定帮他们“优化”一下快捷键。
说下基本思路:
1.释放劫持dll(替换exe目录下的同名dll,将原dll存在exe目录下的bak文件夹中)
2.搜索消息处理特征码(事先在x64dbg中下消息断点,调试得到)(x64dbg消息断点的用法:链接地址)
3.对其消息处理函数的头部下hook,跳转到我们写的shellcode中
4.在shellcode中,先判断第2个参数是否是0x100(WM_KEYDOWN),如果是再判断第3个参数是否为esc的ASCII码,如果是就改成backspace的ascill码。
由此就可以在按esc键时,让程序收到的消息是按下了backspace键,从而实现了“删除”。
其实也可以考虑在内存中搜一下这些按键的ASCII值。修改他们,应该也能实现快捷键的更改。而且这个方法应该要更好。
由于都是老掉牙的技术了,也没什么可说的。。。
今天花了半天功夫把这个写完,纯粹就是体力活,写篇useless文记录一下。