0x00 前言
今天给大家带来的是Sublime Text 4 4107
的学习版
0x01 思路
先说一下整体的思路,在sublime text中输入激活码的地方,瞎几把输点东西,然后看提示,根据提示的内容,丢到ida里面找到对应的地方,然后修改汇编,让sublime text 强行跳转到激活成功的逻辑上
一句话,就是暴力破解
0x02 定位
Help
->Enter License
,随便输入激活码
得到关键字That license key doesn't appear to be valid.
接下来是找到sublime text,如下:
把它复制出来,放到一个空文件夹下,然后用ida打开它
等待ida自动分析完成,如下图的提示:
打开字符串窗口,View
->Open subviews
->Strings
(或者使用快捷键Shift+F12
)
搜索(快捷键Control+F
)刚刚的关键字That license key doesn't appear to be valid.
,然后双击
然后不断按下x
快捷键,查找其xref(引用)
,发现show_invaild_key
函数引用了它
继续看看,谁调用了show_invaild_key
函数
至此,我们通过关键字That license key doesn't appear to be valid.
找到了show_invaild_key
函数,并找到了调用show_invaild_key
函数的地方
0x03 分析
接下来我们分析一下附近的地方
很明显,这几个都是提示key有问题的
因此我们往上找找,看看有没有提示成功的地方,然后网上找到了第一个分支
沿着可能是key有效的分支往下找找,果然找了一个show_thanksPv
的提示
双击进去,发现它提示Thanks for purchasing!
,谢谢购买,很明显,这个就是key有效的提醒了。按Esc
回到上一层。
因此,这个函数里面,大体如下:
现在我们回到刚刚的那个成功和失败的分支,看看要怎么才能让它跳转到成功的分支那里
可以看到,跳转是用jz
,上面还有个test
,我们简单复习一下相关的考点
test eax, eax
jz somewhere
;如果eax为零->设置ZF零标志为1->jz跳转
因此,要想程序跳转到“谢谢购买”的提醒,必须要让eax
为0,而eax
是存放函数返回值的,所以,只要上面的那个call
函数里面,赋值eax
为0即可
0x04 patch
双击call 后面的函数
在第一行代码(程序段)push rbp
右键->Keypatch
->Patcher
,改成如下:
mov eax,0x0
retn
最终效果如下:
0x05 生成文件
patch完成之后,就是使得patch生效了,生成对应的破解文件,如下:
替换刚刚生成的文件即可完成破解
0x06 激活
还有最后一步,激活。Help
->Enter License
,输入以下激活码(我从网上随便找的)
----- BEGIN LICENSE -----
Member J2TeaM
Single User License
EA7E-1011316
D7DA350E 1B8B0760 972F8B60 F3E64036
B9B4E234 F356F38F 0AD1E3B7 0E9C5FAD
FA0A2ABE 25F65BD8 D51458E5 3923CE80
87428428 79079A01 AA69F319 A1AF29A4
A684C2DC 0B1583D4 19CBD290 217618CD
5653E0A0 BACE3948 BB2EE45E 422D2C87
DD9AF44B 99C49590 D2DBDEE1 75860FD2
8C8BB2AD B2ECE5A4 EFC08AF2 25A9B864
------ END LICENSE ------
我们最后再查看一下关于,Sublime Text
->About Sublime Text
来源:freebuf.com 2021-06-30 18:24:17 by: a江南小虫虫
请登录后发表评论
注册