仅供学习,不提供破解版程序
Sublime Text 4出来了,船新UI给人感觉很舒服,顺便拿来练练手
破解分析
软件打开之后,标题栏大写的UNREGISTERED
每次切换标签页的时候,标题上的内容会变更为当前切换的标签页的名字,相比这个UnRegistered也是在这个时候填充上的
对SetWindowTextW下断点,可以看到很多提示信息,这里可能会填充不同的信息,但默认是走这个循环填充未注册的字样
这里分支跳转通过判断dil的值进行,往上找,看看dil的值是从哪来的:
dil寄存器是edi寄存器的低8位内容,这里的值是来自r9d,r9寄存器一般作为参数使用,所以这里接着往上找r9d的赋值地方
往上追到上一层函数处,发现了r9的填充:
r9来自r14d,接着往上找r14d的来源:
往上拖了好一会,发现了r14d的来源,源于edi的值,这里edi的值取决于最上面断点这一行的对比语句
rax的值是00007FF648625048
,貌似是一个固定的值,全局变量
rax+5这个地址则是判断的地方,sete指令则是根据判断结果来设置cl的值,cl的值会赋值给edx = 2*cl,edx传递给edi,然后根据一堆处理之后,一步一步传递给显示标题的函数来设置显示的内容
所以这里判断的根源就是这个rax+5的判断,根据这里的结果,来影响后面的处理
所以修改这里试试:修改这个地址的值为1
不再显示未注册了!
这是个全局变量,应该就是用于在全局表示当前程序是否注册的,所以应该只要修改了这里,即可完成对整个软件的注册
然后就是打补丁修改程序了
原语句:
00007FF647D56BC8 | 8078 05 00 | cmp byte ptr ds:[rax+5],0 | 判断这个全局量是否是0
00007FF647D56BCC | 0F94C1 | sete cl | 是0,cl设置为1
修改后:
00007FF647D56BC8 | C640 05 01 | mov byte ptr ds:[rax+5],1 | 判断这个全局量是否是0
00007FF647D56BCC | 48:85C9 | test rcx,rcx | 是0,cl设置为1