加速访问基于hugo部署的静态博客站点
前言 前几天使用 hugo 构建了博客,并部署到了 github pages 上,然后通过托管在 cloudflare 上的域名进行访问
在魔法加持的情况下,表现没有任何异常,但是关闭魔法后,访问域名就出现间歇性抽风,通过 itdog 测试 ping 延时的部分情况如下
国内大部分地区访问均出现严重丢包的情况,一些地区的 dns 解析直接被污染了(如下面的甘肃兰州)
对于移动线路的访问,情况就更加严重了,请求全部都是失败的,看起来 github pages 在移动线路是被完全 block 掉了
迁移cloudflare 基于国内环境对 github 访问的严重破坏,考虑迁移到 cloudflare 的 pages 上来(当然 cloudflare 的默认访问也是被严重破坏的,迁移后再进一步优化) …

Securecrt丢失tab以及终端重新配色
今天在使用 Securecrt 的时候,发现 Securecrt 的 tab 标签消失不见了,仔细回想起来,应该是上一次误按了 alt + enter 最大化,然后导致配置丢失的问题
还有表现就是菜单中的 Session Tabs 无论勾选还是不勾选都没有任何变化,以及 Full Screen 菜单当时是灰色不可操作的(之前没截图)
问了 gpt 以及网上搜了一遍,Securecrt 的配置也仔细看了一遍,没有找到有效的解决方案
只好尝试将配置文件 C:\Users\Administrator\AppData\Roaming\VanDyke\Config\Global.ini 重命名 backup 起来,然后重启 Securecrt 进行配置初始化
这时候 tab 显示恢复正常了,但是所有 Session 的配 …

基于hugo的静态博客站点部署
前言 之前写的一些文章,基于 halo 搭建了一个个人站点,运行也有半年多了,大概就长下面这个样子
我没有专门研究怎么配置它的 theme,不过我看有些人整得挺拉风的,最近在考虑迁移到 hugo, 以后记录就使用静态站点了
至于迁移到原因,主要有以下几个点吧
1、服务器要花钱,halo 服务是部署在阿里云的,之前 99 一年买的小鸡,现在已经没优惠了,续费的话费用至少得大几百
2、halo 基于 java 开发的,内存占用实在有点高,再加一个 mysql,内存就没有了,因为请求量也不多,cpu 倒是没什么占用
3、人工运维,hugo 虽然说整体也挺稳定,但是半年来也死机过两三次,不确定什么原因,但从表现看就是内存耗尽了,只能重启机器
4、发布流程麻烦,涉及环节多,最开始登录 web 发布 mardown,需要额 …

软件反调试(4)- 基于IsDebuggerPresent的检测
反调原理 该检测方式使用 IsDebuggerPresent 或者 CheckRemoteDebuggerPresent 函数,这两个函数都是 kernel32.dll 中实现的
对于 IsDebuggerPresent 函数,如果返回值为 TRUE,那么表示当前进程在调试器上下文中运行
CheckRemoteDebuggerPresent 的底层是通过 NtQueryInformationProcess 函数来实现的,函数接受一个 BOOL 的指针参作为返回值
函数调用成功的时候返回非零值,这时候检查出参 pbDebuggerPresent 指针的值,如果值为 TRUE,那么表示当前进程正在被调试中
使用这两个函数需要引用 windows.h 头文件,函数的原型分别如下
BOOL …

B站图片资源无法加载
访问 B 站出现大面积失败的情况,很多的 hdslb.com 资源显示连接超时,了解到这里 https://v2ex.com/t/666462
然后更新了域名的 host 配置,然后就可以正常访问了
查看本地 dns 的配置,两个配置分别为 8.8.8.8 和 1.1.1.1,跟踪路由发现也是正常的
域名解析涉及到的有以下几个,如果还有其他失败的域名也得继续替换,直到全部正常为止
s1.hdslb.com
i0.hdslb.com
i2.hdslb.com
配置 host 时每个域名对应的 ip 地址,可以在站长之家中查看,如:https://ping.chinaz.com/s1.hdslb.com
从解析到的 ip 地址列表中选择其中一个进行替换即可

软件反调试(3)- 基于父进程的检测
反调原理 如果进程是正常运行起来的,那么其父进程应该是 explorer.exe,否则可能处于被调试状态
该检查方式只能进行有限检查,如果进程是通过附加的方式来进行调试的话,那么父进程的检查方式就会失效
如下通过 procexp64 可以查看进程的父进程是哪一个,procexp64 是微软出品的 SysinternalsSuite 工具包中的一款工具
实现代码 #include <iostream> #include <thread> #include <string> #include <vector> #include <windows.h> #include <TlHelp32.h> DWORD …

软件反调试(2)- 基于窗口列表的检测
反调原理 通过枚举屏幕上所有的窗口,来检测当前是否打开了调试器
EnumWindows 枚举的时候,会进行窗口回调处理,直到所有窗口回调都结束后函数才返回
VS 提供了 Spy++ 可以查看窗口的信息,通过工具下的菜单可以打开 Spy++ 程序
打开 Spy++ 程序,并打开其搜索窗口,左键按下窗口上的圆饼,并将光标拖动到应用的窗口上
这时候,搜索窗口上就会显示要查看窗口的信息,如这里显示窗口标题为 x64dbg [管理员]
在打开 x64dbg 的情况下,通过 CheckDebugWindowByEnum 函数,编译并运行 anti02.exe 程序,终端显示输出如下的信息
除了通过 EnumWindows 的方式进行枚举,也可以通过 GetWindow 的方式进行遍历查找窗口
每个进程的主窗口通常都是顶级窗 …

软件反调试(1)- 基于进程列表的检测
反调原理 在打开了调试器的情况下,在任务管理器中可以看到调试器的进程信息,通过枚举列表来进行检查当前是否打开了调试器
如果调试程序的执行文件被改名了,那么该检测方法就会失效,通常只能作为辅助的检查
实现细节 使用 vs2022 新建 c++ 的控制台项目 anti01,并将工程的字符集改为 “多字节”
在工程的 main.cpp 文件中增加以下代码,通过 windows 的 TlHelp32 库来遍历进程,检查是否有目标进程在运行
这里只检查了 x64dbg 调试器名称,实现上需要检查所有的调试器名称
#include <iostream> #include <thread> #include <windows.h> #include <TlHelp32.h> …

跨平台开发flutter初体验
前言 flutter 是 google 出品的开源的跨平台解决方案,支持主流的桌面软件以及移动端软件开发,实现一套代码无痛构建迁移
支持 win、mac、linux 桌面端以及 android、ios 移动端,使用 dark 语言进行开发
社区非常活跃,截止目前为止,commit 超过 8.4w 多次,star 超过 17w,最后一次 commit 是 3 小时前
凭借 google 强大的实力支持,flutter 无疑是跨平台开发的首选
flutter开发包安装 flutter 的版本有很多, 在 github 上直接 clone 下载也是一样的,不过 github 上版本号太多了,可能会被搞懵了
可以在 https://docs.flutter.dev/install/archive 这里获取到具体平台最新 …

去除前端js的反调试
chrome 访问一个 web 页面,按 F12 打开开发者工具的时候没反应,尝试从菜单中进行打开开发者工具,
结果页面直接跳转到了 about:blank 变成了一片空白,可以知道页面加了反调试的逻辑
在空白页面的情况下,先打开开发者工具,然后再重新请求该 url 地址,发现页面刷新后很快又跳转到了 about:blank 空白页
在网络页面可以看到,加载了一个 disable-devtool.js 文件,很显然该文件阻止了打开开发者工具
在开发者工具的网络标签中,选择该文件记录,然后右键点击 “屏蔽请求网址”
屏蔽之后,再重新发起 url 请求,可以看到该记录变成了红色表示未加载该文件,这时候页面也可以正常显示了
