介绍
软件破解相关知识。
破解
Acid burn
破解
- 首先查壳是VC写的。使用BP快捷操作中的
BP MessageBoxA操作对消息框进行截断,



- 运行程序,进入
Serial/Name子程序,输入任意字符串,点击Check It Baby。

- 进入调用堆栈
Alt+K或者小按钮k查看,找到调用函数,右键显示调用.

- 向上翻找,找到入口处,设下断点。

- 再次运行程序,在断点处截断,查看右下角堆栈处右键选择反汇编窗口跟随。或者再次通过
Alt+k找到调用堆栈,跳转至调用函数。


找到注册码生成的核心逻辑。

注册机
- 核心逻辑

1 |
|
- 注册码组装。

- 点击
Serial按钮,进入子程序,和上面方法一样,BP MessageBoxA下断点。最后找到固定的注册码。

Afkayas.1
破解
- 查壳是VB写的,正常运行程序发现有MessageBox,故使用VB的快速特征断点。
BP rtcMsgBox,运行程序,输入伪码,断下程序。

- 查看调用堆栈,追踪最上面的目标,就是函数调用方的地址,右键。跟随目标。

- 向上寻找关键跳转,设置断点,使用nop填充,使用补丁修补文件输出到破解软件。

注册机
- 在这个代码块中寻找注册码计算逻辑,分析得知,edi=6 edi*0x17cfb,然后乘以用户名第一位的ascii码的算法.

1 |
|
Afkayas.2
破解
- 破解方法同上。
- 去除Nag。使用4C方法。先找到入口处入栈的地址
0x4067D4,在数据窗口总使用表达式找到4C偏移处的内存地址。

- 找到第一个位置的内存地址,右键,在内存敞口中转到指定的
DWORD。

- 这个地址我们能够看到两块相似数据,在第37块数据上,我们能够发现两个不一样的数据,一个是
00,另一个是01,这个标志位标识了窗口的启动顺序,如果我们调换启动顺序,则可以消除Nag窗口,最后写出破解程序。



注册机
- 注册机无法修改Nga窗口的启动顺序。
- 向上寻找。
算法如下
1 |
|
CKme
破解
由于x64dbg出现了向后反汇编错误,故本次破解使用了Ollydbg.
- 本项目中查壳发现是Dolphin编写的,故使用各种常规断点,无法断下程序。后使用
E2A(Dolphin事件到地址查询工具),得到输入框2中有OneKeyUp事件,函数名chkcode,根据函数地址下断点,BP 457C40。


输入伪码,运行程序,使用单步跟踪。
发现可疑call,因为发现疑似注册码的字符串被这个call处理了,故步入此call。
1 | 00457CA4 |. E8 93BFFAFF call CKme.00403C3C |
- 单步步过,发现注册码在一个循环体中拼接完成。
1 | 00403C5A > /8B449C 14 mov eax,dword ptr ss:[esp+ebx*4+0x14] |
- 当循环跳出时,在栈帧中发现疑似的注册码。
1 | 0019FB54 02325788 ASCII "黑头Sun Bird11dseloffc-012-OK111111" |
- 暂时解除所有断点,进行注册码测试,在后续代码中发现对比流程。
1 | 00457D2C |. 8B45 E0 mov eax,[local.8] ; 用户输入的注册码 |
- 当输入正确的注册码后,这里不会执行跳转,而是讲一个数据存入了数据地址中。发现注册成功的标志并没有显示出来,所以猜测,注册码比对事件不是在
chkcode函数中实现的,而是另外实现的,所以寻找其他事件地址,进行调试,我们发现panel上面有两个事件,onclick和ondbclick,故需要分别调试,不然ondbclick可能会被onclick事件获取。首先,不进行断点注册,使用单击panel发现没有反应,双击后象征注册成功的照片出现,说明对比事件发生在ondbclick事件中,对双击事件的地址00457E7C下断点。发现在这里对数据进行了对比,如果对比成功,则写入0x85。
1 | 00457EF5 |. 83BE 0C030000>cmp dword ptr ds:[esi+0x30C],0x3E ; 数据对比 |
- 对
onclick事件下断点,对panel进行单击,发现这里会对0x30C处的数据进行比对,如果比对成功,则不会跳过下面的流程,注册成功的信息也会显示出来。
1 | 00458031 |. 81BE 0C030000>cmp dword ptr ds:[esi+0x30C],0x85 |
注册机
这个注册机很简单,就是黑头Sun Bird11dseloffc-012-OK拼接用户名即可。
出现的函数
vbaR8Str:将整数转换为双精度小数
vbaStrI4: 转换数字到字符串的函数
遇到的问题
x64dbg出现的问题
逆向工程 - 强制解释 x64dbg 中的代码 向后反编译的问题 (52sbl.cn)
Dolphin在Win10系统上出现的问题
在脱壳时IAT修复失败,常常会出现找不到的函数。

