例子
https://mp.weixin.qq.com/s/YWgMoGn4_YVhCPXPOAmrkA
https://mp.weixin.qq.com/s/v3ySvd7kxukn-x9AjbwOtQ
https://mp.weixin.qq.com/s/JPqqkf_XRh2n5SZSFnmS2Q
https://mp.weixin.qq.com/s/548sZpUE1xq2lCs-olVIzQ
https://mp.weixin.qq.com/s/llvoP-PYOoxuBzZxRbu1nQ
https://mp.weixin.qq.com/s/B5jAhpqKmdyw4Eo6q7f2Kw
找代码
找可疑字段
- 找到加密数据,看看加密数据有哪些字段,比如:vedio:xxx,password:xxx,xxx 为加密的数据,这里有字段 vedio,password,他们可能为可疑字段;
- 再比如要提取一个视频链接的 url,后缀为 .mp4,.mp4 也可能为可疑字段
- 再比如因为是加密了的,一般都是编码,解码,所以 decode,encode 也可能为可疑字段
- 比如账号密码,user,邮件查看那个输入框的 id,可能就是可以字段
- parse,json 可能也是
搜索可疑字段
- 在 js 文件中,一个一个 js 文件的搜索可疑字段,找到可疑为加密或解密的函数
- 或者 Ctrl + F 全局搜索,看它在哪个文件后,直接去点开
- 比如说登录,有个登录后的包,找到这个包名 post 请求,在这个包打断点
打断点分析
- 找到后,打上断点,刷新
- 以此观察都有哪些相关的的函数,类,变量,鼠标悬停在相应的函数上,会有调用的函数名
- 顺着堆栈往回追,Call Stack,从上往下,离断点由近到远,找可疑函数,看是怎么调用的,可能是调用两次,可能是加了个值再调用
解码或编码
如果是要解码,那可以先找出加密的地方
扣代码
扣变量
- 在调试时,可能会报变量没定义,因为我们只扣了函数,而函数上下附近的变量没扣,去找一找扣下来
扣函数
- 有些函数是在类里面定义的,那找到这个类,全部扣下来,扣的类最后可能有 (window),把 window 改成 global
window not defind
- 为 js 代码在前端显示的的东西,删掉
- 或者,在控制台,看看 ,windiw 后面的码输入看似什么类型,下面是修改的,上面是扣下来的
-
window["\x53\x74\x72\x69\x6e\x67"]["\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65"](scHZjLUh1["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](i) ^ key["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](coeFYlqUm2)) String.fromCharCode(scHZjLUh1["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](i) ^ key["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](coeFYlqUm2))
e[a]
这种是 js 的对象 OBject 类型,相当于 python 的字典,扣代码有时候会忽略,有时候,可能参数拼接,少了会不对,要看看是不是有些参数扣的时候也需要把相应的加上去
加密算法扣不下来时
知道算法是什么算法后,可尝试用 python 的算法