- 博客(49)
- 资源 (9)
- 收藏
- 关注
原创 Groovy开发环境搭建
一 Groove SDK 安装1.从官网下载Groove SDK包:http://www.groovy-lang.org/download.html, 注意Groove是基于JVM的,所以首先安装JDK解压目录配置环境变量GROOVY_HOME = G:\Program Files (x86)\Groovy\Groovy-3.0.0Path = %GROOVY_HOME%\bi...
2019-03-11 18:39:56
994
原创 java动态代理解析
一、Java创建动态代理对象步骤java动态代理创建对象的过程为如下步骤: 1. 通过实现InvocationHandler接口创建自己的调用处理器。调用处理器实现InvocationHandler接口的invoke方法。代理类的方法调用会将代理对象、调用方法的Method对象、方法的参数数组传递给调用处理器对象的 invoke方法,我们需要在invoke方法中,将方法调用委托给被代理对...
2018-04-13 14:14:10
457
1
原创 java核心技术 第三章 Java 基本程序结构
3.1 简单Java程序public class FirstSample { public static void main(String[] args) { System.out.println("We will not use Hello,World!"); }}类名命名规则:1.大小写敏感2.以大写字母开头,后面跟数字和字母任意组...
2018-04-09 19:37:47
414
原创 java核心技术 第四章 对象与类
4.1 面向对象概述面向对象层序设计(OOP),Java是完全面向对象。面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。 面向对象将数据放在第一位。4.1.1 类类(class)是构造对象的模板或蓝图。由类构造(construct)对象的过程称为创建类的实例(instance).封装(encapsulation) 将数字和行为组合在一个...
2018-04-09 19:33:31
423
转载 AppTheme属性设置集合
作者:Wing_Li 链接:http://www.jianshu.com/p/bc38d6a15809 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。现在新建一个项目基本都会在 style.xml 设置基础的 AppTheme,但是系统的给提供的设置属性又比较多。 所以在此收集记录,以便之后查找方便。<style name="AppTheme" parent
2017-12-05 22:32:18
956
原创 zygote详解
在init进程详解的一章中,我们知道init.rc文件中的zygote启动脚本命令是service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class main socket zygote stream 660 root system onrestar
2017-11-30 11:29:53
2015
原创 Init 进程详解
Android 内核加载完成后,就会启动init进程,init进程是Android系统用户空间的第一个进程。init程序放在系统根目录下,init进程代码位于源码的目录“system/core/init”下面。下面我们来分析init进程的启动过程1. 分析入口函数进程init入口函数是main,具体实现文件的路径是: system\core\init\init.c 分析main函数:int ma
2017-11-13 11:16:13
12204
翻译 Android Android.mk 文件语法详解
一、Android.mk简介二、参考文章: http://www.cnblogs.com/wainiwann/p/3837936.html http://blog.sina.com.cn/s/blog_602f8770010148ce.html http://blog.youkuaiyun.com/huangxiaominglipeng/article/details/17839239 http://
2017-10-11 15:29:10
305
原创 Android NDK 编程常见错误收集
1.错误提示: undefined reference to '__android_log_write'解决方法: 在Android.mk文件中引入 liblog库。LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
2017-10-10 22:12:39
1121
1
原创 Android JNI 分析
本文我们将分析Android的jni机制。一、JNI 概述JNI 的全称是 Java Native Interface, 中文名称 “Java本地调用接口”, JNI标准是Java平台的一部分,它允许Java代码能够和其它语言写的代码进行交互。出现JNI技术有以下原因:Java语言平台无关,但执行Java语言的虚拟机却是用Native语言写的,与平台相关。出现JNI技术可以向Java层屏蔽平台相关
2017-09-21 16:18:01
455
原创 Android View事件分发机制 三 (Activity)
在上面两篇的分析中,我们知道View中的事件是由ViewGroup组件分发的,但是根ViewGroup又是由Activity承载的,所以这次我们探讨Actitity与事件分发机制的关系。
2017-09-15 16:28:50
302
原创 Android View事件分发机制 二(ViewGroup)
在上篇文章中,我们讨论了View 的事件分发机制。这篇文章我们讨论布局控件 ViewGroup的事件分发机制。ViewGroup继承自View组件。一、小例子分析这次由于要讨论布局控件ViewGroup,所以这次我们重写Button、LinearLayout两个控件。自定义Button类public class TestButton extends Button { public static
2017-09-12 14:23:02
337
原创 Android Studio Gradle相关资料汇总
1.Android studio Gradle手动更新官网:https://gradle.org/release-candidate/ 各版本下载地址:http://services.gradle.org/distributions/
2017-09-08 15:55:18
287
1
原创 Android Studio 工具错误汇总
1. Gradle version 2.2 is required. Current version is 2.10解决方法:1 . Open gradle-wrapper.properties2 . Change this line: distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zi
2017-08-29 22:08:36
294
原创 Android Studio 快捷键汇总
导航到工具窗口1.[Alt] + 1 打开Project工具窗口 2.[Alt] + 2 打开 Favorate 工具窗口 3.[Alt] + 7 打开Structure工具窗口 4.[Shift] + 上箭头 从光标处向上选择 5.[Shift] + A 全选 6.[Shift] + W 选择单词,再按选择更多的区域获取帮助Ctrl + Shift + A 帮助键
2017-08-29 22:02:05
258
原创 Android View事件分发机制 一(View)
下面我们来讨论Android事件分发机制.一、点击事件小例子分析为了分析安卓事件分发机制,我们先分析一个小例子。项目名叫做ClickExample1.下载地址:1.项目源码界面如下: 布局文件如下,布局中1个LinearLayout中有1个Button按钮。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:androi
2017-08-20 18:03:22
316
原创 IDA 动态调试Android SO .init .init_array JNI_Onload总结
在安卓脱壳过程中,经常需要用ida动态调试so,并且在解密代码执行前下断点,下面介绍用IDA在Android so文件的.init、.init_array上和JNI_OnLoad处下断点方法。我们以自己编写的一个小程序initTest.apk为例,该apk实现了在.init、.init_array上和JNI_OnLoad 中的方法中打印日志功能.一、上传android_server,启动androi
2017-08-03 11:25:23
2643
原创 Android NDK error收集
error: undefined reference to ‘__android_log_print’ 解决办法:在Android.mk 文件中添加下面的log模块LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
2017-08-01 20:53:28
300
原创 ROM定制修改镜像
在ROM定制中,通常需要修改 system.img、userdata.img 、boot.img 、recovery.img这四个镜像文件。一、修改系统镜像(system.img)对于system.img文件,通常使用 unyaffs命令进行解压。unyaffs 源码文件地址 : ,在乌班图下输入下面的命令进行编译:gcc -o unyaffs unyaffs.c解压
2017-07-28 22:13:52
7811
4
原创 Android系统su命令源码分析
这篇文章将介绍Android 4.4.4_r1 系统源码中自带的 su命令源码。su二进行值文件一般放在Android 设备中的/system/bin 目录或/system/xbin 目录中,我们在Android 设备中的shell命令窗口中执行su 命令,当前的shell命令窗口便可获得root权限。 编译安卓系统源代码时,编译好的su二进制文件在<系统源码根目录>/out/target/pr
2017-07-16 15:27:45
4616
原创 三、Android系统内核编译及刷机实战 (修改反调试标志位)
前言在 二、Android系统源码编译及刷机实战 一文中,我们成功编译了Android 4.4.4_r1源码并刷入系统了 Nexus 5 设备,下面是设置界面的信息。上面显示的内核版本信息是3.4.0-gd59db4e,内核的编译时间是Mon Mar 17 15:16:36 PDT 2014,也就是说内核之前就已经编译过了,我们编译系统源码的时候并没有编译内核源码!那么编译好的内核文件放在了哪里呢?
2017-06-18 22:25:33
18582
2
原创 二、Android系统源码编译及刷机实战
在Android系统源码下载实战 一文中,我们配置好了编译环境以及下载好了系统源码,下面我们我们来实战系统源码的编译。Google官方教程https://source.android.com/source/building一、下载专有的二进制文件目前网络上的中文教程以及出版的书籍几乎都是直接编译AOSP源码用模拟器加载启动镜像。但是要想让用AOSP源码编译出的系统镜像在特定的设备中运行,仅仅编译AO
2017-06-15 13:27:44
17742
2
原创 NEXUS 5 工厂镜像刷机教程及刷机包目录解析
下面我们来介绍NEXUS 5 工厂镜像刷机教程.一、下载官方最新Android SDK Platform-Tools刷机工具和工厂镜像Android SDK Platform-Tools刷机工具官方地址:https://developer.android.com/studio/releases/platform-tools.html 传送门: 官方镜像下载地址及教程:https://develo
2017-06-02 12:20:23
9514
原创 Ubuntu 下JDK的安装与环境配置
在 Ubuntu 64 12.4 位操作系统下安装jdk-6u45-linux-x64.bin文件一、复制JDK到安装目录1.假设JDK安装文件放在桌面,我们要安装的目录为:/usr/local/java。 我们先在 /usr/local/目录下创建java文件夹:aosp444@aosp444-virtual-machine:/usr/local$ sudo mkdir java[sudo]
2017-05-30 13:09:37
3482
原创 一、Android系统源码下载实战
最近买了个Nexus 5 手机准备学习android4.4.4源码。Nexus 5 刷入从第三方下载的ROM后,总是推送各种第三方APP,于是自己打算下载编译一次官方的源码。一、编译环境搭建1.官方推荐环境介绍关于Android各个版本的编译环境的搭建,大家可以参考我去年翻译的Android 官方文档http://blog.youkuaiyun.com/u012417380/article/details/51
2017-05-30 12:25:24
12713
2
转载 Java 多线程安全之 Atomic
一、 Atomic类简介 在Java.util.concurrent.atomic包下,有AtomicBoolean , AtomicInteger, AtomicLong, AtomicReference等类,它们的基本特性就是在多线程环境下,执行这些类实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由
2017-05-29 16:07:44
792
翻译 密码学之Padding
本文参考自:https://en.wikipedia.org/wiki/Padding_(cryptography)一、Padding简介在书面语中,明文经常以可预测的方式开始和结束。例如:尊敬的、此敬等等。为了防止已知明文攻击,随机长度的填充来防止攻击者知道明文的长度。二、Padding在对称加密中的应用在对称加密中,明文通常是由固定长度的块组成,这就需要对明文进行填充。1.Hash 函数现代的H
2017-04-08 11:17:00
2923
原创 linux/android进程的模块信息获取
本文参考自腾讯游戏安全实验室,感谢腾讯游戏安全实验室的技术分享,如有侵权,请联系我@@linux进程空间中有较多的模块信息,模块信息一般包括:动态加载的链接库和可执行文件的信息。通过遍历模块可获取的进程信息包括:模块基地址和模块路径等。 下面我们以HelloWord 程序来讲讲解linux上进程模块信息的获取。该程序用C语言完成,调用了C语言标准库中的printf函数,源码如下:#include
2017-04-04 11:29:03
4281
原创 动态链接之可执行文件的装载与进程
一、进程的虚拟地址空间 程序 是一个静态的概念,它就是一些预先编译好的指令和数据集合的一个文件。 进程 是一个动态的概念,它是程序运行时的一个过程。 每个进程被运行起来以后,它将有自己独立的虚拟地址空间(Viretual Address),虚拟地址空间的大小由CPU的位数决定。32位的硬件平台虚拟地址空间为4GB,Linux系统的内核空间和用户空间比是1:3,Windows系统的内核空间和用
2017-04-04 10:36:47
373
原创 Android Ptrace 注入
由于安卓采用的是修改后的linux内核,所以linux上的很多注入技术都可以用于安卓。ptrace远程注入技术便是一种。现在我们将实现对一款游戏进行注入。该例子是腾讯游戏安全实验室提供的,再此表示感谢!如有侵权的话,希望联系我。一、Ptrace函数介绍Ptrace注入技术主要使用的是linux系统下的ptrace函数。关于如何深入学习Ptrace函数。大家可以参看我前面写的几篇文章:
2017-04-04 10:35:38
10910
6
原创 静态链接之静态链接
一、空间与地址分配如果我们有两个目标文件a.o和b.o,我们用链接器将两个文件链接后输出到可执行文件中ab.o中,输出文件中的空间如何分配给输入文件?1。按序叠加最简单的方案就是将输入的目标文件按次序叠加起来。但这样会造成空间的浪费。 2.相似段合并比较贴近事实的方法是将相同性质的段合并到一起。 “地址和空间“有两个含义,第一个是在输出的可执行文件中的空间;第二个是
2017-03-23 16:40:39
1386
原创 Linux Ptrace 详解
一、系统调用操作系统提供一系列系统调用函数来为应用程序提供服务。关于系统调用的详细相关知识,可以查看<<程序员的自我修养》第十二章。 对于x86操作系统来说,用中断命令“int 0x80”来进行系统调用,系统调用前,需要将系统调用号放入到%EAX寄存器中,将系统的参数依次放入到寄存器%ebx、%ecx、%edx以及%esi和%edi中。以write系统调用为例:write(2,"Hello"
2017-03-05 18:59:58
23794
1
转载 Linux源码分析之Ptrace
本文摘自互联网,如有侵权,请联系我。一、函数说明1.函数使用说明名字ptrace – 进程跟踪形式#include <sys/ptrace.h> int ptrace(int request, int pid, int addr, int data); 描述Ptrace 提供了一种父进程可以控制子进程运行,并可以检查和改变它的核心image。它主要用于实现断点调试。一个被跟踪的进程运行中,直到发生
2017-03-05 16:44:36
7809
原创 系统调用与API
一、系统调用介绍1.什么是系统调用在现代操作系统中,程序运行的时候,本身并没有权利访问多少系统资源,系统有限的资源有可能别多个不同的程序同时访问,为了保护系统资源,让应用程序有能力访问系统资源,每个操作系统都提供了一套接口,以供应用程序使用。这些接口往往通过系统中断来实现。比如Linux使用0x80号中断作为系统调用的入口,window采用0x2E号中断作为系统调用接口。2.Linux 系统调用在X
2017-03-01 14:52:39
2144
1
原创 Xposed框架的检测
参考文章:http://d3adend.org/blog/?p=589Xposed和CydiaSubstrate是常用的两款hook框架。其中Xposed能够对java层进行hook,CydiaSubstrate能够对java层和native层进行hook。我们如何检测当前的手机已经安装了相应的框架以及判断当前进程是否被hook呢?方法只有一个,收集hook框架安装及运行时在系统中留下的信息。一、包
2017-02-23 16:40:05
8396
1
原创 Xposed的框架的使用
一、Xposed简介Xposed是一款优秀的android java层 hook 框架。它允许你在不修改apk源码的情况下,通过编写自己的模块来改变apk的行为。它的优点是采用了插件机制,模块能够适用不同版本的框架和rom。模块改变apk行为的操作发生在内存中,对源apk不进行任何修改。你只需要安装编写的模块并重启相应的设备即可。二、相关资源Xposed 官网:http://repo.xposed.
2017-02-16 12:19:06
31493
原创 静态链接之目标文件的内容
编译器编译源代码后生成的文件叫做目标文件,目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有调整。一、目标文件的格式现在PC上流行的可执行文件格式(Executable)主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable Linkable Format), 它们都是COFF(C
2017-01-30 16:50:05
2960
原创 静态链接之编译和链接
本文是《程序员的自我修养》写的记录笔记,来加深对程序程序生成的理解。 一、编译的过程 首先还是经典的helloworld c语言程序作为例子#includeint main(){ printf("Hello World\n"); return 0;}在linux下,我们用GCC编译该程序并运行: 事实上,上述过程可以分解成4个步骤,分别是预处理(Prepre
2017-01-26 20:53:32
591
原创 安卓多媒体应用
一、使用通知通知的作用1.显示接收到短消息、即时消息等信息(如QQ、微信、新浪、短信) 2.显示客户端的推送消息(如有新版本发布,广告、推荐新闻) 3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等)通知的布局Notification支持文字内容显示、震动、三色灯、铃声等多种提示形式,在默认情况下,Notification仅显示消息标题、消息内容、送达时间这3
2017-01-15 14:14:45
325
Nexus 5 OTA update-binary 和 update-script
2017-07-17
固件管理器(ROM Manager ) v5.5.3.7 APK
2017-07-17
Nexus 5 (GSM/LTE) binaries for Android 4.4.4 (KTU84P)
2017-06-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人