ARM平台NEON指令的编译和优化 本文介绍了ARM平台基于ARM v7-A架构的ARM Cortex-A系列处理器(Cortex-A5, Cortex-A7,Cortex-A8, Cortex-A9, Cortex-A15)上的NEON多媒体处理硬件加速器针对C/C++语言.汇编语言和NEON intrinsics如何编译和优化,包含如何向量化.向量化的ARMCC和GCC编译器选项.NEON的汇编和EABI程序调用规范.如何在bare-metal和Linux操作系统上检测NEON硬件.如何指导…
0x00:什么是代码虚拟化? 虚拟机保护是这几年比较流行的软件保护技术.这个词源于俄罗斯的著名软件保护软件“VmProtect”,以此为开端引起了软件保护壳领域的革命,各大软件保护壳都将虚拟机保护这一新颖的技术加入到自己的产品中.代码虚拟化是将程序代码编译为虚拟机指令即虚拟代码(自己定义的代码集),通过虚拟CPU解释并执行的一种方式,大致流程如下: 我们抛开ARM平台CPU流水线机制不谈,简单来说,其实CPU就是遵循一个简单的模式:循环读取.解码.执行这个过程. 0x01:为什么要指令虚拟化 首…
一.概述:      我们知道QTcreator.这仅仅是个IDE,他包含了一个编译器--qmake.这两者的关系与codeblocks和g++的关系一样,首先要明确这些.      而我们在linux下搭建arm平台的QT编译环境,基本的是要使用适合arm的qmake.正如我们编译在arm上使用c++程序时要用arm-none-linux-gnueabi-g++一样.而qmake仅仅是我们使用的工具,自然不须要也不能换.所以我们仅仅要使用arm-none-linux-gnueabi-g++编译…
如果是做嵌入式开发. 在Qt下支持JSon最好的办法,可能不是采用qjson这个库.QJson这个库的实例只提供了x86环境下的编译方法. Installing QJson-------------- QJson requires:- Qt 4.0 or greater- cmake 2.6 or greater For Unix/Linux/Mac: mkdir build  cd build  cmake -DCMAKE_INSTALL_PREFIX=_preferred_path_ .. …
参考:ARM平台下独占访问指令LDREX和STREX的原理与使用详解 全文转载如下: 为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁.为了实现所谓的互斥锁的概念,一般都需要所在平台提供支持. 本文主要用来说明ARM平台上特有的独占访问指令LDREX和STREX的工作原理,以及如何使用.而它们也是ARM平台上,实现互斥锁等线程同步工具的基础. 我们先来看看LDREX和STREX两条指令的语义.其实LDREX和STREX指令,是将单纯的更新内存的…
一.LINUX环境下操作: 1.安装交叉编译SDK (仅针对该型号:i.MX6,不同芯片需要对应的交叉编译SDK) 编译方法参考:手动编译用于i.MX6系列的交叉编译SDK 2.下载Tensorflow git clone https://github.com/tensorflow/tensorflow.git cd tensorflow git checkout r1.10 Tensorflow与Bazel编译器(及CUDA,CUDNN)之间需要对应,否则会有兼容性问题. tensorflow…
简介:代码的虚拟化即不直接通过CPU而是通过虚拟机来执行虚拟指令.代码虚拟化能有效防止逆向分析,可大大地增加了代码分析的难度和所需要的时间,若配合混淆等手段,对于动静态分析有着较强的防御能力. 背景:现在由于手机APP安全性缺乏导致用户敏感数据泄露的例子越来越多,APP开发者应该从开发阶段到运营阶段都关注APP安全防护问题,无论是漏洞还是病毒等等.今日分享一个与App安全相关的技术之一   —— 代码保护之虚拟化. 1.1什么是代码虚拟化? 我们知道程序的执行,是依靠CPU对于符合规范的指令集的…
移植MySQL到嵌入式ARM平台  MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.php?uid=9701860&do=blog&id=285428,因为MySQL5.5之后,编译是用的cmake不再使用./configure,因此,只好倒回支持./configure的版本来用,这里使用了文档上的5.1.51版本.进行如下步骤完成移植: 1) 下载mysql5.1.51:  …
iOS安全攻防(二十三):Objective-C代码混淆 class-dump能够非常方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完好的程序给同行留下笑柄. 所以,我们迫切的希望混淆自己的代码. 混淆的常规思路 混淆分很多思路,比方: 1)花代码花指令,即任意往程序中加入迷惑人的代码指令 2)易读字符替换 等等 防止class-dump出可读信息的有效办法是易读字符替换. Objective-C的方法名混淆 混淆的时机 我们希望在开发时一直保留清晰可读的程序…
4G模块是连接物与物的重要载体,是终端设备接入物联网的核心部件之一.随着4G的普及,许多新兴市场对4G通信模块的需求都在日益扩大,那么在ARM平台的嵌入式设备上如何快速的应用4G模块呢? 4G通信模块把频率接收器和信号增幅器等部件全都整合在一起,实现了一体化.随着工业发展,嵌入式设备接入网络的需求日益增多,在没有有线或WiFi等无线的环境下,直接通过4G通讯模块连接运营商网络来接入互联网不失为一个好方法.因此,本文就为读者介绍一下基于ARM平台的嵌入式设备在Linux下使用4G模块的方法. 一.…