保卫萝卜PC版内存修改器分析、制作过程
0x00 前言
近期在 52 上看到一位大佬分享了基于 Cheat Engine
的 保卫萝卜破解教程
,欲初探一下逆向知识,并锻炼 Win32
编程技能,故有此篇。
文章尽可能详细记录了各个过程,既是自己学习路上的一点经验记录,又是一篇简单教程,期望能对一些像我一样的入门小白有所帮助。
近期在 52 上看到一位大佬分享了基于 Cheat Engine
的 保卫萝卜破解教程
,欲初探一下逆向知识,并锻炼 Win32
编程技能,故有此篇。
文章尽可能详细记录了各个过程,既是自己学习路上的一点经验记录,又是一篇简单教程,期望能对一些像我一样的入门小白有所帮助。
提到在控制台输出彩色文字,大家都会想到使用“ANSI转义序列”(ESC
\x1b
\033
)
但自带的 cmd、Powershell 等终端并不能直接识别这样的序列,而是将其作为普通字符输出。
在此,本文给出了一种解决方案——虚拟终端序列。
为C语言控制台程序开启该特性后,即可完美实现彩色输出。
在 Win32
编程调试过程中,常常有分析 API
调用失败时返回码的需求。
我们经常使用 GetLastError()
函数获取最近一次的错误码,该函数返回的是一个 DWORD
值。
本文提到的工具/资源即可方便地将 Error_Code
转换为详细的错误描述信息。
graph LR
ida1[手机模拟卡片]
ida2[仅含UID的空卡]
idb1[读卡器读取原卡]
idb2[完整卡片数据]
idc1["数据写入(63扇区)"]
idc2[得到新卡]
ida1 -- 复制UID ---> ida2 --- idc1
idb1 -- 解密 ---> idb2 --- idc1
idc1 --> idc2
此方法可能可以省去一张空白卡。
注:此文仅作备忘记录。
众所周知,在“全国大学生电子设计竞赛培训网”通过每日签到可以领取“赫兹币”,用于兑换礼品等等。
作为白嫖党,肯定不能错过啦(呃,虽然只靠签到集币会很慢)。
自己动手,丰衣足食。这不,博主自己搓了一个自动签到小助手。
在编写单片机程序进行 ADC 采样并配合 DMA 传输时,发现单片机仅在启动后第一次采样有效。而进行下一次采样时,单片机卡死。
也就是说,单片机只能进入一次 DMA 中断,而在中断后就无法继续启用 DMA 并进行采样。
在花了亿点点时间后,终于 get 了再次开启采样的正确姿势,故有此踩坑小记。
在编写单片机程序时,常常会有这样的需求:
graph LR
A[监听按键事件中断] -- 按键按下 ---> B[中断回调函数] --> C[执行用户代码]
但是,由于按键抖动等原因,按键中断可能会被意外触发,导致按钮事件重复执行,这不是我们希望看到的。
解决此问题的一个方法,就是“在中断回调函数头部屏蔽按键中断事件,在尾部重新开启中断事件”,以达到防止按钮误触的目的。
本文以 STM32F103C8T6
为例,介绍通过寄存器屏蔽特定线路的外部中断的方法。
上个月有个单片机的开发项目,使用了 STM32CubeMX(v6.5.0) 来生成 HAL 库代码,几乎在每次重新生成代码(Re-Generate)时,都会出现卡死的情况,尝试了网上的一些方案并未解决,这里记录下自己的解决办法。
找了个时间,把 NexT 主题从 7.x 升级到了 8.x
,期间遇到不少问题,最麻烦的就是这个透明背景的设置了。 首先是 NexT8 把
_custom.styl
的位置进行了更换,需要在其它目录新建一个自定义的样式文件并引入。
其次,原先设置背景透明度的方法失效了,在新主题上不起作用。
更麻烦的是,照着网上大多数教程配置好透明后,在一些部件获得鼠标焦点后,会有白色色块出现并闪烁。
本人经过好一阵研究,终于完美解决,特此分享。