- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 ARM INLINE HOOK (一)
运行在ARM指令集的CPU上(比如Android手机),通过HOOK机制,对一些关键的方法进行监控,从而达到一些特殊目的,比如性能监控、安全等。常用的HOOK方法有:GOT表Hook和Inline Hook。而inline hook具有更广泛的适用性,几乎可以Hook任何函数(当然也有特殊情况无法进行inline hook,后面会提到)。相较于GOT表hook,inline hook由于需要能...
2019-12-29 23:18:14
1899
原创 Dalvik指令分析(三) dex文件的结构
dex文件结构headerheader_itemthe header上述dex文件header部分的内容如下:64
2015-02-24 14:18:43
1693
原创 Dalvik指令分析(二) 从java文件到dex
写这个系列文章是想了很久但是一直没有时间付诸行动,趁着这两天假期还没有结束,赶紧动笔,怕上班了就没有时间再静下心来写这些文章,所以有点赶,表现在系列文章的内容安排上就不是很合理,有些内容还需要丰富,但是聊胜于无吧,先写下再修改,如果有一些反馈也可以根据反馈来修改。好了,开始第二篇文章。 这篇文章可以成为dx的HelloWorld,在这篇文章里我会介绍如果将一个java文
2015-02-23 23:05:33
1626
原创 Dalvik指令分析(一) hex to instruction
Dalvik指令介绍请参考官方文档:General design 如果读者对X86或者ARM指令集有一定的了解,学习Dalvik指令还是很容易的。如果您掌握了Dalvik指令集,就能将dex文件转换为smali代码,这也是很多android安全研发人员的基本功。下面从实例讲解Dalvik指令集:实例1:将如下十六进制指令翻译为davik字节码,从高字节到低字节为:00 02 2C
2015-02-23 19:18:55
1956
原创 Java字节码分析(一)
今天练习的内容,见如下类定义:import java.lang.reflect.Field;public class ClassDemo { public static void main(String[] args) { try { ClassDemo c = new ClassDemo(); Class cls
2014-05-08 17:34:38
897
原创 XMPP开发记录
mac下卸载openfire sudo rm -rf /Library/PreferencePanes/Openfire.prefPane sudo rm -rf /usr/local/openfire sudo rm -rf /Library/LaunchDaemons/org.jivesoftware.openfire.pliststo
2014-05-05 13:42:19
1820
原创 google protocol buffer的使用
下载protocol buffer代码1、打开根目录下的README.txt,编译、安装2、进入java目录,mvn install生成jar包3、定义.proto文件,idl文件,如下所示:package tutorial;option java_package = "com.android.contacts.model";option java_outer_classna
2013-05-20 18:03:17
804
原创 通过命令行创建Android工程,并编译发布
1、利用命令行创建一个新的工程: android create project --target 1 --name PROJECTNAME --path /PROJECT_PATH --package com.project --activity ActivityName 2、将对应的信息拷贝到刚才创建的工程中,如拷贝图片资源到/res/drawable-h
2013-05-20 18:00:17
1161
原创 移植UDT到android
在开发过程中,需要使用UDT协议,由于server端使用的是c++版本的udt库,而Android版本在使用udt java版本和c++版本通信时,发现一些问题,google后发现目前的java version can not talk with c++ version,所以只能通过将UDT移植到android上,然后通过JNI的方式进行调用,下面就列出移植过程,供大家参考。1、下载UDT4
2013-02-28 16:04:42
2456
原创 定制自己的控件
在实际开发中,经常会碰到系统控件不满足咱们的需求,需要对系统控件做一些修定制修改。这篇文章就分析一下如何去定制自己的控件。在定制控件之前,我们需要弄清楚控件显示的过程,控件显示的过程大概可以分为以下三步:1. 调用ViewRootImpl的requestLayout方法;//requestLayout Up to ViewRoot2. 调用onMeasure计算所有
2013-02-28 15:52:41
1028
原创 Android编译系统
这篇文章对Android的编译系统做个大概的分析,希望对大家有帮助,也希望大家一起讨论。编译系统的框架和结构网上有很多文章描述,本文后面也附了一些链接可供大家参考,我这里就不从这个角度来阐述了,咱们从一些主要的编译文件开始讨论。一、envsetup.sh文件 envsetup.sh其主要作用如下:加载了编译时使用到的函数命令,如:help,lunch,m,mm,m
2013-02-24 10:33:35
1899
原创 Android联系人模块分析(三)
前两篇文章主要讲解了ContactsProvider的结构,这篇文章想详细分析一下ContactsProvider的底层数据表结构(Android4.1.1),和大家一起深入的理解其内部实现。 ContactsProvider的代码路径位于packages/providers/ContactsProvider/src下,我们可以结合实际的场景来分析ContactsProvider的
2012-10-23 14:42:01
2932
1
原创 根据gfp_mask来获得对应的zone
本篇文章只是分析一下gfp_mask到zone的对应关系在内核中的实现:内核代码如下:(3.0) #define GFP_ZONE_TABLE (ZONE_NORMAL << 0 * ZONES_SHIFT) \ | (OPT_ZONE_DMA << ___GFP_DMA * ZONES_SHIFT) \ | (OPT_ZONE_HIGHMEM <<
2012-10-23 10:49:57
2293
原创 Android联系人模块分析(二)
上篇文章讲解了ContentsProvider的基本结构,本篇文章结合实际的联系人模块操作的例子来讲解联系人模块的使用。 下图为联系人模块中的表结构,各个表项中字段信息,可以参考上篇文章对ContactscProvder的分析中所描述的,在ContactsContract.java文件中定义了各个数据表的结构、Uri等信息。ContactsProvider数据库的三个主要的数据表结
2012-10-19 14:12:11
3292
原创 Android联系人模块分析(一)
联系人模块是Android系统中的一个重要的功能模块,目前Android市场上有大量的基于通讯录的应用,本人计划写出系列文章详细介绍联系人模块的结构和使用。作为开头,本篇文章将对ContactsProvider做个简要的介绍。 Android系统将联系人的信息存储在sqlite数据库中,并通过ContactsProvider提供查询、更新、删除等操作。所以如果需要掌握联系人相关信息的操
2012-10-08 18:22:00
3250
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人