要想了解代码如何保护,那就先要知道怎么被破解,最开始了解代码保护,是eletron项目,因此从吾爱破解上找到过一个electron项目-NeatReader,尝试反编译。
以macos 为例说明。
找到Finder
- 应用程序
- NeatReader
,右键显示包内容。
找到Resource
目录中的app.asar
文件。复制文件到工作目录。
全局安装asar,已安装可以跳过这一步
进入到工作目录,解压app.asar
文件
app
目录即NeatReader
解压源码
修改源码
很简单,源码只进行了简单的代码压缩,部分变量做了简化,还是拥有比较强的可读性的。
首先我想修改一下NeatReader
登录的用户名。VsCode 打开app 目录,全局搜索用户名以乌漆嘛黑
为例,找到这块代码
从上述代码可以看出吾爱的破解应该是拦截了登录成功的回调,伪造了用户信息。设置了很久的会员过期时间。从而破解了NeatReader的会员。因此需要修改用户信息,在这块代码修改即可。
接着吾爱破解后,在每个书籍的标题栏,增加了吾爱破解的标识,很长一段话,影响看图书标题,想将这段话去掉。
全局搜索这段话结果搜不到,推测应该是吾爱对字符进行了编码, 所以对这段话分别进行了Unicode编码以及16进制转换,均搜索不到这段内容。
由此推断,应该是用了其他加密的手段,要想找到这块代码逻辑。首先想到的是设置document.title
全局搜索这块代码搜索不到。electron
也可以在打开新窗口的时候在主进程设置title,找到eletron-main.js
文件,发现并没有设置title
但是,从eletron-main.js
中发现了,他可以预留了devtools
快捷键。所以手动修改了env 为dev,重新打包。这时候打开阅读窗口,按快捷键,就可以唤起chrome的 devtools
接下来使用chrome devtools
自带的Dom Breakpoint
,调试网页title的变化。首先在控制台执行document.title = ''
,然后找到元素下title标签右键break on
选择attribute modifications subtree modifications
进行元素变更断点,然后刷新页面。进入断点。
找到了修改标题的代码。果然是关键子转换到了16进制,但是是关键词documnt
、title
之类的进行了16进制转换。文本文档还有一层code码偏移。
为了方便阅读我们使用代码反编译工具进行解密,简单使用在线工具解密后得到, 代码之后进行了关键词替换得到以下代码。
由此可见吾爱对这段文字先进行了Unicode编码, 然后进行了位数偏移,转义,最后有转换为了16进制。不过,我们只是想去掉这段文本,不用关心,他加密的逻辑,只需要去掉bookName
之后的代码即可。代码
备份之前的app.asar
文件,将修改过重新打包的app.asar
文件放回到Finder
- 应用程序
- NeatReader
-Resource
目录中。重启NeatReader
至此完成了对于NeatReader 代码的修改,并应用到了应用程序之上。