omnispace的博客

专注AI,物联网,区块链,安卓以及相关安全技术

https://www.intelnervana.com/security-nervana-part-2-securing-data/

In our previous Security post, we discussed the Root of Trust, and how it is used to create a secure, trusted environment in which to execute deep ...

2017-08-29 13:36:34

阅读数 664

评论数 0

Securing the Deep Learning Stack

This is the first post of Nervana’s “Security Meets Deep Learning” series. Security is one of the biggest concerns for any enterprise, but it’s espec...

2017-08-29 13:34:33

阅读数 383

评论数 0

ART深度探索开篇:从Method Hook谈起

Android上的热修复框架 AndFix 想必已经是耳熟能详,它的原理实际上很简单:方法替换——Java层的每一个方法在虚拟机实现里面都对应着一个ArtMethod的结构体,只要把原方法的结构体内容替换成新的结构体的内容,在调用原方法的时候,真正执行的指令会是新方法的指令;这样就能实现热修复,详...

2017-08-27 15:33:19

阅读数 254

评论数 0

如何调试Android Native Framework

半年前写了一篇文章,介绍 如何调试Android Framework,但是只提到了Framework中Java代码的调试办法,但实际上有很多代码都是用C++实现的;无奈当时并并没有趁手的native调试工具,无法做到像Java调试那样简单直观(gdb+eclipse/ida之流虽然可以但是不完...

2017-08-27 15:30:03

阅读数 384

评论数 0

理解和使用systrace

理解和使用systrace。 一、介绍systrace systrace是Android4.1版本之后推出的,对系统Performance分析的工具。 systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况等。在Android平...

2017-08-27 15:27:38

阅读数 12628

评论数 0

Binder实用指南(二) - 实战篇

本章的内容主要说明如何在JavaFramework层和Native层自定义Client-Server组件,并且使用Binder进行通信。 一、Native Binder 源码目录结构: alps/frameworks/native/cmds/NativeBinderDemo/ ...

2017-08-27 15:24:08

阅读数 306

评论数 0

Binder实用指南(一) - 理解篇

这是关于Android Binder机制的一篇文章,Binder是Android里面非常重要的组成,也是最难理解的一块知识点,学习Binder最好的方法是深入源码阅读,因为Binder相关的知识错综复杂,一般初学者也很容易迷失在源码的汪洋里,本文旨在梳理Binder的架构和流程,并且试着以实用的角...

2017-08-27 15:22:49

阅读数 306

评论数 0

一个关于binder的debug技巧

在android的C/S IPC通信框架中,常会遇到binder通信异常的问题(其实不是太经常会遇到,主要在煲机和压测等极限测试的情况下才会出现),binder的driver基本不用去怀疑其出bug的可能性,基本为0,如果binder通信出现问题,那么十有八九都是app或者service本身写的有...

2017-08-26 13:57:50

阅读数 541

评论数 0

Android O限制系统全屏进一步遏制手机勒索

一、引言 近期谷歌发布了最新手机操作系统Android O的开发者预览版,一如往常,Android O又带来了多项新功能与优化升级,其中一项有关系统窗口管理的优化给Android手机勒索软件带来了严重冲击。 二、简述Android系统与勒索软件对抗史 手机勒索软件是一种特殊的恶意...

2017-08-26 13:24:38

阅读数 541

评论数 0

Core Dump流程分析

闲话 最近分析问题时,发现我的环境中,经常有用户态进程异常退出,但是却没有core文件生成,简单看了一下相关的内核流程,mark一下。 Core Dump基本原理 当应用程序在用户态发生异常时,比如常见的段错误,通常会生成core文件,通过gdb分析core文件,基本就能定位问题...

2017-08-26 13:17:42

阅读数 661

评论数 0

mmap原理及流程(kernel 4.1版本)

背景 最近在分析问题时,遇到了mmap fb设备失败问题,顺便看了下4.1版本内核中的mmap相关流程,以前看过老版本的,有些忘记了,这里权当记录,供后续参考。 mmap是什么? 相信做过Linux开发的兄弟都或多或少用过,或者听说过mmap,但可能并不完全了解mmap的作用。 mma...

2017-08-26 13:14:47

阅读数 1157

评论数 0

闲聊Linux内存管理(1)

今天还有时间,之前一直想抽时间来写写Linux内核原理相关的东西,关注点不在代码,而在于内在的原理和机制,让大家对Linux内核有个总体的感性认识,个人认为这很有必要,把看似复杂、深不可测的内核实现,用大家都能理解的方式,用讲故事的方式,讲给大家听,如果有人听后,有原来不过如此的感觉,那我的目的就...

2017-08-26 13:12:10

阅读数 279

评论数 0

Mips TLB miss实现in Linux

TLB miss是Mips中内存管理的核心流程。上一篇写了关于Mips中,TLB miss的相关原理,本文关注在Linux kernel中的代码实现。 TLB Refill初始化 内核启动过程中,会对TLB Refill异常进行初始化,设置相应的处理接口。主要流程如下(以R3k为例):...

2017-08-26 13:10:24

阅读数 416

评论数 0

Mips TLB miss异常

最近分析龙芯KVM的实现,顺便又粗看了遍MIPS的手册,跟KVM相关的主要模块包括: CPU虚拟化内存虚拟化IO虚拟化 目前龙芯上CPU虚拟化跟标准内核差异不大,需要软硬件配合支持,目前龙芯整体能支持。 内核虚拟化是龙芯KVM方案的关键,直接决定了性能,这也是本文的源头。 IO虚拟化,...

2017-08-26 13:09:19

阅读数 876

评论数 0

内核中的page fault & copy_from_user

内核态的page fault? 前段时间有同事问了个问题:内核中是否可能发生page fault? 一时没能给出准确答案,当即有种感觉:难道是对内核内存管理的理解还不够,之前在这方面还是比较自信的~ 问题看似很简单,从之前的理解来看,以经典的32位X86为例,内核态低端地址都是线...

2017-08-26 13:08:03

阅读数 468

评论数 0

Mips KVM Trap&Emulate implemented in Linux

基本原理 Trap&Emulate,即陷入&模拟的方式,是纯软件实现的全虚拟化方案,基本不借助硬件虚拟化功能。本文主要关注内存虚拟化实现中的核心,TLB miss相关实现。基本原理是: 所有的TLB miss都将导致Guest退出到VMM处理,然后在VMM中进行相应模拟。 具...

2017-08-26 13:06:45

阅读数 429

评论数 0

Tramp data In Kernel

表象 内核中经常见到某些函数有很多的参数,而且这些参数会一级一级往下面传递,部分参数可能只有最深一级函数才会用到,但却被传递了很多级,其中不乏一些bool型的参数,比如如下的代码流程,6个参数传递了很多级。 kvm_mips_map_page() -> gfn_to_pfn_prot(...

2017-08-26 13:04:16

阅读数 238

评论数 0

彻底弄懂dalvik字节码【三】

【一】、【二】中从代码的角度分析了dalvik字节码解释执行的过程,这篇文章以一个例子来实际分析一下。 我们以这篇文章中提到的crackme为例,下载链接参见那篇文章。我们只分析dalvik字节码,因此忽略so。 0x01: 使用Jeb打开crackme.apk,找到MainActivity...

2017-08-24 14:41:11

阅读数 378

评论数 0

彻底弄懂dalvik字节码【二】

【一】中讲到了最重要的dvmInterpret,继续跟: void dvmInterpret(Thread* self, const Method* method, JValue* pResult) { InterpSaveState interpSaveState; Execu...

2017-08-24 14:40:23

阅读数 305

评论数 0

彻底弄懂dalvik字节码【一】

之前曾经简单跟踪过代码,知道dalvik的字节码是可以支持解释执行的,所谓的解释执行,其实就是c/c++编写的用于解释并执行dalvik字节码的程序,说白了就是dalvik字节码到cpu字节码的转换。 之前的理解算是囫囵吞枣,最近有时间,好好跟了一遍dalvik的代码,算是弄明白了细节。 我们...

2017-08-24 14:39:01

阅读数 331

评论数 2

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