专栏首页日常学python教你一步步扣代码解出你需要找到的加密参数

教你一步步扣代码解出你需要找到的加密参数

注意:目前pdd已经需要登陆,这篇文章是在未更改之前写的,如果需要实践需要先登陆pdd再进行操作即可

上周的pdd很多人说看了还不会找,都找我要写一篇来教教如何扣代码的,那就应大家要求,今天来写一篇详细的扣代码过程,完全从零到一,如果对你有帮助,还望大力分享,这样我会越写越多。

代码都放在我的Github上,还没有star的感觉star了,哈哈,可能今周会更新别的网站,由于网站太强给推迟了,还得需要时间,为了爬虫可谓掉光了头发。

Github:https://github.com/SergioJune/Spider-Crack-JS

其他不多说了,直接开始今天的主题,扣代码。

上篇文章我已经找到了加密位置了,就是下图这个位置

如果还不知道怎样找的话,可以看看https://sergiojune.com/2019/03/26/pinduoduo_anti_content/,微信的被举报删除了,暂时只能在我blog上看了,这里就不多说了。

1. 创建 HTML 文件

我们在扣代码之前,为了方便调试,可以先创建一个 html 文件,这样可以方便我们直接在 chrome 上直接进行调试,或者创建一个 js 文件也可以,不过进行调试时需要在 webstorm 上调试才可以。这里我就创建了一个 html 文件。

然后把我们扣下来的代码放到 script 标签里面即可,然后使用浏览器进行打开即可调试。

2. 开始正式扣代码

这里我们知道了 e[p("0xd2", "jLF%")](Z) 这个语句是生成 anti_content 的,所以可以直接打断点到这个语句进行查看它所需要的语句。

点击下一步,进入了这个函数内

如果你调试过多次之后,发现这个是将一些加密后的字符串解密为正常的函数名字。如果你第一次扣的话,估计是把这个函数直接给扣出来,但是后面会有很多麻烦,比如变量之间的关系,所以我们应该是把整个大函数给扣出来,即是包括这个函数的函数,看下图

但是当你扣的时候,发现刚才我们加密的那个方法也在这个函数里面,这时就得改改了,不扣大函数,因为扣了之后调用开始就难免会出错,还是直接把这个小函数扣出来先,如下图:

这时就可以用浏览器打开这个文件了,可以看到报错

这时不要慌,报错是正常的,因为我们只扣了一下部分,所以还需要继续找,接下来就是查看报错的地方并断点。

可以用这个和原网址上的运行作比较,发现这个变量是个数组,所以也直接扣下来。

你细心的话会发现,下面还有个打乱这个数组的函数,正确来说应该是还原数组,需要两个一起扣下来。

这时再次刷新文件即可正常得到结果了

我们再看下一个问题。

再次点击到达错误位置,再根据原网站对比

可以发现这是个函数,可以点击箭头所指函数直达函数位置,发现还是和加密的语句在同一个大函数内,所以我们还是直接扣出 Z 函数即可

再次刷新运行,出错的位置也变了

我们继续进入错误位置和原网址的对比

发现这个变量是个方法名,可以往上找找定义位置

估计这里面的变量都是有用的,所以直接全部扣了

再次刷新即可看到错误地方不一样了,继续找即可。

在出错地方断点的同时也需要在原文件中断点,然后将原文件的运行到该断点处就可以了。

接着就是查找这个对象的定义的地方了,然后把代码扣下来即可。

这里不止 F 对象, 还有 B,U,z等对象,定义位置都是在附近的,也都一起扣下来即可。

再次刷新看到少了个 data 属性,这里自己手动加上即可

接着运行就变成了这个错误

还是同样与原文件做对比即可。找到原文件的定义地方,然后全部扣出来他们的定义。

我这里是将整个大函数都扣出来,然后自调用来返回上面所需要的对象,这样封装可以避免很多变量的冲突。

再次刷新,错误就到了另外一个地方了。

也是一个函数,对比原文,很容易找到函数,直接扣出

继续保存文件刷新,错误也变了

对比原文件,知道这个是搜索的 url,这里我们直接赋值即可,可以在我们调用函数的时候传这个参数。

再次刷新,还是这些对象的data属性的问题

也是和上面的一样,看原文是什么值,直接赋值即可。

然后到了这个错误

还是比较原文,找出函数定义,并扣出来,就不多说了。

接着就是到这里的错误了。

这个错误比较麻烦,不过耐心点来还是可以的,还是来比较原文件中的JS看看那里不一样。

比较这个 Y 对象,发现我们的少了一个data,接着就是找 Y 这个 data 的生成位置了。根据上面的内容,很容易就可以知道定义的位置。

可以知道这个 l() 就是生成 data,可以打断点原文件并刷新就可以看到生成步骤了。

这里需要直接把 l 所在的位置的外部大函数都扣出来,并且自调用返回这个 l 函数即可。

接下来的还是重复之前的步骤,说多了也是废话,相信大家应该能举一反三,如果实在不会的话就多看几遍文章吧,自己动动手,总会有收获的。

写在最后

这个估计是每周一爆最后的一个详细的教程了,以后尽量剪短了,写这么长真的很辛苦,而且没什么人看,我心都碎了,如果这篇文章两天之内没有1000阅读量的话,以后就不会写这么详细了,不过还是会继续写文章的,看得懂的总会看得懂。

END

本文分享自微信公众号 - 日常学python(daily_learn),作者:sergiojune

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 某网站js混淆结构简单分析

    经过测试,他直接扣出来也能跑,不过我们看下他这个奇怪的混淆思路,我们分析然后记下来,方便我们以后写混淆工具的时候作为其中一种方式,为我们所用。

    sergiojune
  • 用Python自动化生成胡歌爱豆日历

    使用的模块为openpyxl,一个能读取和修改Excel电子表格的Pyhton模块。

    sergiojune
  • 突破前端反调试--阻止页面不断debugger

    不知道你们有没有遇到过上图这样,有时候想调试网站,一打开开发者工具立即 debugger ,而且跳过了还是会继续,或者是有时候在调试网页时,突然就给你来一个 d...

    sergiojune
  • 【C语言笔记】时间日期函数

    time.h是C/C++中的日期和时间头文件。用于需要时间方面的函数。下面分享time.h头文件中几个常用函数的用法:

    正念君
  • SAP CRM configuration product在UI上的显示逻辑

    大家可能会问: 为什么QD3上和AG3的代码一样,但是QD3根本没有生成这个14*14的gif?

    Jerry Wang
  • PHP加密解密的解析

    神无月
  • 【STM32F429开发板用户手册】第16章 STM32F429必备的HAL库API(重要)

    本章教程为大家讲解制作一个STM32F4的例子所需的最基本API函数,对于一些常用的API函数,一定要熟练掌握这些函数都是实现了什么功能,不常用的函数有个了解即...

    armfly
  • 掌握这五大技能,你也可以去应聘数据分析师

    数据分析的目的是把隐没在一大批看来杂乱无章的数据中的信息集中、萃取和提炼出来,以找出所研究对象的内在规律。几年前, 数据分析还是一个比较鲜见的职业,而今天,无论...

    陆勤_数据人网
  • 吴恩达机器学习笔记-1

    这个系列教程大名鼎鼎,之前我都是用到啥就瞎试一通;最近花了两个周,认认真真把这些基础知识重新学了一遍;做个笔记; 苏老泉二十七始发愤,我这比他还落后;不过求知的...

    happy123.me
  • BROAD开发的TCGA分析平台,强大的下载功能

    TCGA是研究肿瘤相关机制的重要资源。在线数据库更新改版都比较快,使用时需要参照最新的线上数据教程。不过癌症相关的数据库操作起来也都比较类似,输入一个或多个关注...

    生信宝典

扫码关注云+社区

领取腾讯云代金券