李志宽 李志宽
2年前
学到了!软件产品安全性?
背景为了提高开发的软件产品安全性,大部分选择的方案防护方案是,通过用成熟的加固软件进行对自己研发的软件做防护,从而达到对软件搭建一个安全防护墙。加固软件主要做的两件事,对软件中关键代码的保护以及提高对软件逆向反编译的门槛。那么软件安全性防护墙的第一道门那就是反调试。反调试技术又细分为静态反调试和动态反调试。下面就针对window端的进行梳理反调试检测方案。
Wesley13 Wesley13
3年前
Java中对于位运算的优化以及运用与思考
引言随着JDK的发展以及JIT的不断优化,我们很多时候都可以写读起来易读但是看上去性能不高的代码了,编译器会帮我们优化代码。之前大学里面学单片机的时候,由于内存以及处理器性能都极其有限(可能很多时候考虑内存的限制优先于处理器),所以很多时候,利用位运算来节约空间或者提高性能,那么这些优秀的思想,放到目前的Java中,是否还有必要这么做呢?我们逐一思
Wesley13 Wesley13
3年前
ARM与X86架构的对决
CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构,它的设计目的是 CISC要用最少的机器语言指令来完成所需的计算任务。RISC和CISC是设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出
Wesley13 Wesley13
3年前
MySQL数据库(一)编译安装、安装后优化操作及超户忘记数据库密码的解决方法
MySQL的下载地址:http://www.dev.mysql.com/downloads准备工作:卸载rpm方式安装的mysqlserver、mysql      rpmqa|grepmysql若存在,用rpmemysqlservermysqlnodeps命令卸载安装ncursesdevel与cmake包
Wesley13 Wesley13
3年前
C++中二维数组作为函数参数
在平时,我们经常会遇到将整个数组作为函数参数的情况,一维数组的情况,就是用数组名当形参和实参,传递的是数组的首地址。二维数组我们用的也很多,但是总是有各种问题,今天我总结一下有个很重要的一点,字符串“China”在编译器眼里就是一个地址!操作字符串是通过它在内存中的存储单元的首地址进行的,这是字符串的终极本质如果"China",存储在内存中的0
Stella981 Stella981
3年前
OpenCV开发笔记(七十):红胖子带你傻瓜式编译VS2017x64版本的openCV4
若该文为原创文章,未经允许不得转载,经允许后转载请注明原文地址本文章博客地址:https://blog.csdn.net/qq21497936/article/details/107837715(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fqq214
Stella981 Stella981
3年前
React Native基础&入门教程:调试React Native应用的一小步
ReactNative(以下简称RN)为传统前端开发者打开了一扇新的大门。其中,使用浏览器的调试工具去Debug移动端的代码,无疑是最吸引开发人员的特性之一。试想一下,当你在手机屏幕按下一个按钮,处理事件的代码就可以立即在浏览器的调试工具里进行断点调试,而且每当你对代码进行修改,界面便可以完成快速地重载,省去昂长的编译时间,这会是多么提高工作效率。
Wesley13 Wesley13
3年前
C语言面试题大汇总之华为面试题 Eddy整理
1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用"::";局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个
Stella981 Stella981
3年前
Rust编程进阶:035、Rc智能指针介绍
Rc<T,引用计数器,用来记录一个值是否被使用,如果计数为零可清除。适用于堆中数据需要被程序多部分使用,但编译时不能确定谁最后完成。大部分情况下所有权是非常明确的:可以准确的知道哪个变量拥有某个值。然而,有些情况单个值可能会有多个所有者。例如,在图数据结构中,多个边可能指向相同的结点,而这个结点从概念上讲为所有指向它的边所拥有。结点直到没有任何边指
Stella981 Stella981
3年前
GOT段在linux系统中实现代码动态加载的作用和其他段的说明
上一节我们看到,当程序想调用系统函数时,在编译阶段无法确认被调用函数所在的虚拟地址。因此必须有机制让程序在运行过程中,在调用系统API的时候有办法去确定所调用的系统函数对应的入口地址,这就是代码运行时对应动态加载的过程。动态加载,也就是在调用系统函数时再去确认所调用的函数地址的技术需要使用两个段,一个是.plt段,一个是.got.plt段。后者其实是.g