- 博客(1289)
- 资源 (119)
- 收藏
- 关注
转载 android proguard代码混淆,代码保护
一般情况下,Android 的 gradle 中都会默认写着:默认 Proguard 文件:官方自带的混淆规则文件路径:proguard-android.txt。这个默认文件中帮我们声明了许多混淆规则内容,包括:keep 所有继承自 View 的类,keep 所有继承自 Activity 的类,keep 所有 JavascriptInterface、native 方法声明,以及 keep 一些注解了@Keep的内容。
2024-01-17 12:01:03
656
原创 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/.
2021-09-23 10:49:24
1073
转载 Android加壳过程中mprotect调用失败的原因及解决方案
问题原由函数抽取壳是当前最为流行的DEX加壳方式之一,这种加壳方式的主要流程包含两个步骤:一、将DEX中需要保护的函数指令置空(即抽取函数体);二、在应用启动的过程中,HOOK 类的加载过程,比如ClassLinker::LoadMethod函数,然后及时回填指令。笔者在实现抽取壳的过程中遇到了一个问题,即在步骤二回填指令之前,需要先调用mprotect将目标内存设置为“可写”,但在初次尝试过程中一直调用失败,于是有了今天这篇文章。本文探讨的主要内容是mprotect调用失败的根本原因,以及
2021-09-15 15:01:49
1772
原创 C++关于类结构体大小和构造顺序、析构顺序的测试。
#include <iostream>using namespace std;/**1. c++的类中成员若不加修饰符的话,默认是private2. 调用构造函数时,先递归调用最顶级的父类构造函数,再依次到子类的构造函数。3. 调用析构函数时相反,先调用最底层的子类析构函数,再依次到父类的构造函数。4. 空类的sizeof(A)大小为1,多个空类继承后的子类大小也是1 */class A{public: A() { cout<&l..
2021-08-24 22:12:12
406
2
转载 二叉树之前序/中序/后序和层次遍历
#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, ..
2021-08-24 10:20:41
270
原创 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 > .
2021-08-04 18:10:34
232
转载 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是建立在这样.
2021-08-02 17:27:51
4585
1
转载 Tencent soter生物认证原理
https://blog.youkuaiyun.com/peilong1988/article/details/88253704一、分析了下腾讯Soter的原理和开源代码。开源代码:https://github.com/Tencent/soter三级密钥管理(采用的RSA2048密钥)ATTK:设备根密钥,在设备出厂前在TEE中生成,公钥通过安全通道传输到腾讯TAM服务器,私钥存储在RPMBASK:App Secure Key,应用密钥,在应用启动时生成,每个应用生成一个AuthKey:Auth
2021-07-28 17:52:07
929
转载 如何利用 SOTER ,1 个版本内完成指纹支付开发?
转自:https://cloud.tencent.com/developer/article/1005987作者简介 : Henryye,叶轩,来自腾讯微信事业群,主要负责腾讯开源项目TENCENT SOTER(GitHub地址:https://github.com/Tencent/soter, 生物认证平台的开发、维护与运营。提到指纹支付,你会怎么做?假如有一天,产品经理安排你做指纹支付,并且要下版本就上,你会怎么做?如果是产品大哥,就从工位下面抽出一把指甲刀架在他脖子上,让他跪在墙角
2021-07-28 17:49:13
1190
转载 Android Tombstone 分析
转自:https://www.cnblogs.com/CoderTian/p/5980426.html1.什么是tombstone当一个动态库(native 程序)开始执行时,系统会注册一些连接到debuggerd 的signal handlers,当系统 crash 的时候,会保存一个 tombstone 文件到/data/tombstones目录下(Logcat中也会有相应的信息),文件的确就像墓碑一样记录了死亡了的进程的基本信息(例如进程的进程号,线程号),死亡的地址(在哪个地址上发生了 ..
2021-07-28 17:46:45
2670
转载 AndroidQ 锁屏密码验证流程之GateKeeper解析
转自:https://blog.youkuaiyun.com/qq_34211365/article/details/105833847本篇文章分析一下GateKeeper这个模块,官网对GateKeeper的描述如下:GatekeeperGatekeeper 子系统会在可信执行环境 (TEE) 中执行设备解锁图案/密码身份验证。Gatekeeper 会使用由硬件支持的密钥通过 HMAC 注册和验证密码。此外,Gatekeeper 会限制连续失败的验证尝试次数,并且必须根据指定的超时和指定的连续失败尝试次数拒
2021-07-27 23:42:14
1973
转载 什么是可信计算?
阿里妹导读:可信计算(TrustedComputing,简称TC)是一项由TCG(可信计算组)推动和开发的技术。可信的核心目标之一是保证系统和应用的完整性,从而确定系统或软件运行在设计目标期望的可信状态。可信和安全是相辅相成的,可信是安全的基础,了解可信才能更好地了解安全,才能为构建更稳固的安全体系固本强基。一、什么是可信计算可信并不等同于安全,但它是安全的基础,因为安全方案、策略只有运行在未被篡改的环境下才能进一步确保安全目的。通过保证系统和应用的完整性,可以确保使用正确的软件栈,并在软件栈受到攻
2021-06-18 15:54:13
4323
1
转载 动态规划算法
读完本文,你可以去力扣拿下如下题目:509.斐波那契数322.零钱兑换-----------这篇文章是我们号半年前一篇 200 多赞赏的成名之作「动态规划详解」的进阶版。由于账号迁移的原因,旧文无法被搜索到,所以我润色了本文,并添加了更多干货内容,希望本文成为解决动态规划的一部「指导方针」。动态规划问题(Dynamic Programming)应该是很多读者头疼的,不过这类问题也是最具有技巧性,最有意思的。本书使用了整整一个章节专门来写这个算法,动态规划的重要性也可见一斑。刷题刷多了就会发现,算
2021-06-08 17:39:05
370
转载 GCC 安全编译选项
https://gohalo.me/post/program-c-gcc-security-options.html操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,例如 ASLR、NX 等等,这里简单介绍一些常见的使用项。简介操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,例如 NX ASLR PIE CANARY FORTIFY RELRO 等手段,存在 NX 的话就不能直接执行栈上的数据,存在 ASLR 的话各个系统调用的地址就是随机化的等等。
2021-06-01 17:32:16
3743
转载 调用约定
8086 CPU寄存器均为16位。寄存器名 AX BX CX DX SP BP SI DI DS ES SS CS IP 作用 通用寄存器 栈区段地址寄存器 数据地址寄存器 栈区偏移地址寄存器 段地址寄存器 偏移地址寄存器 内存寻址两个寄存器操作只能相加,不能相减,例如mov ebx,[esi+eax] ; 有效mov ebx,...
2021-05-11 10:34:36
286
原创 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.
2021-05-10 15:51:31
214
原创 数据结构之常用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.
2021-05-08 17:34:09
215
原创 使用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
2021-05-06 18:24:16
478
转载 C++单元测试教程
转自:https://www.jetbrains.com/help/clion/unit-testing-tutorial.html本教程概述了单元测试方法,并讨论了CLion支持的四个框架:Google Test,Boost.Test,Catch2和Doctest。CLion中的单元测试部分将指导您完成将这些框架包含到项目中的过程,并描述CLion提供的可帮助您进行单元测试的工具。单元测试的基础单元测试旨在分别检查源代码的各个单元。此处的单元是可以隔离进行测试的代码的最小部分,例如,自由函.
2021-04-29 17:36:06
8046
转载 证书的有效性管理和验证—CRL及OCSP的异曲同工之妙
转自https://www.cfca.com.cn/20150811/101230759.htmlhttps://www.secpulse.com/archives/113075.html 怎样验证数字证书 数字证书号称是网上的身份证。网上交易者通过交易对象的数字证书对其产生信任,并能够使用和证书绑定的公钥和交易对象通信,这是PKI认证机制的基本宗旨。但是,当网上交易者从交易对象那里直接获取,或通过访问CA证书库等不同途径得到了交易对象的数字证书以后,这张证书不经过验证是不能放心使用的。验
2021-04-29 10:26:55
2843
转载 Android V3 签名方案,使用密钥转轮为签名更新做准备!
Android V3 签名方案,使用密钥转轮为签名更新做准备!https://juejin.im/post/6844903843361210381在将 App 发布到市场之前,很重要的一个步骤就是为 APK 进行签名,大部分时候,这个操作隐藏在了打包的流程中,而不被我们注意到。签名的作用,除了证明 App 的所有权之外,还可以帮助 Android 市场和设备校验 APK 的正确性Android 签名是自证明的,并不会对证书进行 CA 认证。也就是我们可以使用工具自行生成签名证书,只要是一个正
2020-11-12 15:28:36
1595
转载 Android Q动态分区super.img相关初步整理
Android 10上刷机使用了super.img,差分包多了dynamic_partitions_op_list,大致查询了下是新增了动态分区,从编译到生成差分包都做了一些修改,本次先整理大致分析,对这个更新点有初步的认识一、编译方面1.super.img的生成通过编译的log可以看到,super.img的生成makebuild/make/core/Makefile# If BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT is set, super.im..
2020-06-12 17:25:13
13322
4
原创 Memory_Leak_Detection内存泄漏检测工具
https://www.mantidproject.org/Memory_Leak_Detectionhttp://valgrind.org/https://sourceware.org/git/?p=valgrind.githttps://sourceware.org/git/https://archive.codeplex.com/?p=vldhttps://www.codeproject.com/Articles/9815/Visual-Leak-Detector-Enhanced
2020-05-21 19:50:14
4413
转载 dlsym RTLD_DEFAULT和RTLD_NEXT
https://blog.youkuaiyun.com/ustcxiangchun/article/details/6310085https://linux.die.net/man/3/dlsymhttp://man7.org/linux/man-pages/man3/dlsym.3.htmldlsym()函数dlsym()接受dlopen()返回的动态库的“句柄” 和以空字符结尾的符号名称,返回将该符号加载到内存中的地址。如果未找到该符号,则在指定的库中,或在加载该库时由dlopen()自动加载的任何 库
2020-05-16 12:28:33
3643
转载 跟我一起写Makefile
https://seisman.github.io/how-to-write-makefile/index.html目录概述 关于程序的编译和链接 makefile介绍 makefile的规则 一个示例 make是如何工作的 makefile中使用变量 让make自动推导 另类风格的makefiles 清空目标文件的规则 Makefile里有什么?...
2020-05-07 18:54:40
284
转载 IA32寄存器与x86-64寄存器的区别
转自:https://blog.youkuaiyun.com/qq_15514565/article/details/57644132IA32寄存器一个IA32CPU包含一组8个存储32位值的通用寄存器,这些寄存器用来存储整数数据和指针:31-0 15-0 15-8 7-0 使用惯例 %eax %ax %ah %al 调用者保存 %ecx...
2020-04-02 10:47:27
856
转载 openssl RSA密钥格式PKCS1和PKCS8相互转换
RSA私钥格式PKCS1和PKCS8相互转换RSA公钥格式PKCS1和PKCS8相互转换以下转换基于openssl命令的操作;1. openssl 生成pkcs1格式的私钥,密钥长度1024位, (PKCS1)openssl genrsa -out private.pem 1024-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQ...
2020-02-26 18:22:20
1793
转载 java-xx参数介绍及调优总结
功能开关:参数 默认值或限制 说明 参数 默认值 功能 -XX:-AllowUserSignalHandlers 限于Linux和Solaris,默认不启用 允许为java进程安装信号处理器,信号处理参见类:sun.misc.Signal, sun.misc.SignalHandler -XX:+DisableExplicitGC 默认启用...
2019-12-11 16:49:39
5787
1
转载 剖析 Android ART Runtime (2) – dex2oat
在上一篇文章中我们介绍了 Android 4.4 新开发的运行时 ART 项目,其中的一个重要模快是 dex2oat,简单讲就是使用 LLVM 把 dex 文件编译成 oat 文件(Optimized ART?)。下面我们详细研究一下 dex2oat 的功能,以及他是如何被调用的。一、dex2oat 简介dex2oat 顾名思义 dex file to oat file,就是在新旧两种运行...
2019-12-06 16:09:52
1048
转载 android.mk转换为android.bp
转自:https://blog.youkuaiyun.com/csdn66_2016/article/details/80258627https://www.jianshu.com/p/f239e919352aandroid.mk大家都很熟悉了,就是android下编译模块的配置文件,可以理解为android makefile。从android N之后,我们发现好多模块下面没有了android.mk文...
2019-12-04 22:50:59
1265
转载 Android关于Dex拆分(MultiDex)技术详解
转自:https://blog.youkuaiyun.com/jiangwei0910410003/article/details/50799573本文链接:https://blog.youkuaiyun.com/jiangwei0910410003/article/details/50799573一、前言关于Android中的分包技术,已经不是什么新的技术了,网上也有很多解析了,但是他们都是给了理论上的知道和...
2019-11-26 12:22:03
589
转载 android源码编译
转自:https://source.android.google.cn/setup/buildinghttps://github.com/CyanogenMod/androidhttps://developers.google.com/android/images#hammerheadhttps://source.android.google.cn/setup/buildingh...
2019-11-14 15:56:39
351
转载 使用Android Keystore进行加解密
https://www.jianshu.com/p/06775ddf435f国内使用Android Keystore加解密的应该很少吧,搜出来也基本都是Android打包时的Keystore,其实谷歌在很早之前就已经为Android提供了类似IOS的KeyChain功能,私钥存储在trustzone系统中,这个trustzone系统独立于Android系统,能做到私钥安全。具体怎么安全,我们...
2019-11-12 20:43:56
2989
转载 Android Linker 与 SO 加壳技术
https://cloud.tencent.com/developer/article/10713581. 前言Android 系统安全愈发重要,像传统pc安全的可执行文件加固一样,应用加固是Android系统安全中非常重要的一环。目前Android 应用加固可以分为dex加固和Native加固,Native 加固的保护对象为 Native 层的 SO 文件,使用加壳、反调试、混淆、VM...
2019-10-26 15:49:06
618
转载 Android签名攻与防
转自:https://cloud.tencent.com/developer/article/1356482一. Android签名背景Android应用使用应用包文件(.apk文件)的形式分发到设备上,由于这个平台的程序主要是用 Java 编写的,所以这种格式与 Java 包的格式 -- jar(Java Archive)有很多共同点,它用于将代码,资源和元数据(来自可选的META-IN...
2019-10-24 16:13:17
616
转载 linux c下把进程/线程绑定到特定cpu核上运行
https://blog.youkuaiyun.com/guotianqing/article/details/80958281概述现在大家使用的基本上都是多核cpu,一般是4核的。平时应用程序在运行时都是由操作系统管理的。操作系统对应用进程进行调度,使其在不同的核上轮番运行。对于普通的应用,操作系统的默认调度机制是没有问题的。但是,当某个进程需要较高的运行效率时,就有必要考虑将其绑定到单独的核上运...
2019-09-02 19:55:58
1733
转载 Android 中使用 Proguard 混淆 Java 代码
转自:https://blog.rinc.xyz/posts/130808-proguard/容易被反编译是 Java 、C# 这类解释型、托管型语言的通病,为了保障代码安全,通常采取的措施主要有两种: 核心逻辑采用难于被反编译的 native 语言(C / C++)编写,而 C# 通过 DllImport 等方式、Java 通过 JNI 都可调用 native 代码。 对代码...
2019-08-30 16:47:37
285
转载 JNI 引用问题梳理
转自:https://blog.rinc.xyz/posts/151119-jni-reference/最近项目中有个视频文件分块上传的模块,核心逻辑是 C/C++ 实现的,Android 上层调用自然又要写 JNI。其中有个需求是 Native 层上传进度更新时需要回调 Java 代码,这里我用了 C++11 的 Lambda 表达式: std::function<vo...
2019-08-30 16:30:44
541
转载 iOS 引用 C/C++ 项目:交叉编译与 Objective-C++
转自:https://blog.rinc.xyz/posts/170606-objcxx/最近终于有幸参与公司的 iOS 项目,其中有个 C/C++ 写的库需要调用;之前对 Android JNI/NDK 调用 C/C++ 还算熟悉,但 iOS 混编 C/C++ 却是初次接触,各种被虐..上个周末基本都在解决库的编译问题,爱人Amble也耐心帮我查资料、作分析,感动之余,决定把中途...
2019-08-30 16:23:54
3928
sqlite3.36集成加密版_vs2008
2014-04-10
Xtreme ToolkitPro+MFC使用小例子
2014-03-19
ormlite-jdbc demo使用例子。
2015-04-06
基于netbeans+javafx+fxml的基本控件的使用
2014-10-29
java 连接各种数据库大全和实例
2014-07-14
hadoop1.1.2操作例子 包括hbase hive mapreduce相应的jar包
2014-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人