首页 > 其他分享 >【1.0】Js逆向补充之Js混淆

【1.0】Js逆向补充之Js混淆

时间:2023-10-16 22:24:04浏览次数:36  
标签:逆向 1.0 log 混淆 代码 JavaScript Js var console

【一】什么是Js混淆

  • JavaScript 混淆是一种将 JavaScript 代码进行某种处理的方式,目的是使代码难以被阅读和理解。
    • why do that?
  • JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看
    • 如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制你的劳动成果
    • 所以可以做的就是让代码变得更加的难以阅读,他人难以复制你的成果,实现“加密”的目的。
  • 混淆的方法可以包括改变变量名、添加无意义的代码、删除空格和注释等。
    • 混淆后的代码仍然可以正常运行,但是对于未经授权的人来说难以理解和维护。

【二】Js混淆的几种方式

【1】变量重命名

  • 变量重命名是 JavaScript 代码混淆中最简单且最常用的方法之一。
  • 这种方法的基本思想是将所有可能包含敏感信息的变量重命名为无意义的字符串。
  • 例如,将 username 替换为 a,将 password 替换为 b
  • 将变量名替换为无意义的字符串或者短字符,使得人类阅读难度大大增加。

(1)没有代码混淆

var username = "user123";
var password = "pass456";
function login(user, pass) {  
	if (user === username && pass === password) {
  	console.log("Login successful!");  
  } else {    
    console.log("Login failed!");  
  }}
login(username, password);

(2)使用变量名混淆进行代码混淆

var a = "user123";
var b = "pass456";
function c(d, e) {  
	if (d === a && e === b) {    
    console.log("Login successful!");  
  } else {    
    console.log("Login failed!");  
  }}
c(a, b);

【2】函数名混淆

  • 函数名混淆是另一种常用的 JavaScript 代码混淆技术。
  • 它的基本思想是将所有函数名替换为随机的、无意义的字符串,从而使代码更难被理解和调试。

(1)没有代码混淆

function add(x, y) {  
  return x + y;
}
console.log(add(2, 3));

(2)使用函数名混淆进行代码混淆

var a = function(b, c) {  
  			return b + c;
			}
console.log(a(2, 3));
  • 这种本质还是和上面介绍的变量重命名一样。

【3】压缩代码

  • 压缩是另一种常见的JavaScript代码混淆技术。
  • 通过使用各种压缩算法,可以将JavaScript代码文件缩小到原始大小的一半以下。
  • 虽然这样的代码难以阅读,但对于需要快速加载和运行的Web应用程序来说非常有用。

(1)原始代码

function calculateSum(num1, num2) {  
	var sum = num1 + num2;  
  return sum;
}
var result = calculateSum(3, 4);
console.log(result);

(2)压缩代码

function calculateSum(a,b){return a+b}console.log(calculateSum(3,4));

【4】代码打乱 / JS 控制流混淆

  • JS 控制流混淆是一种消除JavaScript代码的可预测性的技术,通过使用控制流混淆算法,改变程序结构来防止代码被轻易地理解和分析的技术。
  • 简单来说,就是通过修改代码中的控制流语句(如 if、while 等)的顺序、嵌套、去除等方式来增加代码的复杂性,从而使得代码难以被反编译、破解或者逆向工程攻击。

(1)原始代码

var a = 1;
var b = 0;

if (a === 1) {  
  	b = 3;  
  } else {  
  	b = 4;
  }

//结果:a=1,b=3
  • 这段代码可以通过控制流混淆的方式进行优化。
  • 例如,可以将 if 块内部的语句交错、嵌套,增加运算符的数量,达到混淆的效果

(2)控制流混淆

var a = 1;
var b = 0;
if (!(a !== 1)) {  
  if (!(![])) b = 3;
} else {  
  if (!(!{})) b = 4;
}
//结果:a=1,b=3

标签:逆向,1.0,log,混淆,代码,JavaScript,Js,var,console
From: https://www.cnblogs.com/dream-ze/p/17768526.html

相关文章

  • 【2.0】Js逆向补充之Ob混淆
    【一】什么是Ob混淆OB混淆是指将JavaScript代码中的变量名、函数名、字符串等替换为无意义的字符串,从而增加代码的保护性和防止代码的逆向分析。此外,它还可以在代码中添加死代码、无用的函数等,增加代码的复杂度和难以理解性,从而增加代码的保密性。官网:https://obfuscato......
  • JS 数字类型的加减乘除, 四舍五入保持精度
    Number.prototype.toFixed=function(d=0){ letchangeNum=this+''//把数字转为字符串 if(changeNum.indexOf('-')!=-1){//判断是否是负数 changeNum=Math.abs(Number(changeNum))} changeNum=(Math.round(Number(changeNum)*Math.......
  • Nest.js Controller 解析:探索路由和请求处理的强大功能
    Controller 它主要是负责特定路由请求处理并将响应结果返回给客户端。每个控制器它会有多个路由,不同路由对应不同的业务请求处理。在Nest 中,创建一个控制器,应该使用类和装饰器,装饰器会使类相关联的数据的关联起来,将请求绑定到相应的控制器。可以使用Nest-cli提供的......
  • .net 6.0 返回json时中文编码处理
    近期由于自己搭建.net6.0的框架在返回前台json是遇到下面这个问题,返回的json被编码了所以特此在这记录一下 编码前是这样的{"code":-1,"msg":"\u9A8C\u8BC1\u7801\u9519\u8BEF\uFF01"}处理完正常{"code":-1,"msg":"验证码错误!"}在Program中添加下面代码即可//返......
  • js 函数如何实现策略模式与状态模式
    前言有关设计模式的学习资料中,大部分都是以java语言实现的,毕竟java作为老牌面向对象的语言最能说明设计模式的核心概念,所以js的相关设计模式的学习资料也大多使用class类实现,本文记录下js使用函数实现策略模式和状态模式设计模式的方式,更有助于理解策略模式和状态模式......
  • JS实现导出Excel的五种方法详解
    <!DOCTYPEhtml><html><headlang="en"><metacharset="UTF-8"><title>html表格导出道</title><scriptlanguage="JavaScript"type="text/javascript">//第一种方法function......
  • Python爬虫:抖音 JS XB逆向解析
    哈喽兄弟们,抖音现在有JS加密,以前的方法爬不了饿了,今天来实现一下某音短视频的JS逆向解析。知识点动态数据抓包`在这里插入代码片`requests发送请求X-Bogus 参数逆向环境模块python 3.8               运行代码pycharm 2022.3           辅......
  • 2023年10月最新全国省市区县和乡镇街道行政区划矢量边界坐标经纬度地图数据 shp geojs
    发现个可以免费下载全国 geojson 数据的网站,推荐一下。支持全国、省级、市级、区/县级、街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3、Echarts等geojson数据下载地址:https://geojson.hxkj.vip该项目github地址:https://github.com/TangSY/echarts-m......
  • JS 实现模拟键盘事件
    //获取事件需要绑定的节点varinp=document.getElementById('id')//创建初始化event事件varevent=newKeyboardEvent("keyup",{which:13,keyCode:13,key:'Enter',code:'Enter'});//执行inp.dispatchEvent(event) 参考:https://develo......
  • 【京东开源项目】微前端框架MicroApp 1.0正式发布
    介绍MicroApp是由京东前端团队推出的一款微前端框架,它从组件化的思维,基于类WebComponent进行微前端的渲染,旨在降低上手难度、提升工作效率。MicroApp无关技术栈,也不和业务绑定,可以用于任何前端框架。源码地址:https://github.com/micro-zoe/micro-app官网地址:https://micro-......