本文最后更新于 364 天前,其中的信息可能已经有所发展或是发生改变。
本篇文章为作者在学习逆向过程中所做案例的经验分享,本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
接口分析

一共就两个接口

第一个接口携带这些参数,参数都能写死,然后返回背景图片还有rid

第二个接口只有这三个参数需要逆向

逆向分析
首先最好ast解混淆一下,我这边解混淆了没去替换而已,然后你可以一步步跟栈到这个位置,他这里有几个case 我们是case slide滑块这里,所以下断点

先分析tb,如图的这个参数是滑动距离,后面那个参数是指定的,如tb就用59fcff86,其他就用其他的,类似密钥吧,不同的密钥用不同的分支加密


把这个函数抠出来之后就得到这个,很好扣的自己慢慢分析吧

重点是看getEncryptContent这个函数,进去看看,这就是在加密tb了,如果没ast反混淆,可以根据如图的列表然后手动还原一下switch,然后接下来的几个参数的加密都是经过getEncryptContent的,只是后面携带的参数不一样而已(密钥),只需要把getEncryptContent搞出来,无论是导出还是扣代码,扣代码最好做一下解混淆

轨迹
def get_random_tracks(self, distance):
"""生成轨迹"""
tracks = []
y = 0
v = 0
t = 1
current = 0
mid = distance * 3 / 4
exceed = 20
z = t
tracks.append([0, 0, 1])
while current < (distance + exceed):
if current < mid / 2:
a = 15
elif current < mid:
a = 20
else:
a = -30
a /= 2
v0 = v
s = v0 * t + 0.5 * a * (t * t)
current += int(s)
v = v0 + a * t
y += random.randint(-5, 5)
z += 100 + random.randint(0, 10)
tracks.append([min(current, (distance + exceed)), y, z])
while exceed > 0:
exceed -= random.randint(0, 5)
y += random.randint(-5, 5)
z += 100 + random.randint(0, 10)
tracks.append([min(current, (distance + exceed)), y, z])
return tracks
结果










