基于Electron框架的桌面软件破解(以StarUML为例)

Electron是一套基于Web技术的开发框架,它通过浏览器内核跨平台来实现跨平台桌面软件的开发。有包括Atom、1Password等软件的都在使用该框架,由于入门简单,吸引了越来越多开发者和团队使用Electron来进行桌面软件的开发。除了一些开源作品,也有一些闭源的收费软件。本文从Electron软件的构建打包过程,以及StarUML破解为例探讨Electron框架的桌面软件破解。本文代码及示例仅用作技术探讨,请勿用于商业活动及违法行为,否则一切后果自负。如转载必须标明出处!

0. 环境

OS: macOS Monterey
npm: 7.11.2
electron: v16.0.1
asar: v3.0.3

1. 熟悉一下electron程序等构建过程

A. 安装依赖

npm i -g electron

B. 拉代码

https://github.com/electron/electron-quick-start

C.启动

cd electron-quick-startnpm start

以上只是运行起了这个官方demo,为了了解electron项目的逆向,我们还要看看打包后的过程,及其打包好的程序。

A. 安装打包工具

npm install electron-packager -g

B. 打包

electron-packager . hello --mac --out ../ --arch=x64 --app-version=0.0.1
image

可以看出,这个过程只是简单的制作了程序包,以上程序hello.app可以直接拖动到Applications目录进行安装。资源处理这块它把.git目录以外的文件都打到了Application当中,而且也没有做任何改动。对于这种方式打包的App,不需要进行特殊的逆向。如果要做破解,只要阅读Resources\app目录的源码即可,如果有JavaScript代码的混淆压缩什么的,那应该又是另外一个话题了。

C. Asar压缩打包

electron-packager . hello --mac --out ../ --arch=x64 --app-version=0.0.1  --asar
image

Asar是一种简单的压缩技术,以上命令打包之后,源码就被制作成了一个app.asar文件。它是一个可逆的压缩技术,可以通过安装asar工具来进行压缩以及解压缩:

npm install asar -g

使用文档参考https://www.npmjs.com/package/asar

3. “逆向”

说是逆向其实不严谨,因为通过以上操作我们知道,只是进行了资源压缩,进行解压即可。

我们来解压前边打包的app结果:

asar extract ../hello-darwin-x64-asar/hello.app/Contents/Resources/app.asar ../hello-unpack
image

可以看到,解压完,跟第一次没有--asar选项打包的结果一样。我们复制一个有asar的app,然后把解压修改后的资源覆盖进去试试能否正常启动

# 复制一份app
cp -r ../hello-darwin-x64-asar/hello.app ../hello2.app

# 修改源码
echo '<html><head><meta charset="utf-8"/></head><body>你好</body></html>' > ../hello-unpack/index.html

mv ../hello-unpack ../hello2.app/Contents/Resources/app

# 移除已经压缩的版本
rm -rf ../hello2.app/Contents/Resources/app.asar
image

可以看到,对于进行asar压缩的软件,解压之后修改,替换成app目录,删除app.asar,就能实现功能修改了。

4. StarUML的license

通过以上方法解压StarUML的4.1.6版本中的app.asar

image

通过阅读根目录的package.json文件可以大概猜测validation_url就是license的校验网址,我们在整个目录中搜索validation_url

image

最后一个关键文件中是license计算的核心代码

image

通过阅读代码可以知道大概的流程:

image

值得关注的是license文件存储在app目录或者用户目录,以macOS为例,用户目录是在~/Library/Application Support/StarUML,那么我们只需要自己造一个放在这个目录即可,这样我们无需对App进行任何的修改即可实现破解。

image

效果如下:

image
image
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容