要想了解代码如何保护,那就先要知道怎么被破解,最开始了解代码保护,是eletron项目,因此从吾爱破解上找到过一个electron项目-NeatReader,尝试反编译。
1. 相关工具
2. Electron程序解包
以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 之后的代码即可。代码
-
3. 重新将打包成asar,替换app.asar文件
备份之前的app.asar 文件,将修改过重新打包的app.asar 文件放回到Finder - 应用程序 - NeatReader-Resource 目录中。重启NeatReader
至此完成了对于NeatReader 代码的修改,并应用到了应用程序之上。
