首页 > 其他分享 >JS逆向基础

JS逆向基础

时间:2023-05-10 23:33:18浏览次数:38  
标签:逆向 加密 debugger 16 Base64 基础 JS 断点

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.暴力禁用法:

直接禁用所有断点,这样其实也无法调试了,不推荐。

image

点击“停用断点”,所有断点都不生效。

2.利用条件断点

image

在debugger处打上条件断点,置为false,debugger就不执行了

3.中间人工具
  • 利用fidder拦截并改写含有debugger语句的js文件
  • 浏览器自带的Overrides本地覆盖改写JS文件等方式
4.改写函数法

置空含有debugger语句的函数:

image

控制台进行变量覆盖,重新声明一下函数,直接置空。缺点是刷新页面就失效

还有另外一种方式,直接重置构造器:

Function.prototype.constructor = function(){}
5.无限Debugger

一打开F12就无限debugger,这时无法调试其他代码,可以通过call stack调用栈层层找到最开始的调用者:

image

虽然是加密过的,不过不影响,直接重写函数:

image

这时debugger已经失效了。

小提示:一般无限debugger都会配合定时器无限复活,把setInterval干掉就行。

标签:逆向,加密,debugger,16,Base64,基础,JS,断点
From: https://www.cnblogs.com/suanyunyan/p/17389712.html

相关文章

  • commonjs
    Commonjs的缺点模块加载器由Node.js提供,依赖了Node.js本身的功能实现,比如文件系统,如果CommonJS模块直接放到浏览器中是无法执行的。当然,业界也产生了 browserify 这种打包工具来支持打包CommonJS模块,从而顺利在浏览器中执行,相当于社区实现了一个第三方的loader。C......
  • js基础---js操作dom元素节点的方法
    replaceWith():使用括号内元素替换当前元素remove():删除当前元素解决点击a标签不跳转页面的方法......
  • python基础学习-面向对象
     Python-Core-50-Courses/第17课:面向对象编程入门.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)Python-Core-50-Courses/第18课:面向对象编程进阶.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)......
  • 计算机网络基础
    TCP/IP四层协议第一层:应用层域名系统DNS、万维网HTTP协议、电子邮件SMTP第二层:运输层TCP/UDP:传输控制协议/用户数据协议第三层:网络层IP协议第四层:数据链路层 IP协议网际协议IP数据包中包含发送它主机的IP地址(源地址)和接收它主机的IP地址(目的地址)特点:不可靠、无......
  • 008 python get请求后得到的json字符串解析为pythn字典
    importjsonimportrequests#r=requests.get('https://www.baidu.com')#最基本的不带参数的get请求response=requests.get(url='http://xxx.xxx.xxx.cn:8120/api/Product/GetProductInfoList',\params={'packageNo'......
  • python基础学习-if-while-for-input-print
    """字符串格式化:方式2:f“{变量/表达式}{变量/表达式}”不理会类型,不做精度控制方式1:”%占位“%(变量/表达式)包括(%d%f%s)%m.nm控制显示位数,n控制精度小数点后几位,四舍五入"""name="家和"age=20print(f"我是{name},我{age}岁了")"""inp......
  • python基础学习-JSON
    """JSON:轻量级数据交互格式本质上是带有特定格式的字符串主要功能:在各种编译语言流通的数据格式,负责不同编译语言之间的数据传递和交互中转数据格式格式:{"name":"admin","age":18}字典或[{"name":"admin","age":18},{"name":"admin",&quo......
  • python基础学习-模块导入
    """一模块导入:[from模块名]import[模块|类|变量|函数|*][as别名]常用:import模块名from模块名import方法|类|变量from模块名import*import模块名as别名from模块名import功能名as别名如果模块中有_all_变量,当使用fromxxximport*导入时,只能......
  • python基础学习-列表
    """数据容器""""""列表:list#字面量[元素1,元素2,元素3]#定义变量变量名称=[元素1,元素2,元素3]#定义空列表变量名称=[]变量名称=list()#列表可以存储多个数据,且可以为不同的数据类型,支持嵌套my_list=[1,[2,3],4]下标索引,从0开始my_list=["it","my",34,......
  • python基础学习-序列-切片
    """序列:连续,有序,可使用下标索引的数据容器列表,元组,字符串切片:序列:[起始下标:结束下标:步长]起始留空,从0,结束留空,截至到尾,不含结束下标步长为1,一个个取,可省步长为2,跳一个元素取步长为n,跳n-1个元素取取最后一个元素,下标为-1element=my_list[-1]等同于序列反转result=my_l......