白荼日记 - 软件 https://blog.iletter.top/tag/%E8%BD%AF%E4%BB%B6/ zh-CN Sun, 21 Dec 2025 22:57:03 +0800 Sun, 21 Dec 2025 22:57:03 +0800 宝塔面板V11.4精简去除vip以及其他推广功能 https://blog.iletter.top/archives/516/ https://blog.iletter.top/archives/516/ Sun, 21 Dec 2025 22:57:03 +0800 DelLevin 该操作仅适用于宝塔面板 V11.4,其他版本需要自行测试。

功能隐藏:

关闭不必要的功能

设置->常用设置->面板栏隐藏,隐藏如下功能

WAF、WP Tools、多用户、邮局、节点管理

不想用,隐藏就行了。

去除首页的软件推荐功能。

image.png

一开始我本以为这个是在utils-lib.js里面带着的,后来通过减慢请求查看到是在请求里面带着的。通过搜索关键词get_pay_type发现,是通过getRecommendContent这个请求函数带过来的。所以我们需要在这里设置返还值为空即将

getRecommendContent=()=>useAxios.post("ajax/get_pay_type")

替换成

getRecommendContent=()=>{return []}

去除日志部分的 SSH 登录日志

删掉如下部分

{path:"ssh",name:"ssh",meta:{title:"SSH登录日志"},component:()=>__vitePreload(()=>import("./index57.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)},

去除 SSL 部分的 自动部署

image.png

删掉如下部分

{path:"auto-deploy",name:"auto-deploy",meta:{title:"自动部署"},component:()=>__vitePreload(()=>import("./index89.js?v=1766131796").then(e=>e.i),__vite__mapDeps([]),import.meta.url)},

去除 安全部分的 安全检测和违规词检测

image.png

删掉如下部分

{path:"safe-detect",name:"safe-detect",meta:{title:"安全检测"},component:()=>__vitePreload(()=>import("./index46.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)},{path:"keyword",name:"keyword",meta:{title:"违规词检测"},component:()=>__vitePreload(()=>import("./index47.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)},

去除 PHP网站安全 入侵防御 系统加固 扫描感知 部分

image (1).png

删掉如下部分

,{path:"php-safe",name:"php-safe",meta:{title:"PHP网站安全"},component:()=>__vitePreload(()=>import("./index48.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)},{path:"intrusion",name:"intrusion",meta:{title:"入侵防御"},component:()=>__vitePreload(()=>import("./index49.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)},{path:"fixed",name:"fixed",meta:{title:"系统加固"},component:()=>__vitePreload(()=>import("./index50.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)},{path:"network-scan",name:"network-scan",meta:{title:"扫描感知"},component:()=>__vitePreload(()=>import("./index51.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)}

去除网站界面 的漏洞扫描 和 网站安全

找到 index74.js

image.png

漏洞扫描删除如下部分

{type:"custom",render:()=>w(P,{onClick:ee},{default:()=>{var e,t;return[S("漏洞扫描"),w("span",{class:"ml-4px py-1px px-4px text-center font-bold ".concat((null==(e=Se.value)?void 0:e.loophole_num)>0?"text-danger":"text-warning")},[null==(t=Se.value)?void 0:t.loophole_num])]}})},

网站安全删除如下部分

,{type:"custom",render:()=>w(P,{onClick:te},{default:()=>{var e,t;return[S("网站安全"),w("span",{class:"ml-4px py-1px px-4px text-center font-bold ".concat((null==(e=Se.value)?void 0:e.web_scaning_times)>0?"text-danger":"text-warning")},[null==(t=Se.value)?void 0:t.web_scaning_times])]}})}

去除 table 表格的右侧的统计和 waf

image.png

{onClick:e=>{le(e,"monitor-setting")},title:"统计"},{onClick:e=>{le(e,"bt_waf")},title:"WAF"},

去除网站安全和防篡改

找到 index235.js

image (1).png

删除该部分

{label:"防篡改",name:"antiTamper",lazy:!0,render:()=>r(()=>import("./index463.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)},{label:"网站安全",lazy:!0,name:"siteSecurity",render:()=>r(()=>import("./index464.js?v=1766131796"),__vite__mapDeps([]),import.meta.url)},

Css隐藏:

主要路径为/www/server/panel/BTPanel/static/css/style.css 一下更改需要在此文件内进行调整,如需更改其他部分会另作说明

去除顶部的企业版tag

image.png

.icon-end-time-free[data-v-402b09ab]{ 后面添加 display:none;

软件商店的推广 banner

image.png

.recom-view[data-v-81e888c5]{ 后面添加 display:none

去除底部的vip推广

image.png

找到如下路径的/www/server/panel/BTPanel/static/css里面的style.css搜索advantage-view吧这里面的display:flex改成display:none

去除网站里面的 waf 图标

image (1).png

.svgtofont-left-waf:before{content:""} 替换成 .svgtofont-left-waf:before{dispaly:none;content:""}

]]>
0 https://blog.iletter.top/archives/516/#comments https://blog.iletter.top/feed/tag/%E8%BD%AF%E4%BB%B6/
去除宝塔界面一些烦人的东西 https://blog.iletter.top/archives/400/ https://blog.iletter.top/archives/400/ Fri, 25 Jul 2025 13:18:00 +0800 DelLevin 更新之后越来越难用了,自己懒得配置nginx,mysql,这些环境,开心版的又怕后门,自己改后端的js文件看的脑瓜子疼,反正都是界面,直接js删掉一些dom元素就行了。有需要的可以拿走。

// ==UserScript==
// @name         宝塔面板优化 - 界面美化
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  移除指定 class 元素、替换特定 span 文字内容,并删除包含“需求反馈”的 span
// @match        http://152.136.153.72:9999/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';
    console.log('⚠ 脚本准备加载');

    // 定义需要移除的 class 组合
    const selectorsToRemove = [
        '.h-auto.mt-\\[1\\.2rem\\]',                         // h-auto mt-[1.2rem]
        '.svgtofont-desired.\\!mr-4px.\\!text-\\[16px\\]',   // svgtofont-desired !mr-4px !text-[16px]
        '.icon-end-time-free.icon-unpaid-ltd',                // icon-end-time-free icon-unpaid-ltd
        '.el-card.is-always-shadow.is-always-shadow.\\!border-\\[\\#efefef\\]',  // el-card is-always-shadow is-always-shadow !border-[#efefef]
        '.icon-end-time.icon-unpaid-ltd' // icon-end-time icon-unpaid-ltd
    ];

    // 移除指定 class 的元素
    const removeElementsByClass = () => {
        selectorsToRemove.forEach(selector => {
            document.querySelectorAll(selector).forEach(el => el.remove());
        });
    };

    // 替换指定 span 的文字内容
    const replaceSpanText = () => {
        const spanSelector = 'span.mr-1rem.ml-\\[-1\\.5rem\\]';
        document.querySelectorAll(spanSelector).forEach(span => {
            span.textContent = '精简版';
        });
    };

    // 删除 span/button 包含 指定字符 的 span 元素
    const removeSpansWithText = () => {
        const spans = document.querySelectorAll('span');
        spans.forEach(span => {
            if (span.textContent.trim() == '需求反馈') {
                span.remove();
            }
        });
        const buttons = document.querySelectorAll('button');
        buttons.forEach(span => {
            if (span.textContent.trim() == '立即体验') {
                span.remove();
            }
        });
    };
    // 删除指定class 包含置顶字符的元素
    const removeClassWithText =()=>{
        const parents = document.querySelectorAll('.header-child-tab');
        parents.forEach(span => {
            if (
                span.textContent.trim() == '安全检测' ||
                span.textContent.trim() == '违规词检测' ||
                span.textContent.trim() == 'PHP网站安全' ||
                span.textContent.trim() == '入侵防御' ||
                span.textContent.trim() == '系统加固' ||
                span.textContent.trim() == '扫描感知' ||
                span.textContent.trim() == '日志审计' ||
                span.textContent.trim() == 'SSH登录日志'
               ) {
                span.remove();
            }
        });
        const classparents = document.querySelectorAll('.el-collapse-item');
        classparents.forEach(span => {
            if (
                span.textContent.trim().includes('top5')
               ) {
                span.remove();
            }
        });
    }

    // 删除包含特定子元素的 el-col 元素
    const removeParentIfChildExists = () => {
        // 获取所有 el-col.el-col-6.wrapper-item 元素
        const parents = document.querySelectorAll('.el-col.el-col-6.wrapper-item');
        parents.forEach(parent => {
            // 检查子元素是否包含指定的 class
            const child = parent.querySelector('.absolute.-left-1\\.5.-top-1');
            if (child) {
                parent.remove(); // 移除父元素
            }
        });
    };


    // 综合执行函数
    const removeElements = () => {
        removeElementsByClass();
        replaceSpanText();
        removeSpansWithText();
        removeParentIfChildExists();
        removeClassWithText();
    };
    // 等待dom加载完毕后执行综合函数
    let timeoutId;
    const debouncedRemove = () => {
        clearTimeout(timeoutId);
        timeoutId = setTimeout(removeElements, 200);
    };
    let runCount = 0;
    const maxRuns = 5;
    const observer = new MutationObserver((mutations, obs) => {
        if (runCount >= maxRuns) {
            obs.disconnect();
            return;
        }
        obs.disconnect();
        debouncedRemove();
        runCount++;
        obs.observe(document.body, { childList: true, subtree: true });
    });
    observer.observe(document.body, { childList: true, subtree: true });
    // 点击一次执行一次综合函数
    let clickTimeout;
    document.addEventListener('click', () => {
        clearTimeout(clickTimeout);
        clickTimeout = setTimeout(removeElements, 200);
    });
    // 初始执行(延迟 1 秒,等待 DOM 加载)
    setTimeout(() => {
        removeElements();
    }, 1000);
})();
]]>
0 https://blog.iletter.top/archives/400/#comments https://blog.iletter.top/feed/tag/%E8%BD%AF%E4%BB%B6/
微信hook消息接收 https://blog.iletter.top/archives/356/ https://blog.iletter.top/archives/356/ Sun, 09 Mar 2025 23:36:00 +0800 DelLevin 微信hook消息接收

微信版本:3.9.12.45

账号:两个微信账号,大号用来发消息,小号用来测试

工具:微信、CE修改器、x64dbg

微信版本

定位消息地址

选择微信进程

选择微信进程

大号给小号发送消息,扫描类型选择字符串,数值填写消息内容

发送消息

重复之上的步骤,不断重复,直到无法定位的时候(我这里有三个),一个个查看浏览器内存区域

请输入图片描述

找到带着wxid和xml格式的就是内存地址

请输入图片描述

请输入图片描述

x64dbg断点

记录一下当前的微信地址1B6555E11BD,关闭CE修改器,打开x64dbg,附加微信,按住alt+e选择wechatwin.dll

请输入图片描述

点进去,再内存窗口搜索刚才记录的地址

请输入图片描述

设置写入断点

请输入图片描述

此时微信大号给小号发送消息,查看堆栈信息

请输入图片描述

找到有个db的那个(这一步骤是再写入微信数据库之前定位call)

请输入图片描述

选择,右键“在反汇编中转到指定QWORD”

请输入图片描述

跳转之后,先取消上一个断点

请输入图片描述

然后针对跳转的位置,找到上一个call位置,在call处进行断点

请输入图片描述

发送消息,断点到了,查看RDI

请输入图片描述

请输入图片描述

在地址栏的第一个双击一下

请输入图片描述

这样我们可以得出

0x48 是 微信id

0x88 是 微信消息的内容

计算偏移

找到断点位置,复制文件偏移

请输入图片描述

然后打开计算器那个图标,用偏移地址+C00

请输入图片描述

得出结果250AEA7

验证结果

找到断点位置,复制地址

请输入图片描述

然后按住ALT+E,找到复制wechatwin.dll的基址

请输入图片描述

用计算器两者相减得出结果250AEA7

请输入图片描述

结果是对的,此时编写frida脚本

var wechatWin = Module.findBaseAddress("WeChatWin.dll");
if (!wechatWin) {
    console.error("WeChatWin.dll模块未找到!");
    throw new Error("模块未找到"); 
}
var hookAddress = wechatWin.add(0x250AEA7);
Interceptor.attach(hookAddress, {
    onEnter: function (args) {
        var timestamp = this.context.rdi.add(0x44).readInt();
        var wxid = this.context.rdi.add(0x48).readPointer().readUtf16String();
        var msg  = this.context.rdi.add(0x88).readPointer().readUtf16String();
        console.log("[++++] "+ timestamp +"    "+ wxid +"  :  "+msg)
    }
});

console.log("Hook已安装,等待接收消息...");

运行脚本
请输入图片描述

发送消息测试

请输入图片描述

]]>
6 https://blog.iletter.top/archives/356/#comments https://blog.iletter.top/feed/tag/%E8%BD%AF%E4%BB%B6/
macos卸载系统内置软件 https://blog.iletter.top/archives/344/ https://blog.iletter.top/archives/344/ Fri, 27 Dec 2024 10:57:16 +0800 DelLevin 1、关闭系统完整性(SIP)

1.1进入recovery的方式

有的人使用的vmware虚拟机,在开机时候按键被屏蔽,咋都不管用,网上找找boot.efi启动,也找不到。这里我们可以挂载你安装的iso镜像然后在开机的时候选择“打开电源时进入固件”,然后在里面找到你挂载的光盘也就是带有“cdrm drivcer”这个。在进入安装模式之后找到终端。

如果您使用的是黑苹果或者白苹果,可以选择 重启按住Command+R 进入,如果是m系列芯片,长按关机键,进入硬盘选择界面进入。

进入系统Recovery模式,然后点击菜单栏,“实用工具 >> 终端”。打开终端执行如下命令:

csrutil  disable
csrutil  authenticated-root disable

然后手动输入reboot重启

2.正常重启系统

重启完毕后,可以用status查看是否为disabled,如果都是那就说明是关闭了

csrutil status    

csrutil authenticated-root status

3.查找挂载位置

使用diskutil list可以找到自己硬盘的所在分区

创建挂载目录 mkdir ~/mount

3.1虚拟机macos设置

挂载硬盘

sudo mount -o nobrowse -t apfs /dev/disk1s5  ~/mount

进入挂载目录

cd  ~/mount/System/Applications

删除所需要的软件

sudo rm -rf 你的软件名称

重建系统快照

sudo bless --folder /Users/levin/mount/System/Library/CoreServices -bootefi --create-snapshot

3.2物理机器macos设置(以mac mini m1为例)

挂载硬盘

sudo mount -o nobrowse -t apfs /dev/disk3s1  ~/mount

进入挂载目录

cd  mount/System/Applications

删除所需要的软件

sudo rm -rf 你的软件名称

重建系统快照(这里和虚拟机的操作有一点点区别使用的是--setBoot

sudo bless --mount "/Users/mac/mount/System/Library/CoreServices" --setBoot --create-snapshot

参考文件:

如何删除Mac OS Monterey自带(预装)软件?:https://blog.csdn.net/yzh0911/article/details/127930513

关于MacOS升级到Big Sur之后根目录无法挂载问题的解决方案:

https://juejin.cn/post/6895635776642482183

VMware16Pro中安装的MacOS11.13禁用系统完整性保护(rootless):

https://blog.csdn.net/u012332816/article/details/112803018

]]>
0 https://blog.iletter.top/archives/344/#comments https://blog.iletter.top/feed/tag/%E8%BD%AF%E4%BB%B6/
intel vt-x 处于禁用状态解决办法 https://blog.iletter.top/archives/74/ https://blog.iletter.top/archives/74/ Sat, 01 Apr 2023 23:48:00 +0800 DelLevin

title: intel vt-x 处于禁用状态解决办法 - Wonder
updated: 2021-01-26 14:57:19Z
created: 2021-01-26 14:57:19Z
source: https://www.wonder1999.com/index.php/archives/48.html
tags:

  • windows
  • 软件

虚拟机 VMware安装系统,提示此主机支持Intel VT-x,但Intel VT-x处于禁用状态

VMware提示此主机支持Intel VT-x,但Intel VT-x处于禁用状态这是怎么回事呢?

Intel VT-x完整名称是Intel Virtualization Technology,就是Intel虚拟技术,开启它可以让硬件平台同时运行多个操作系统,是虚拟机软件运行必备的技术之一,如果禁用,就会弹出“此主机支持Intel VT-x,但Intel VT-x处于禁用状态”这个提示,解决办法就是进BIOS开启Intel Virtualization Technology。

一、操作说明:

电脑主板非常多,不同品牌、不同机型BIOS设置都不一样,这边仅列举一部分作例子(联想),

1、重启电脑

2、按住F12,进入BIOS

在界面Main,Devices,Power,Advanced,Security,Startup,Exit,

选择Advanced,在选择CPU Setup,Enter 进入 ,选择 Intel (R) Virtualization Technology,设置Disabled为 Enbabled,之后按F10保存,重启即可。

注意:

如果你BIOS跟本文介绍的都不同,可以进入BIOS后一个个看看,一般会在Advanced、Security、BIOS Features、Configuration的下面,

找到Intel Virtualization Technology按回车键选择Enabled,表示开启。

进入BIOS之后选择某个选项按Enter是进入,按Esc是返回,按F10或F4保存。

(小提示:联想Y7000 进入bios如果遇到需要输入硬盘密码的话,输入完成后按住回车立刻敲F2,进入bios)

]]>
0 https://blog.iletter.top/archives/74/#comments https://blog.iletter.top/feed/tag/%E8%BD%AF%E4%BB%B6/