自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rprop

It's not a bug; it's an undocumented feature

原创 WINDOWS+CMAKE+VS2017编译OLLVM并整合到VS2017 NDK

OLLVM全称Obfuscator-LLVM,即基于LLVM框架的源码级别混淆工具,相比机器指令混淆,源码级别混淆无需关心底层指令差异(由编译器生成),因而更具兼容性和拓展性,对程序流程的控制更为全面,同时也易于理论研究的展开。        本文编译的OLLVM来自Github上的开源项目https://github.com/Qrilee/Obfuscator-LLVM,作者博文https:

2017-09-26 19:35:56 50849 4

原创 实现Android ARM64平台下Inline Hook框架

Android阵营新出机型的cpu基本都是64位了,虽然可以向下兼容armeabi-v7a,但是使用32位的so毕竟不能充分发挥64位cpu的潜力,所以以后arm64-v8a用的会越来越多。但是整个安卓生态圈似乎还没有开源发布的ARM64内联HOOK方案,所以自己动手写了个,姑且取名And64InlineHook吧,需要注意的是仍然是Alpha版。        关于Inline Hook的背

2017-09-23 21:00:02 57545 1

原创 【OpenCV3.3】SVM与字符分类示例

SVM,全称Support Vector Machine,即支持向量机,是机器学习中常用的分类器(同样支持向量回归),属监督式学习的一种。        在二值分类中,SVM通过寻找一个 决策最优分类超平面 来尽可能地将两类样本分开(最大分类间隔)并作为分类的判据,以期得到较强的泛化能力,我们所指的训练(train)主要就是寻找这个超平面。如果你看过相关推导,会发现原本复杂的问题被一步步等价,

2017-08-22 14:02:54 11341

原创 【OpenCV3.3】特征值、奇异值分解与图像矩阵重构

在图像处理方面,矩阵分解被广泛用于降维(压缩)、去噪、特征提取、数字水印等,是十分重要的数学工具,其中特征分解(谱分解)和奇异值分解是两种常用方法,本文简单介绍如何在OpenCV中使用它们对图像进行分解,然后重新构造图像。      本文不会阐述两种分解的数学背景知识,但是为了方便读者唤醒记忆,会先贴出(部分)数学定义,详细的介绍和证明建议阅读矩阵理论相关书籍或者参考资料。

2017-08-21 18:11:41 14317

原创 【OpenCV3.3】通过透视变换矫正变形图像

在平面图像处理中,因为镜头角度等原因,容易导致图像出现倾斜、变形等情况,为了方便后续处理我们常常需要进行图像矫正,其中主要技术原理是两种变换类型--仿射变换(Affine Transformation)和透视变换(Perspective Transformation)。        仿射变换是二维坐标间的线性变换, 故而变换后的图像仍然具有原图的一些性质,包括“平直性”以及“平行性”,常用于

2017-08-18 17:13:29 42608 13

原创 【OpenCV3.3】搭建VS2017+Android开发环境

在上一篇 【OpenCV3.3】编译源码并搭建VS2017+Windows开发环境 中我们搭建了OpenCV的Windows开发环境,现在我们来搭建Android的C++开发环境(当前版本直接使用官方提供的SDK)。

2017-08-07 21:36:03 20056 1

原创 【OpenCV3.3】编译源码并搭建VS2017+Windows开发环境

OpenCV 3.3在8月3号正式Release,带来了许多优化改进和新特性,包括备受关注的深度神经网络(DNN)模块被正式引入主仓库,标志着OpenCV对DNN有了更深层次的优化与支持; 支持通过宏ENABLE_CXX11启用对C++ 11特性的支持;默认包含大量SSE4.X和AVX/AVX2指令集优化;内置Intel IPP版本升级至2017.2,官方测试显示有近15%的性能提升...

2017-08-07 16:10:05 33345 22

转载 Microsoft Visual Studio 2017 Supports Intel® AVX-512

Intel® AVX-512提供了32个程序可见的512位宽向量寄存器以及8个专用屏蔽寄存器, 支持的数据宽度是AVX/AVX2的两倍并能和AVX保持完美兼容而不带来性能损失, 是向512位SIMD支持跨出的巨大飞跃。VS 2017 v15.3也宣布增加了对Intel® AVX-512的编程支持,在这篇文章中,对比了未优化的C版本快速排序和使用Intel® AVX-512指令优化的快速排序,后者的性能平均提升了近十倍

2017-07-28 02:13:18 18518

原创 Win10下配置Hyper-V虚拟机通过NAT或桥接方式联网

首先确保为虚拟机启用了Integration Services, 并在虚拟机内安装了相关组件, 否则可能会遇到网卡无法识别的情况.安装方法用CDROM挂载vmguest.iso, 在虚拟机里面打开该盘并找到setup.exe进行安装.附上vmguest.iso下载链接:http://pan.baidu.com/s/1hrDvxlU密码:zxk4和其他虚拟机产品一样, Hyper

2016-04-16 16:31:00 107797 4

原创 VS 2015 Update 2 构建 Android 程序遇到的一些问题

自VS2015起, Visual Studio开始逐渐内置支持跨平台开发, 并且Visual Studio团队还额外发布了一个编译工具集Clang with Microsoft CodeGen, 方便开发人员进行跨平台代码的开发, 该工具集在VS 2015 Update 2时采用的 Clang 版本号是3.7. 与此同时VS的移动开发能力也不再局限于Windows Phone, 而是支持了包括Android, iOS在内的主流平台的应用开发.本文就搭建过程中遇到的一些问题作个小结, 并不定时更新.

2016-04-10 12:38:09 55255 4

原创 VirtualBox+Win10搭建android-x86_64调试环境

完整概述如何在VirtualBox+Windows 10环境下搭建android-x86_64调试环境

2015-05-30 11:15:59 21298

转载 Stroustrup专访:畅想C++17

最近,Bjarne Stroustrup(设计并最初实现C++的作者)公开的一份草案引发了一场激烈讨论,讨论的话题围绕着C++17的设计目标以及可能加入的新特性。据Stroustrup说,C++17将会有以下三个设计目标:改善对大规模可靠软件的支持。支持更高级的并发模型。简化语言核心。针对以上的每个设计目标,Stroustrup列举了可加入C++17的新特性

2015-05-28 15:59:11 14265

原创 cocos2d-x v3.6 使用TMXLayer::getTiles遍历瓦片地图块

this->_map = TMXTiledMap::create(tmxFile); this->_barriers = this->_map->getLayer("barriers"); this->_states->setVisible(false);//如果直接在editor中设置invisible, getLayer会返回nullptr // find auto layerSize

2015-05-08 22:31:01 16706 1

原创 cocos2d-x v3.6 根据png序列图创建animation

之前都是使用TP格式化swf来创建动画,今天遇到了个问题,我拿到的动画序列图是合成好的一张png。没有plist文件。悲催...现在只好自己画区域创建动画。先看看png序列图。我就随便拿一个来用用。(先说明哈,该图是我从一个android游戏里面抽出来的。无侵权之意。)  Texture2D *playerRunTexture = Director::getInstance()

2015-05-04 15:26:46 13901 1

原创 dalvik下替换so简单dump出梆梆加固保护的odex

本文介绍了一种在dalvik虚拟机下简单可行、通过替换so实现的梆梆加固脱壳的方案, 不需要定制ROM、不需要动态调试, 并且由于掌握了代码主动权, 可以进一步深入进行抽离类还原、资源修复等工作。

2015-04-18 12:28:02 17380

原创 通用型C/C++程序性能测试Benchmark的简单实现

在完成一个算法的改进后, 除了人工估算时间复杂度外, 我们可能还希望直观地检测改进效果, 现有的性能分析工具比如Intel® VTune™ Amplifier自然满足需求, 然而有时候使用第三方工具的成本却可能超出我们的所需(也许我们仅仅需要大概地对比便能得到结果), 或者我们希望能在代码中控制测试流程, 这时写一个Benchmark便是首选了.     本文实现了一个简单的通用型Benchm

2015-04-11 17:30:48 27950

原创 分支预测(Branch Prediction)

分支预测(Branch Prediction)是现代处理器用来提高CPU执行速度的一种手段, 其对程序的分支流程进行预测, 然后预先读取其中一个分支的指令并解码来减少等待译码器的时间.

2015-04-11 10:58:40 31995 1

原创 内存伪共享(False Sharing)

博主注:在考虑优化多线程并发的内存使用场景时, 由于CPU缓存机制不尽相同, 建议至少确保有128字节距离, 一般通过设置不使用哑元(dummy)或者跨区分配来避免命中同一缓存行, 以减少不同处理器由于缓存行相同造成的缓存行频繁载入和剔除的性能消耗. 缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个

2015-04-11 10:24:29 17376

转载 LTE: RLC介绍(不包含AM模式)

第1章 RLC      RLC层位于PDCP层和MAC层之间。它通过SAP(Service AccessPoint)与PDCP层进行通信,并通过逻辑信道与MAC层进行通信。每个UE的每个逻辑信道都有一个RLC实体(RLC entity)。RLC实体从PDCP层接收到的数据,或发往PDCP层的数据被称作RLC SDU(或PDCP PDU)。RLC实体从MAC层接收到的数据,或发

2015-02-27 18:41:19 22598

原创 C++ 代码模拟登录淘宝、天猫、支付宝等电商网站的实现

有关C++ 代码模拟登录淘宝、天猫、支付宝等电商网站的实现, 在群上有很多人问, 想来有许多人对此非常感兴趣, 其中的厉害关系在此不做深究, 这篇文章也仅仅提供一些基础的实现方法, 由于整个过程中基本不需要什么技术, 因此也没有什么技术探讨的价值, 全当分享心得吧.想通过纯代码(我指的是不借助浏览器而完全通过自己处理和发送请求)来实现登录有一定阻碍, 因为PC端网站的登录模块出于各种原

2015-01-26 11:17:28 41980 11

原创 NTAPI枚举指定进程中指定模块创建的线程

代码示例了如何使用API枚举指定进程中指定模块创建的线程, 注意该方案存在一定局限性, 就是模块的起始地址和线程起始地址之间的关系无法保证, 可能存在漏掉的.

2015-01-24 20:33:55 35122

原创 【代码】Android SDK平台获取高唯一性设备识别码

注意:由于获取的设备信息完全可以通过诸如hook拦截等手段伪造,因此不能简单通过代码获取到数据作为判断用户身份的唯一凭据!(某些apk竟然通过imsi,imei来为用户自动登录...)private static String getUniqueID(Context paramContext) { for (;;) { byte[] arrayOfByte;

2014-12-20 11:52:21 16958

原创 Android开发中通过关键路径初步检测虚拟机环境,防止作弊

实际开发过程中, 碰到用户使用虚拟机进行违反规则的活动(作弊,逆向等等)时着实令开发人员头疼, 于是应运而生的便是各种检测方法, 其不外乎基于虚拟环境的特征进行检测, 而可执行文件的路径也是其中之一.以下是收集的关键路径,欢迎补充: "/data/app/com.bluestacks.appmart-1.apk""/data/app/com.bluestacks.BstCo

2014-11-18 09:50:34 37714 7

原创 解决VERIFIER STOP 00000900: A heap allocation was leaked.

VERIFIER STOP 00000900: pid 0xDE0: A heap allocation was leaked. 0A37011C : Address of the leaked allocation. Run !heap -p -a to get additional informat

2014-10-31 20:06:46 55541 1

转载 GNU Hash ELF Sections And GNU-style hash table

GNU Hash ELF Sections 和 GNU-style hash table (搜索关键词SHT_GNU_HASH, DT_GNU_HASH, .gnu.hash) 是经过精心设计、用来加速ELF符号表查找的一种手段,相比传统的ELF HASH查找, GNU HASH的效率更高, 原文简要介绍了其编程实现原理和数学背景知识。

2014-10-11 16:40:08 10533 1

原创 Android平台在JNI层实现动态dex分包加载

简要介绍Android平台动态dex分包加载原理, 并提供了其在JNI层相应实现的C++类DexClassLoader。

2014-08-08 20:30:06 31855 2

原创 Native C++借助CLR动态加载并调用.NET程序集

Native C++代码和托管.NET代码互操作并不是什么难事, 资料也很多, 但是有些方法复杂繁琐, 本文介绍了一种简单的可行、支持动态加载的基于CLR的交互方法.

2014-06-20 14:01:41 42487 3

转载 ARM交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别

命名规则交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]arch - 体系架构,如ARM,MIPSvendor - 工具链提供商os - 目标操作系统eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface)根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如

2014-06-15 15:50:41 54677

转载 How to Load Constants in Assembly for ARM Architecture

ARM is a 32-bit CPU architecture where every instruction is 32 bits long. Any constants which are part of an instruction must be encoded within the 32 bits of the given instruction and this naturally limits the range of constants that can be represented in

2014-06-09 09:21:37 5009

原创 快速恢复Safengine Protector的Shadow DLL

本文以Safengine Protector v2.3.9.0为例, 提供了一种C++代码快速恢复Safengine的Shadow Dll的方法, 没啥技术含量, 仅希望能给各位一点参考.

2014-01-28 17:52:44 48881 2

原创 C++调用libmp3lame实现压缩WAV为MP3【附VS2013项目】

The LAME Project LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL. VS2013项目(libmp3lame, 可直接编译)下载链接:http://pan.baidu.com/s/1eQnqS9c 密码:5mg3/********************

2014-01-23 11:49:08 18287 5

原创 【分享】AspxZip v2.0 在线压缩解压ZIP文档

下载地址: http://download.csdn.net/detail/rrrfff/5756977当前版本:2.0.20140609AspxZip v2.0 特点: 1.能够在支持 ASP.NET 的 Web 服务器上通过友好的 Web 界面方便地 压缩/解压存放在服务器上的文档。 2.通用性极强,只要服务器

2013-07-15 14:55:12 65526 2

原创 C++调用WebClient模拟登录Blog.com代码

using namespace System;using namespace System::Net;void Login(){ ManagedObject request = WebClient::GetHttpRequest(_T("http://blog.com/wp-login.php")); if (request.IsSatisfied()) { //我们只需要得到Co

2013-05-01 17:43:58 43840 8

原创 Tesseract-ocr 3.0.2源码 + VS2010项目工程 + 简单测试代码

编译环境:Visual Studio 2010所用类库版本:zlib 1.2.7lpng1514jpegsr9tiff-4.0.3giflib-5.0.4leptonica-1.69tesseract-ocr3.0.2下载地址http://pan.baidu.com/s/1c0pqvQg 密码rlib测试代码bool

2013-01-29 15:39:37 24658 45

转载 为什么项目经理拿的钱比程序员多?

偶然在programmers.stackexchange.com上看到了这个有趣的问题,有人问:                                                                                 既然普遍认为编程是比较难的工作,为什么业务分析人员和项目经理们会拿比程序员更多的薪水?虽然大多数的时候程序员都被发现是最晚离开公司的人,可

2012-08-15 13:52:11 6160

翻译 Functional Programming Is Hard, That's Why It's Good

很奇怪不是,很少有人每天都使用函数式编程语言。如果你用Scala,Haskell,Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你。这个行业里的绝大部分人都是使用像Python,Ruby,Java或C#等面向对象的编程语言——它们用起来很顺手。不错,你也许会偶然用到一两个“函数式语言特征”,例如“block”,但人们不会去做函数式编程。然而,很多年来,我们一直被教导说函数式

2012-08-14 18:00:46 1628 1

转载 AVX指令集中的32种浮点比较关系详解

在传统印象中,数字的比较关系只有6种。但在AVX指令集中,Intel一下给出了32种浮点比较谓词,详见下图--(Intel手册:Table 3-9. Comparison Predicate for VCMPPD and VCMPPS Instructions)  为什么会有这么多种比较谓词呢?我为此困惑困惑了很久。  直到最近翻阅了不少资料后,才终于将它们弄懂了。一、

2012-08-05 12:43:27 54912

原创 优秀压缩算法UDA-PAQD2 0.284

#include "RLib_Compress.h"#include using namespace System;using namespace System::IO;//-------------------------------------------------------------------------#pragma warning(disable: 4127)// 条件

2012-07-28 15:16:56 2603 2

原创 C++ STL 快速生成带后缀的随机文件名

示例代码展示如何运用 std::uniform_int_distribution 快速随机生成文件名并以 std::string 返回,可在某种情况下替代系统API。

2012-07-26 10:05:41 53730

原创 界面库Duilib编译成静态库

这套库做界面还是非常不错的,华为网盘客户端也是用的这个。有很多人不知道如何编译成静态库,其实很简单的。首先在vs中设置duilib项目。如图:配置类型改为静态库。第二步修改UIlib.h头文件上面的宏。如图:#define UILIB_API #pragma comment(lib, "Comctl32.lib")#pragma comment(lib, "Ri

2012-07-25 17:54:10 10496 5

提示
确定要删除当前文章?
取消 删除