混淆目的与jsvmp简述

2024-04-27 19:04
文章标签 简述 混淆 目的 jsvmp

本文主要是介绍混淆目的与jsvmp简述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

同步跟值,核心找来源,在断点处看到了要跟的值,向上看.上面也没有定义.是arguments传进来的就一定向上找堆栈.
异步同理,容易跟丢,在凭空产生的位置下断点,然后step调试进异步,看微队列里执行.
特殊跟值技巧:
1.看到了一个含有密文的内容a,是一个构造函数A的实例化对象.通过a的构造函数找到接口.
2.数组 [1937774191, 1226093241, 388252375, 3666478592, 2842636476, 372324522, 3817729613, 2969243214]是SM3.
3.函数名为:hex_md5,直接执行,去跟正常的md5进行对比
4.代码:很有可能是加密库rc4加密的,用rc4对其进行测试
o’toString’;
d0[‘RC4’][‘decrypt’](y, d1, {});
d0[‘enc’][‘Utf8’]‘parse’;
5.axios特征,一般情况大概率找请求拦截器.
6. $.ajax 找jquery beforesend
7. (!function(){*******})(“xxxxxxxxxxxxxx”) 可能是jsvmp a = n() b = n() c= n() 是webpack
8.大数组+数组移位+解密函数 ob或者是类ob的混淆.

混淆的基础与目的:
增加代码的阅读难度和调试难度,增加对抗的强度.
主要方法,把一段代码变得难以理解,用肉眼难以看出.
1.变量名与变量不可视
abcd 混淆 eval(String.fromCharCode(‘xxx’)+ ‘=200’
2.控制流平坦化,调试难度和观看难度会加大.
下列二者是等价的

a = 10;
b = 50;
c = 100;
d = a+b+c;
while (1) {if (_ip === 1) {b = 50;_ip++};if (_ip === 0) {a = 10;_ip++};if (_ip === 3) {d = a + b + c;break;};if (_ip === 2) {c = 100;_ip++};
}

3.花指令,通常指的是增加一些无意义的低耗能运算在逻辑中,增加调试复杂度

a = 10;
b = 50;
e = 212651
c = b * 2 - b;
f = 654165
d = a+b+c+e-f-11;
delete e
delete f

4.死代码,
指不运行的代码,p函数什么用也没有,但是打断点的时候可能会打到无意义的代码

a = 10;
b = 50;
p = function(){
a = 10;
b = 50;
c = 100;
d = a+b+c;
}
c = 100;
d = a+b+c;cdelete d

5.三目表达式干扰
6.代码压缩成一行+格式化检测(toString)

jsvmp,上述方法上下文的顺序没有被干扰 js代码虚拟保护方案.
常见的jsvmp实现方法:自己写了一段代码解释器,用来解释自己的代码,这个自己的代码,可以是密文,也可以是所谓的明文.
执行栈, 寄存器 , 全局变量管.
主要是用自己的一套逻辑来设置.

这篇关于混淆目的与jsvmp简述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941283

相关文章

2024 年高教社杯全国大学生数学建模竞赛题目——2024 年高教社杯全国大学生数学建模竞赛题目的求解

2024 年高教社杯全国大学生数学建模竞赛题目 (请先阅读“ 全国大学生数学建模竞赛论文格式规范 ”) 2024 年高教社杯全国大学生数学建模竞赛题目 随着城市化进程的加快、机动车的快速普及, 以及人们活动范围的不断扩大,城市道 路交通拥堵问题日渐严重,即使在一些非中心城市,道路交通拥堵问题也成为影响地方经 济发展和百姓幸福感的一个“痛点”,是相关部门的棘手难题之一。 考虑一个拥有知名景区

1、简述linux操作系统启动流程

1、简述linux操作系统启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。开机时将ROM中的指令映射到RAM的低地址空间,CPU读取到这些指令,硬件的健康状况进行检查,按照BIOS中设置的启

LLVM IR指令VM混淆分析

未混淆编译  编写一个最简单的测试代码,对 test_add函数用于对两个数相加: int __attribute((__annotate__("vm"))) test_add(int a, int b) {int c = a + b;return c;}int main(void) {int c = test_add(1, 2);return c;} 编译成中间代码:  未加

【Java String】简述String类比较和常量池内存分析

一、引出正题 String 类型对象进行比较时,我们一般使用 equals() 的方式进行值比较,但是有时候可能会出现 == 对象比较的方式。 在使用 == 比较的时候,往往是和String在JVM内存存储结构有关,这也引起了部分同学使用时的错误,那么接下来我们来详细分析一下此问题。 二、举例说明 1、new String("xx")都是在堆上创建字符串对象。当调用 intern() 方

图形API学习工程(0):工程目的环境配置

工程目的 我想要不借助引擎,而直接使用底层图形API(如DirectX和OpenGL等)来生成图像。 我认为这将有利于图形学算法与渲染框架相关的学习,因为: 游戏引擎往往对渲染进行了豪华的封装,而不利于看到图形学算法本质。UE4虽然开放了源代码,但是想要完全掌握渲染方面的代码也需要较高成本。 另外,我想对不止一个主流API进行封装,而是多个图形API进行封装,包括: OpenGLD3D1

公司数字化转型的目的是什么?

不同行业公司,其数字化转型的目的也不一样。下面我列举几个行业,给大家讲讲其数字化转型的真正目的。 制造数字化转型 制造业来说,数字化转型的本质是通过新一代信息技术与制造技术的融合,实现以数据为核心的资源要素变革、以网络化为牵引的生产方式重构、以扁平化为方向的企业形态转型、以平台赋能为导向的业务模式创新;构建全感知、全联接、全场景、全智能的数字工厂,优化产品的研发生产和营销流程,对传统管

读软件设计的要素02概念的目的

1. 要素 1.1. 概念的定义包括名称、目的、状态、操作和操作原则 1.2. 操作原则(operational principle) 1.2.1. 操作原则用于展示如何通过操作实现目的,这是理解概念的关键 1.2.2. 展示如何通过操作的组合实现概念的目的,包含一个或多个典型的使用场景 1.2.3. 操作原则并没有增加任何信息,因为你完全可以从操作规范中推理出任何使用场景 1

手动依赖注入;AutowireCapableBeanFactory简述

概述 spring boot虽然帮我们把bean的依赖注入基本都默认配置好了;但有些时候,业务场景中一些对象实例不在spring生命周期中,但是对象中的属性又需要被spring依赖注入(属性在spring容器管理中); 比如一些servle的filter类,其中的一些属性又需要依赖一些spring的bean 我遇到的情况是这样的,实现FactoryBean接口获取到的自定义bean因为没有参

MQTT.js 简述

MQTT.js 简述 简介 MQTT 是一种轻量级的消息传输协议,常用于物联网(IoT)设备间的通信。mqtt.js 是一个 JavaScript 库,支持在 Node.js 和浏览器中使用,用于通过 MQTT 协议与 MQTT Broker 进行通信。 安装 在 Node.js 中,可以通过以下命令安装: npm install mqtt --save 在浏览器中使用: <s

有关混淆的问题解决

第一部分:(对齐) 简单优化:Zipalign Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在老版本的A