Java异或加解密 /* * Copyright (C) 2017, Megatron King * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/.
Android加壳过程中mprotect调用失败的原因及解决方案 问题原由函数抽取壳是当前最为流行的DEX加壳方式之一,这种加壳方式的主要流程包含两个步骤:一、将DEX中需要保护的函数指令置空(即抽取函数体);二、在应用启动的过程中,HOOK 类的加载过程,比如ClassLinker::LoadMethod函数,然后及时回填指令。笔者在实现抽取壳的过程中遇到了一个问题,即在步骤二回填指令之前,需要先调用mprotect将目标内存设置为“可写”,但在初次尝试过程中一直调用失败,于是有了今天这篇文章。本文探讨的主要内容是mprotect调用失败的根本原因,以及
C++关于类结构体大小和构造顺序、析构顺序的测试。 #include <iostream>using namespace std;/**1. c++的类中成员若不加修饰符的话,默认是private2. 调用构造函数时,先递归调用最顶级的父类构造函数,再依次到子类的构造函数。3. 调用析构函数时相反,先调用最底层的子类析构函数,再依次到父类的构造函数。4. 空类的sizeof(A)大小为1,多个空类继承后的子类大小也是1 */class A{public: A() { cout<&l..
二叉树之前序/中序/后序和层次遍历 #include <iostream>#include <cstring>#include <queue>using namespace std;typedef struct TreeNode{ char data; TreeNode* left; TreeNode* right;} TreeNode;#define STR_SIZE 1024//创建二叉树int createBTNode(TreeNode** BT, ..
c++多线程 #include <iostream>#include <thread>#include <mutex>#if _WIN32#include <Windows.h>#else#include <unistd.h>#endifusing namespace std;mutex mu; //线程互斥对象int totalNum = 20;void thread01(){ while (totalNum > .
ECDH 算法概述(CNG 示例) 转自:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2008/cc488016(v=vs.90)ECDH全称是椭圆曲线迪菲-赫尔曼秘钥交换(Elliptic Curve Diffie–Hellman key Exchange),主要是用来在一个不安全的通道中建立起安全的共有加密资料,一般来说交换的都是私钥,这个密钥一般作为“对称加密”的密钥而被双方在后续数据传输中使用。ECDH是建立在这样.
Tencent soter生物认证原理 https://blog.csdn.net/peilong1988/article/details/88253704一、分析了下腾讯Soter的原理和开源代码。开源代码:https://github.com/Tencent/soter三级密钥管理(采用的RSA2048密钥)ATTK:设备根密钥,在设备出厂前在TEE中生成,公钥通过安全通道传输到腾讯TAM服务器,私钥存储在RPMBASK:App Secure Key,应用密钥,在应用启动时生成,每个应用生成一个AuthKey:Auth
如何利用 SOTER ,1 个版本内完成指纹支付开发? 转自:https://cloud.tencent.com/developer/article/1005987作者简介 : Henryye,叶轩,来自腾讯微信事业群,主要负责腾讯开源项目TENCENT SOTER(GitHub地址:https://github.com/Tencent/soter, 生物认证平台的开发、维护与运营。提到指纹支付,你会怎么做?假如有一天,产品经理安排你做指纹支付,并且要下版本就上,你会怎么做?如果是产品大哥,就从工位下面抽出一把指甲刀架在他脖子上,让他跪在墙角
Android Tombstone 分析 转自:https://www.cnblogs.com/CoderTian/p/5980426.html1.什么是tombstone当一个动态库(native 程序)开始执行时,系统会注册一些连接到debuggerd 的signal handlers,当系统 crash 的时候,会保存一个 tombstone 文件到/data/tombstones目录下(Logcat中也会有相应的信息),文件的确就像墓碑一样记录了死亡了的进程的基本信息(例如进程的进程号,线程号),死亡的地址(在哪个地址上发生了 ..
AndroidQ 锁屏密码验证流程之GateKeeper解析 转自:https://blog.csdn.net/qq_34211365/article/details/105833847本篇文章分析一下GateKeeper这个模块,官网对GateKeeper的描述如下:GatekeeperGatekeeper 子系统会在可信执行环境 (TEE) 中执行设备解锁图案/密码身份验证。Gatekeeper 会使用由硬件支持的密钥通过 HMAC 注册和验证密码。此外,Gatekeeper 会限制连续失败的验证尝试次数,并且必须根据指定的超时和指定的连续失败尝试次数拒
什么是可信计算? 阿里妹导读:可信计算(TrustedComputing,简称TC)是一项由TCG(可信计算组)推动和开发的技术。可信的核心目标之一是保证系统和应用的完整性,从而确定系统或软件运行在设计目标期望的可信状态。可信和安全是相辅相成的,可信是安全的基础,了解可信才能更好地了解安全,才能为构建更稳固的安全体系固本强基。一、什么是可信计算可信并不等同于安全,但它是安全的基础,因为安全方案、策略只有运行在未被篡改的环境下才能进一步确保安全目的。通过保证系统和应用的完整性,可以确保使用正确的软件栈,并在软件栈受到攻
动态规划算法 读完本文,你可以去力扣拿下如下题目:509.斐波那契数322.零钱兑换-----------这篇文章是我们号半年前一篇 200 多赞赏的成名之作「动态规划详解」的进阶版。由于账号迁移的原因,旧文无法被搜索到,所以我润色了本文,并添加了更多干货内容,希望本文成为解决动态规划的一部「指导方针」。动态规划问题(Dynamic Programming)应该是很多读者头疼的,不过这类问题也是最具有技巧性,最有意思的。本书使用了整整一个章节专门来写这个算法,动态规划的重要性也可见一斑。刷题刷多了就会发现,算
GCC 安全编译选项 https://gohalo.me/post/program-c-gcc-security-options.html操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,例如 ASLR、NX 等等,这里简单介绍一些常见的使用项。简介操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,例如 NX ASLR PIE CANARY FORTIFY RELRO 等手段,存在 NX 的话就不能直接执行栈上的数据,存在 ASLR 的话各个系统调用的地址就是随机化的等等。
调用约定 8086 CPU寄存器均为16位。寄存器名 AX BX CX DX SP BP SI DI DS ES SS CS IP 作用 通用寄存器 栈区段地址寄存器 数据地址寄存器 栈区偏移地址寄存器 段地址寄存器 偏移地址寄存器 内存寻址两个寄存器操作只能相加,不能相减,例如mov ebx,[esi+eax] ; 有效mov ebx,...
c++&java之快速排序算法 #include <iostream>#include <time.h>using namespace std;//https://baike.baidu.com/item/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95void Qsort(int arr[], int low, int high){ if (high <= low) return; int i = low; in.
数据结构之常用c语言排序算法 #include <iostream>#include <string.h>using namespace std;#define NUM 16#define MAX 100#define MAX_LINE_NUMBER 16int list[NUM*7]={0};int merge_list[NUM*10]={0};int merge_link[NUM*10]={0};void init();void init_list(int);void out(in.
使用tomcat搭建HTTP文件下载服务器 1. 假设需要下载的文件目录是D:\download(注意这里写了个1,跟后面的名称区分)2. 设置 tomcat 的虚拟目录。在 {tomcat home}\conf\Catalina\localhost 下建一个任意名称(如download.xml),内容如下:<?xml version="1.0" encoding="UTF-8"?><Context path="/download" reloadable="true" docBase="D:\download" cros
C++单元测试教程 转自:https://www.jetbrains.com/help/clion/unit-testing-tutorial.html本教程概述了单元测试方法,并讨论了CLion支持的四个框架:Google Test,Boost.Test,Catch2和Doctest。CLion中的单元测试部分将指导您完成将这些框架包含到项目中的过程,并描述CLion提供的可帮助您进行单元测试的工具。单元测试的基础单元测试旨在分别检查源代码的各个单元。此处的单元是可以隔离进行测试的代码的最小部分,例如,自由函.
证书的有效性管理和验证—CRL及OCSP的异曲同工之妙 转自https://www.cfca.com.cn/20150811/101230759.htmlhttps://www.secpulse.com/archives/113075.html 怎样验证数字证书 数字证书号称是网上的身份证。网上交易者通过交易对象的数字证书对其产生信任,并能够使用和证书绑定的公钥和交易对象通信,这是PKI认证机制的基本宗旨。但是,当网上交易者从交易对象那里直接获取,或通过访问CA证书库等不同途径得到了交易对象的数字证书以后,这张证书不经过验证是不能放心使用的。验