基础破解
首先发现,VIP功能需要登录。由于内网无法联网,所以先在外网做这个实验
随意输入一个账号并登录,提示账号不存在
进入OD搜索中文字符串,其当前被引用地址为0x79525C
在IDA中根据OD中载入的基址进行Rebase,定位到该地址,从而确定该函数
确定函数后,观察函数的逻辑。发现进入else分支后会去根据回传数据的验证码,判断出错的问题。所以这里不能进入else语句
找到if语句判断的位置
在OD中定位此处,单步过来,发现
jnz
。这里[esi+0x64]处的值为0,因此不会跳转。此时会继续往下继续判断[esi+0x34]处的值与0x3EC(1004)。所以下面就是判断出错类型的地方,因此这个位置必须要跳转,直接将框住的地方改成je
即可,然后继续执行然后就成功登录了
这里虽然显示账号过期,但是VIP功能可以正常使用(同步除外)
验证可以使用VIP功能,非VIP无法进入下图所示界面
VIP功能如下,框住功能可以正常使用,同步功能需要打掉服务器,有风险
修改完
jnz -> je
后,右键选择Copy to executable -> All modifications,然后选择Copy All进入这样一个界面,右键 -> Backup -> Save backup to file,替换掉用来的文件就行
抓包思路
由于burp只能抓设置了代理的应用,这个便签无法设置代理,key建议我使用proxifier进行全局代理。先在Profile -> Proxy Servers 中设置代理服务器地址为 BurpSuite 监听的地址。然后简单配置一下,拦截便签应用发送的数据包到代理,就可以用Burp进行操作
退出先前登录的账号,先随便登录一下。抓个包。可以看到回传包里面有一个 activated字段,目前它是空的。第一个字段code说明了,返回将导致输出结果“账号不存在”。如果对返回包进行适当的修改,也可以实现激活
注意到,后面有提示,注册后赠送40天VIP权限。这里就随便注册一个账号。看一下它的返回包。可以看到activated字段设置为了1。data和expires_data字段也都有值,这两个值表示从1970-01-01至今经过了多少秒。这里,只需要将expires_date的值进行修改。将
1653104261
修改为3653104261
,延长一下激活时间,再来看看情况如何。它会回传一些数据,我们不用管,进入账号管理可以看到,激活时间为永久