作者: <span>flandre</span>

CrackMe 反汇编练习之 024、026

作为练手的 160 个 CrackMe 系列整理分析


sse 指令中 xmm 寄存器复制到内存出现异常

在将我的东方弹幕游戏拖到 win10 虚拟机中运行时发现程序一运行就崩溃了,报了内存访问异常(0xc0000005),而且多运行几次现象也会不同,有时是直接崩溃,有时还能坚持到显示完启动画面,但进入游戏时还是会高概率的崩溃 – -b 。

于是挂上 windbg 看一下,发现断在了这里

0012da40 55              push    ebp
0012da41 8bec            mov     ebp,esp
0012da43 8b4508          mov     eax,dword ptr [ebp+8]
0012da46 0f2800          movaps  xmm0,xmmword ptr [eax]
0012da49 0f2901          movaps  xmmword ptr [ecx],xmm0    ; <--- 0xc0000005
0012da4c 0f284010        movaps  xmm0,xmmword ptr [eax+10h]
0012da50 0f294110        movaps  xmmword ptr [ecx+10h],xmm0

获取 USB 扫描枪输入

最近公司买了个扫描枪,要给设备二维码做扫描录入工作。原来跟我说的是串口的扫描枪,没想到后来买到的是 usb 的,似乎是考虑到 usb 的比较普遍。果然串口还是没 usb 来得方便啊,在使用上。

以前没搞过 usb 的,一开始还以为不能工作,后来开了个记事本发现能正常录入了。。。

上网确认了一下果然是通过类似键盘事件进行输入的,那这样就上键盘钩子吧。


菱形继承的内存布局

菱形继承来自于多重继承,是为了解决具有歧义的组合而产生的一个结果。通过引入虚继承,使得多个由虚基类直接或间接派生的类拥有一个共同的基类实例。实现上相当于派生类绕过了父类直接继承了祖父类(虚基类)。
下面我们通过 MSC 14 编译器(VS2015)来看一下菱形继承的实现细节。


东方弹幕全明星 ~ Touhou Barrage All Star.

※※※※※※ 2020 / 01 / 04 日已更新!※※※※※※

介绍

作为 DX 练手而写的东方弹幕游戏,算是视频链接简陋复刻了∠( ᐛ 」∠)_。其本体是由 yuke 氏制作的原作风自制弹幕游戏,只制作了演示动画,而游戏本体并没有进行发布。插画来自画师 kaoru

视频里的所有 66 只 boss 已经全部完成,勉强算是在二零衣玖年搞定了,完结撒花 *★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

顺便一提这里也参考原视频没有设置残机、Bomb以及符卡的限制时间,也没有 Miss 后的全屏消弹。累积下来的被弹数会显示在屏幕右上方。靠底力扭过去吧!


CrackMe 反汇编练习之 011

作为练手的 160 个 CrackMe 系列整理分析


CrackMe 反汇编练习之 006

作为练手的 160 个 CrackMe 系列整理分析


CrackMe 反汇编练习之 005

作为练手的 160 个 CrackMe 系列整理分析


CrackMe 反汇编练习之 004

作为练手的 160 个 CrackMe 系列整理分析


Remember11 解包

r11 的封包是 afs 格式的,封包没有压缩和加密,在封包头部有文件的偏移和大小,封包尾部有各文件的文件名以及其他一些信息。

    所有封包中含有以下类型文件:

  • bip: lzss 压缩或未压缩的多 png 组合文件
  • t2p: lzss 压缩的 tim2 文件,tim2 可转为 bmp 文件
  • adx: 原始 ogg 或 wav 声音文件