一、软件准备
1、下载 ida pro
下载地址: https://bbs.pediy.com/thread-271326.htm
2、下载并安装 010 editor
下载地址: https://www.sweetscape.com/010editor/
二、破解步骤
1、使用 ida 打开 010 editor
使用默认参数打开即可
2、搜索字符串
打开字符串搜索子窗口,然后使用 ctrl + F,搜索字符串
双击进入函数位置,为了方便记忆,我把变量名称改成了 InvalidLicense
3、定位需要修改的函数
跳转到代码段之后,我们使用 F5 打开 Pseudocode 模式
我们在对应字符串的下面不远处,发现了 Password accepted 字样的字符串,重点注意上面的判断条件(你的 ida 中可能不叫 v17)
if (v17 == 219)
只要我们能把 v17 的值修改为 219,那么就可以正确注册了。而 v17 来自函数 sub_140009D7C 的返回值,我们点击进入函数 sub_140009D7C,进去之后继续点击函数 sub_140308310
// attributes: thunk
__int64 __fastcall sub_140009D7C(__int64 a1, __int64 a2, __int64 a3)
{
return sub_140308310(a1, a2, a3);
}
// 中间省略的代码
__int64 __fastcall sub_140308310(__int64 a1, __int64 a2, __int64 a3)
{
unsigned int v3; // edi
int v6; // eax
int v7; // eax
int v8; // eax
unsigned int v9; // ecx
int v10; // eax
unsigned int v11; // ecx
int v12; // eax
unsigned int v13; // ecx
v3 = a2;
if ( *(_DWORD *)(a1 + 60) )
return 275i64;
v6 = CDockablePane::HitTest(a1, a2, a3);
// 省略的代码
我们只需要强制把 if 条件和 return 275i64;
强制修改为 219 即可。
4、patch 代码
在菜单中,选择 Options -> General -> Disassembly 中的 Number of opcode bytes 值修改为 8
修改之后,hex view 中会显示 opcode 列
在菜单中,选择 jump -> jump to function,然后 ctrl + F,输入 sub_140308310,双击进入函数
.text:0000000140308323 74 10 jz short loc_140308335
.text:0000000140308325 B8 13 01 00 00 mov eax, 113h
这里需要修改两个地方
- 把 jz 跳转去掉,直接改成 nop,nop 的十六进制为 90
- 把 0x0113 修改成 219, 219 的十六进制为 0x00DB
则,修改后的内容应该为
.text:0000000140308323 90 90
.text:0000000140308325 B8 DB 00 00 00
选择要编辑的内容,然后在菜单中选择 Edit -> Patch program -> Change byte
5、保存文件
修改完成后,我们在菜单中选择 Edit -> Patch program -> Apply patches to input file,为了保险起见,我们在弹出的窗口中选择 Create backup
6、验证
打开修改后的文件,验证是否正常