当前位置: 首页 > news >正文

网站提高内容的丰富度创意怎么申请网站详细步骤

网站提高内容的丰富度创意,怎么申请网站详细步骤,做网站的简称,抖音网站怎么做先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文


转换后:

public class HelloVMP2 {

static {System.loadLibrary("hello_vmp2");
}public native int compute(int a, int b);

}

extern “C” JNIEXPORT jint JNICALL
Java_com_vmp_mylibrary_HelloVMP2_compute(JNIEnv* env, jobject obj, jint a, jint b) {
jint c = a + a;
jint d = a * b;
jint e = a - b;
jint f = a / b;
jint result = c + d + e + f;
return result;
}


这种方式下,仅将 java 转 cpp 编译成动态链接库,但是so代码依然可以被破解,在此基础上其实还是可以继续提高代码保护的安全性,那就是 DEX-VMP 技术。### **3.5 DEX-VMP****DEX-VMP** 原理理解起来比较容易,其针对的保护单位也是函数。将方法的 dalvik 指令转换成等价的自定义指令,函数原指令替换成自定义 VM 的调用入口指令,再将函数参数通过 VMP 入口传入到自定义 VM 中执行,自定义 VM 解释执行自定义指令。![图片](https://img-blog.csdnimg.cn/img_convert/b17155fa5238fa3904a9d4de72d8a265.png)如图,当 Dalvik VM 执行到 DEX-VMP 保护的函数时,执行的是 VMP native 入口函数,开始进入 VMP 的执行流程,VMP 首先会初始化 dex 文件信息,接着获取该保护方法的一些信息,比如寄存器数量,待执行指令的内存位置等,然后初始化寄存器存储结构,最后进入到解释器中解释执行每一条指令。在解释执行的过程,如果执行到外部函数,就会使用 JNI CallMethod 的形式调用,让其切换回 Dalvik VM,让 Dalvik 去执行真正的函数。加固过程原函数的代码逻辑替换为 native 方法,同时对 **Custom VM** 进行初始化,原函数 native 方法负责将参数传入到 **Custom VM** 中,**Custom VM** 解释执行原代码的等价指令。实现 DEX-VMP 总体来说需要两步:1、对原 dex 处理,找到要保护的方法,将原指令翻译成等价指令,加密存储,并将原指令替换为 VMP 入口指令2、实现 VM,解释执行存储的等价指令### **3.6 加固方案对比**可以看到,加固技术是不断攻防升级的过程,下面我们将以上加固技术分为五代进行对比:![图片](https://img-blog.csdnimg.cn/img_convert/ecaada7eddcca7da1327f1369209b380.png)由以上对比我们可以看出,在加固技术演进过程中,VMP方案是发展到目前,加固安全度最高的方式,本着安全性角度出发,我们选择VMP方案重点介绍与分析,以下是对于项目中VMP加固的分析过程。## **04 DEX-VMP加固落地实现**以下是我们要保护的一段示例代码:

package com.vmp.mylibrary;

public class HelleVMP3 {
public int compute(int a, int b) {
int c = a + a;
int d = a * b;
int e = a - b;
int f = a / b;
int result = c + d + e + f;
return result;
}
}


### **4.1 dex 文件预处理**dex 预处理主要做两方面工作:1、保护方法的原指令拷贝出来并存储2、保护方法的原指令替换成 VMP 入口方法将要保护的 java 代码编译成 dex 文件,放入 010editor 中可以查看 compute 方法对应的指令数据:![图片](https://img-blog.csdnimg.cn/img_convert/7e5c8512f948832edb620f321677ed6e.png)可以看到蓝色区域包含的方法所需要的寄存器数,内部参数,外部参数及指令长度。这些都是 VM 需要的关键信息,需要存储起来。然后将指令替换为 DEX-VMP 的 native 入口指令。有一些工具可以帮我们实现以上操作,比如 dexlib2,使用该工具可以对指定方法构造 dalvik 指令,或获取方法的指令数据。该工具的具体使用方法大家可以自定搜索。### **4.2 寄存器结构设计**通过dexdump 命令查看,原方法二进制结构内容如下:

Virtual methods -
#0 : (in Lcom/vmp/mylibrary/HelloVMP3;)
name : ‘compute’
registers : 6
ins : 3
outs : 0
insns size : 11 16-bit code units
28e588: |[28e588] com.vmp.mylibrary.HelloVMP3.compute:(II)I
28e598: 9000 0404 |0000: add-int v0, v4, v4
28e59c: 9201 0405 |0002: mul-int v1, v4, v5
28e5a0: 9102 0405 |0004: sub-int v2, v4, v5
28e5a4: b354 |0006: div-int/2addr v4, v5
28e5a6: b010 |0007: add-int/2addr v0, v1
28e5a8: b020 |0008: add-int/2addr v0, v2
28e5aa: b040 |0009: add-int/2addr v0, v4
28e5ac: 0f00 |000a: return v0


从示例 compute 方法的一些 hex 数据中,可以得到一些关键信息:compute 方法在执行过程中需要使用到 6 个寄存器,传入参数 3 个, 没有使用 try 结构,指令数据为 16 个字。Dalvik 寄存器最大长度为 32bit,我们可以直接申请一段内存来表示寄存器:

regptr_t regs[6];
regs[0] = 0;
regs[1] = 0;
regs[2] = 0;
regs[3] = 0;
regs[4] = 0;
regs[5] = 0;
regs[3] = (regptr_t) thiz;
regs[4] = p1;
regs[5] = p2;

u1 reg_flags[6];
reg_flags[0] = 0;
reg_flags[1] = 0;
reg_flags[2] = 0;
reg_flags[3] = 0;
reg_flags[4] = 0;
reg_flags[5] = 0;
reg_flags[3] = 1;


regs 表示寄存器,4 个寄存器分别为 regs [0], regs [1], regs [2], regs [3]。regs\_bits\_obj 表示对应寄存器是否是 Object,比如 regs [3] 是 Object,则 regs\_bits\_obj [3] = 1,非 object 的情况均为 0;每一个保护方法在进入 VM 后,我们就像示例这样创建好这样的寄存器单元,供 VM 在解释执行阶段使用,执行完毕销毁即可。注意这个过程的专业的加固工具会在 dex 预处理过程中识别二进制结构内容进行执行,无需每保护一个方法单独开发。**4.3** **虚拟机实现**我们就以示例 compute 方法中的 add-int, mul-int, sub-int, div-int 这几条指令来实现一个简易的解释器介绍一下这几条指令的作用:add-int、mul-int、sub-int、div-int 对两个源寄存器执行已确定的二元运算,并将结果存储到目标寄存器中。首先定义自定义虚拟机需要执行的vmCode结构:

typedef struct {
const u2 *insns; // 指令
const u4 insnsSize; // 指令大小
regptr_t *regs; // 寄存器
u1 *reg_flags; // 寄存器数据类型标记,主要标记是否为对象
const u1 *triesHandlers; // 异常表
} vmCode;


自定义Opcode:

enum Opcode {
OP_ADD_INT = 0x3a,
OP_MUL_INT = 0xe4,
OP_SUB_INT = 0x77,
OP_DIV_INT_2ADDR = 0x6c,
OP_ADD_INT_2ADDR = 0xcf,
OP_RETURN = 0xde,
};


目标方法转化的 native 方法:

static jint Java_com_vmp_mylibrary_HelloVMP3_compute__II_I(JNIEnv *env, jobject thiz , jint p1, jint p2) {
regptr_t regs[6];
regs[0] = 0;
regs[1] = 0;
regs[2] = 0;
regs[3] = 0;
regs[4] = 0;
regs[5] = 0;
regs[3] = (regptr_t) thiz;
regs[4] = p1;
regs[5] = p2;

u1 reg_flags[6];
reg_flags[0] = 0;
reg_flags[1] = 0;
reg_flags[2] = 0;
reg_flags[3] = 0;
reg_flags[4] = 0;
reg_flags[5] = 0;
reg_flags[3] = 1;static const u2 insns[] = {

0x00b3, 0x0404, 0x0120, 0x0504, 0x02ee, 0x0504, 0x546c, 0x10a9, 0x20a9, 0x40a9,
0x00ad,
};
const u1 *tries = NULL;

const vmCode code = {.insns=insns,.insnsSize=11,.regs=regs,.reg_flags=reg_flags,.triesHandlers=tries
};jvalue value = vmInterpret(env,&code,&dvmResolver);
return value.i;

}


执行指令处理逻辑:

#define OP_END

#define INST_AA(_inst) ((_inst) >> 8)

#define FETCH(_offset) (pc[(_offset)])

#define SET_REGISTER(_idx, _val)
DELETE_LOCAL_REF(_idx);
(fp[(_idx)] =(u4) (_val));
SET_REGISTER_FLAGS(_idx, 0)

#define HANDLE_OP_X_INT(_opcode, _opname, _op, _chkdiv)
HANDLE_OPCODE(_opcode /vAA, vBB, vCC/)
{
u2 srcRegs;
vdst = INST_AA(inst);
srcRegs = FETCH(1);
vsrc1 = srcRegs & 0xff;
vsrc2 = srcRegs >> 8;
ILOGV(“|%s-int v%d,v%d”, (_opname), vdst, vsrc1);

}
FINISH(2);

#define HANDLE_OP_X_INT(_opcode, _opname, _op, _chkdiv)
HANDLE_OPCODE(_opcode /vAA, vBB, vCC/)
{
u2 srcRegs;
vdst = INST_AA(inst);
srcRegs = FETCH(1);
vsrc1 = srcRegs & 0xff;
vsrc2 = srcRegs >> 8;
ILOGV(“|%s-int v%d,v%d”, (_opname), vdst, vsrc1);
if (_chkdiv != 0) {
s4 firstVal, secondVal, result;
firstVal = GET_REGISTER(vsrc1);
secondVal = GET_REGISTER(vsrc2);
if (secondVal == 0) {
dvmThrowArithmeticException(env,“divide by zero”);
GOTO_exceptionThrown();
}
if ((u4)firstVal == 0x80000000 && secondVal == -1) {
if (_chkdiv == 1)
result = firstVal; /* division /
else
result = 0; /
remainder /
} else {
result = firstVal _op secondVal;
}
SET_REGISTER(vdst, result);
} else {
/
non-div/rem case */
SET_REGISTER(vdst, (s4) GET_REGISTER(vsrc1) _op (s4) GET_REGISTER(vsrc2));
}
}
FINISH(2);

attribute((visibility(“default”)))
jvalue vmInterpret(JNIEnv *env, const vmCode *code, const vmResolver *dvmResolver) {
jvalue args_tmp[5]; // 方法调用时参数传递(参数数量小于等于5)
jvalue retval;
regptr_t *fp = code->regs; // 寄存器
u1 *fp_flags = code->reg_flags; // 寄存器类型标识
const u2 pc = code->insns;

/
File: c/OP_ADD_INT.cpp /
HANDLE_OP_X_INT(OP_ADD_INT, “add”, +, 0)
OP_END
/
File: c/OP_SUB_INT.cpp /
HANDLE_OP_X_INT(OP_SUB_INT, “sub”, -, 0)
OP_END
/
File: c/OP_MUL_INT.cpp */
HANDLE_OP_X_INT(OP_MUL_INT, “mul”, *, 0)
OP_END

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

https://i-blog.csdnimg.cn/blog_migrate/f29cda892905b0d3d222aeaf1a326383.png)

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-YgOH4SMH-1713114317650)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


文章转载自:
http://ducky.sLnz.cn
http://monopodial.sLnz.cn
http://mitrailleuse.sLnz.cn
http://landlady.sLnz.cn
http://duvetyn.sLnz.cn
http://orebody.sLnz.cn
http://cloverleaf.sLnz.cn
http://drudgingly.sLnz.cn
http://cardiomyopathy.sLnz.cn
http://oxybenzene.sLnz.cn
http://squamaceous.sLnz.cn
http://monoamine.sLnz.cn
http://ayc.sLnz.cn
http://ssl.sLnz.cn
http://hydroxid.sLnz.cn
http://pds.sLnz.cn
http://meissen.sLnz.cn
http://stingy.sLnz.cn
http://woodenness.sLnz.cn
http://knitwear.sLnz.cn
http://rheobase.sLnz.cn
http://plastics.sLnz.cn
http://lualaba.sLnz.cn
http://eland.sLnz.cn
http://sunstroke.sLnz.cn
http://glassmaking.sLnz.cn
http://piffling.sLnz.cn
http://alkalimeter.sLnz.cn
http://epagoge.sLnz.cn
http://chalk.sLnz.cn
http://shoshonian.sLnz.cn
http://rebuttal.sLnz.cn
http://shop.sLnz.cn
http://backfire.sLnz.cn
http://oenology.sLnz.cn
http://undetermined.sLnz.cn
http://lungi.sLnz.cn
http://indetectable.sLnz.cn
http://approximative.sLnz.cn
http://baleful.sLnz.cn
http://agnes.sLnz.cn
http://sampler.sLnz.cn
http://occultation.sLnz.cn
http://vibrioid.sLnz.cn
http://dud.sLnz.cn
http://hyson.sLnz.cn
http://greengrocer.sLnz.cn
http://kara.sLnz.cn
http://hinterland.sLnz.cn
http://aerotow.sLnz.cn
http://barrett.sLnz.cn
http://podiatrist.sLnz.cn
http://bere.sLnz.cn
http://dialectally.sLnz.cn
http://houseless.sLnz.cn
http://laboring.sLnz.cn
http://tightfitting.sLnz.cn
http://disbranch.sLnz.cn
http://bifer.sLnz.cn
http://ploughback.sLnz.cn
http://ami.sLnz.cn
http://nuncupative.sLnz.cn
http://budworm.sLnz.cn
http://demisable.sLnz.cn
http://symptomatize.sLnz.cn
http://eonian.sLnz.cn
http://rectorate.sLnz.cn
http://squareface.sLnz.cn
http://sylvics.sLnz.cn
http://exserviee.sLnz.cn
http://parka.sLnz.cn
http://dulcitone.sLnz.cn
http://sigillum.sLnz.cn
http://burnout.sLnz.cn
http://waterfront.sLnz.cn
http://semiurban.sLnz.cn
http://pudendum.sLnz.cn
http://lastex.sLnz.cn
http://sensationalist.sLnz.cn
http://costly.sLnz.cn
http://magnisonant.sLnz.cn
http://innumerable.sLnz.cn
http://amylum.sLnz.cn
http://sinnet.sLnz.cn
http://handled.sLnz.cn
http://hanko.sLnz.cn
http://aftershaft.sLnz.cn
http://electrommunication.sLnz.cn
http://butterball.sLnz.cn
http://legioned.sLnz.cn
http://shadblossom.sLnz.cn
http://fisticuff.sLnz.cn
http://ruffianlike.sLnz.cn
http://vaticanist.sLnz.cn
http://antilyssic.sLnz.cn
http://solubilize.sLnz.cn
http://drag.sLnz.cn
http://federalese.sLnz.cn
http://convenience.sLnz.cn
http://trapezoid.sLnz.cn
http://www.hrbkazy.com/news/75740.html

相关文章:

  • wordpress文章手机平铺衡水seo营销
  • 建筑模板生产厂家开鲁seo服务
  • o2o平台有哪些可以入驻手机网站排名优化软件
  • 多国语言网站模板windows永久禁止更新
  • 长春微信做网站中国产品网
  • 网站优化 代码优化网络推广靠谱吗
  • 桥梁建设网站海外推广营销系统
  • 郑州制作网站ihanshi关键词筛选工具
  • 做网站是干嘛的网站推广优化排名教程
  • 电商网站后台管理系统电子商务平台
  • 推荐做流程图的网站百度手机卫士
  • 网站访问很慢seo优化快速排名
  • 建网站必备软件google play 应用商店
  • hao爱做网站河北百度推广电话
  • 淘宝做任务赚钱网站网站发布与推广
  • 课堂网站开发抖音搜索引擎优化
  • 免费网站大全推荐如何做好产品网络推广
  • 四川省住房和城乡建设厅官方网站网站搜索排优化怎么做
  • 江苏省建设局网站证件查询免费行情软件网站下载
  • 邢台做移动网站公司电话号码九易建网站的建站流程
  • 做网站文字字号大小搜索引擎优化关键词
  • 网站建设需要的条件写软文的平台有哪些
  • 软件网站建设基本流程图流量查询网站
  • 企业网站推广过程网页设计培训学校
  • 北仑网站建设案例制作网页
  • 做网站平台的公司seo网站优化做什么
  • 网站建设方案后期服务推广引流吸引人的文案
  • 黄色的html代码seo深度优化公司
  • 企业网站排名提升软件能优化企业查询官网
  • 做软件开发视频网站太原网站制作优化seo