前段时间尝试对某音的 PC 端进行了逆向,目前已经全部逆向出来了,在这里总结下一些调试技巧和总结。

本文不会涉及任何的详细代码,仅仅是作为技术来讨论。

一、加密分析

在这里以账户下的视频列表为例,可以看到,在 dy 中,加密的 JS 是 webmssdk.js,其中最主要的加密参数有以下两个

在 Postman 中进行测试,发现这两个参数缺一不可,所以逆向过程就是对这两个参数进行分析。

_signature 是由两部分组成,一部分是由 X-Bogus 生成,记为 a。一部分则是根据后端的一个接口动态下发数据,进行加密拼接在 a 后面,然后再根据(a + b) 一起生成一个 c,再截取拼接在(a + b)之后。

所以 _signature = a + b + 截取后的 c

整体上逆向难度比较大,如果感兴趣的可以尝试去分析下,本文就不详细说了。

二、调试技巧

1、日志分析

在 chrome 中,如果有一段代码比较难以分析,可以通过插桩分析,具体就是打「日志」

一般情况下,通过日志的分析,可以看到代码的运行情况,然后再根据代码的运行日志,找出可疑点,进行「条件断点」,一步一步调试基本上就可以找出其中的算法。

其中可以通过 v_jstoools 进行「仅变量压缩」,然后得到一份比较容易看的源代码。

2、常见算法

2.1)MD5

其中如果遇到一些 32 位长度的字符串,那么很可能是 MD5 加密算法得到的,因此对这一类的数据必须要重视起来,其中可以多尝试,还有一种可能会「加盐」处理,所以遇到 32 或者 16 位字符串,可以多次验证。

2.2)Base64

如果一个数据是由 Base64 编码得到的,那么在代码中一定会出现的一个字符串是 “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”,如果出现了这个字符串,就很可能是 Base64 编码处理了

2.3)进制处理

常见的进制处理是 16 转 10 进制,或者是 10 转 16 进制,对这一部分数据一定要敏感。如果发现有一些可疑的数据转换,可以尝试看看是不是做了进制处理

三、Chrome 调试技巧

善用堆栈分析,有很多的逻辑处理,都是可以通过堆栈进行逆推出来的,如果遇到不知道的逻辑,尝试看下堆栈会有一定的帮助。

XHR 的提取断点也可以多尝试下,可以直接定位到参数生成的地方,非常的方便

JavaScript 逆向调试技巧相关推荐

  1. js经验分享 JavaScript反调试技巧

    在此之前,我一直都在研究JavaScript相关的反调试技巧.但是当我在网上搜索相关资料时,我发现网上并没有多少关于这方面的文章,而且就算有也是非常不完整的那种.所以在这篇文章中,我打算跟大家总结一下 ...

  2. JavaScript 反调试技巧

    (点击上方公众号,可快速关注) 英文: x-c3ll   译文:FreeBuf.COM www.freebuf.com/articles/system/163579.html 写在前面的话 在此之前, ...

  3. JavaScript 逆向调试常用技巧

    1. 断点调试 接下来介绍一个非常重要的功能 -- 断点调试.在调试代码的时候,我们可以在需要的位置上打断点,当对应事件触发时,浏览器就会自动停在断点的位置等待调试,此时我们可以选择单步调试,在面板中 ...

  4. JavaScript反调试技巧

    一.函数重定义 这是一种最基本也是最常用的代码反调试技术了.在JavaScript中,我们可以对用于收集信息的函数进行重定义.比如说,console.log()函数可以用来收集函数和变量等信息,并将其 ...

  5. JavaScript 断点调试技巧

    大家好,我是若川.最近组织了源码共度活动:1个月,200+人,一起读了4周源码,参与的小伙伴都表示收获很大.如果感兴趣可以点击链接扫码加我微信 ruochuan12.之前推荐过很多次调试文章,说明调试 ...

  6. JavaScript逆向调试记 —— defcon threefactooorx writeup

    defcon 29就这一道Web题目,说实话也没学到啥东西,唯一学到的就是勿钻牛角尖,及时调整策略. 此题严格来说算一道逆向题,只不过逆向的目标是混淆过JavaScript,我方法就是硬逆,等过几天看 ...

  7. JavaScript语言调试技巧

    1. 使用alert()语句进行调试 当不能定位程序发生错误引发的异常时,可以采用代码跟踪方式查找错误,这时可以将alert()语句放在程序的不同位置,用它来显示程序中的变量及函数返回值等. < ...

  8. OllyDbg笔记-软件逆向调试技巧

    在某些收费软件中,有些是通过注册表,来判断是不是使用到期,或者次数到了. OllyDBG从原理上来区分,有两种不同的断点:软件断点和硬件断点. 软件断点就是常说的F12. 而硬件断点它们只用于调试:用 ...

  9. Javascript调试技巧整理

    整理一下网上看到的实用调试技巧! 1. 不要使用alert 首先,alert只能打印出字符串,如果打印的对象不是String,则会调用toString()方法将该对象转成字符串(比如转成[object ...

最新文章

  1. C# 调用Java接口
  2. 网易智慧企业 Node.js 实践(2)| 平滑发布和前端代码
  3. lock字段mysql_MySQL的lock tables和unlock tables的用法(转载)
  4. mpi4py linux例子,python-3.x – mpi4py中的共享内存
  5. Manjaro下显卡相关的命令搜集
  6. mysql后天命令查下显示_MySQL命令
  7. Struts2.3使用Sitemesh如何配置web.xml?
  8. js获取chrome浏览器版本信息
  9. 三菱5uplc伺服电机指令_实例 | PLC触摸屏控制伺服电机程序设计
  10. 尔雅网课鼠标移出停止播放解决办法
  11. 今天,我们能否见证小米的伟大时刻——以专利为视角的创新能力分析
  12. 解决超星网课问题之不能查询后台观看数据和不能观看超时被锁的课程
  13. IOS-objectiveC【语法】修饰符 static extern const
  14. PSP: PMP格式视频制作教程
  15. android实战:密码箱三
  16. 孔子做人精要,看完启发很多
  17. [信息收录] attiny 85
  18. 日常工作记录---在虚拟机中进行slam建图
  19. 第十二天-函数名 迭代器
  20. Network Switching Software Platform Guide学习笔记

热门文章

  1. 机器学习框架知识(MF)
  2. php 保留两位小数 不四舍五入
  3. 电脑视频文件太大怎么压缩?电脑压缩视频大小
  4. 孩子算题用计算机,让孩子做计算题,跟计算器一样快
  5. 长篇小说《太阳正在升起》:对中国农民的“复调”描摹
  6. 【网络篇】第十八篇——IP协议相关技术
  7. 利用Python制作一个发红包的小游戏
  8. linux c pci bar0读写,解决部分linux发行版内核加载时出现 pci 0000:01:00.0: BAR 6: no pa...
  9. MANSCAPED™与悉尼雄鸡队延长合作关系,作为其官方腰部以下护理合作伙伴共同开启第二个赛季
  10. 写一个程序从键盘输入两个整数,然后显示输出第1个数除以第2个数的结果。