JS逆向基础
简单记录一下JS逆向用到的一些知识。
一、常见的加密算法及特点
- MD5: 加密后有16位和32位,以0-9和小写a-f组成。其中16位的就是截取中间的第9至第24位,判断是否以MD5加密,主要看一下两点:是否符合16位或32位,加密后的结果是否是0-9,A-F。
- AES:对称加密算法,加密和解密用同一个秘钥,密钥长度主要有128位,192位,256位。没法直接通过密文判断是否是AES加密,加密后的结果通过Base64编码,主要可以推断:例如密文长度是否为16的倍数。对于前端来说,可以找到加密源码来判断一下。
- Base64: 准确来说,Base64是一种编码。以a-z,A-Z,0-9和+/=组成。
- RSA: 非对称加密,有公钥和私钥两种秘钥。加密后的结果同样是经过Base64编码的。
- SHA:常见的有SHA1,SHA256,SHA512。组成以0-9和a-f组成。加密后分别为sha1(40位),sha256(64位),sha512(128位)。
二、禁用Debugger的一些方法
主要针对无限Debugger的一些处理方法
1.暴力禁用法:
直接禁用所有断点,这样其实也无法调试了,不推荐。
点击“停用断点”,所有断点都不生效。
2.利用条件断点
在debugger处打上条件断点,置为false,debugger就不执行了
3.中间人工具
- 利用fidder拦截并改写含有debugger语句的js文件
- 浏览器自带的Overrides本地覆盖改写JS文件等方式
4.改写函数法
置空含有debugger语句的函数:
控制台进行变量覆盖,重新声明一下函数,直接置空。缺点是刷新页面就失效
还有另外一种方式,直接重置构造器:
Function.prototype.constructor = function(){}
5.无限Debugger
一打开F12就无限debugger,这时无法调试其他代码,可以通过call stack调用栈层层找到最开始的调用者:
虽然是加密过的,不过不影响,直接重写函数:
这时debugger已经失效了。
小提示:一般无限debugger都会配合定时器无限复活,把setInterval干掉就行。
标签:逆向,加密,debugger,16,Base64,基础,JS,断点 From: https://www.cnblogs.com/suanyunyan/p/17389712.html