- 博客(208)
- 资源 (23)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android N 指纹框架
1. 指纹框架UML2. Fingerprint2.1 Fingerprint数据流图FingerprintManager API. 直接与应用程序交互的API,属于当前APP进程.每个应用程序都可以获取FingerprintManager.FingerprintManager主要是应用程序与FingerprintService的交互封装Fingerprint...
2018-05-09 19:59:20
3524
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 基于Vivado HLS在zedboard中的Sobel滤波算法实现
基于Vivado HLS在zedboard中的Sobel滤波算法实现平台:zedboard + Webcam工具:g++4.6 + VIVADO HLS + XILINX EDK + XILINX SDK系统:ubuntu12.04总体设计思路sobel 算法理论基础索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是...
2014-09-13 20:45:04
9003
17
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Zedboard VmodCAM PIN Constraint
自己画了一块FMC-VHDCI四层板,外接VmodCAM,接口定义如下#CAMA PIN CONSTRACTNET "CAMA_D_I[7]" LOC = T17 | IOSTANDARD = LVCMOS33;NET "CAMA_D_I[6]" LOC = T16 | IOSTANDARD = LVCMOS33;NET "CAMA_D_I[5]" LOC = M21 |
2014-05-18 13:54:57
2393
7
原创 android内联优化导致Inlined method resolution crossed dex file boundary
最近App在android11上出现了一个诡异的native 崩溃,很不容易出现,但都是有个特点就是安装App后过一段时间才会出现,杀进程没用,覆盖安装同一个apk,崩溃立刻消失,日志为如下:1243 08-02 15:44:16.921 18134 18134 F pace.android:p: entrypoint_utils-inl.h:101] Inlined method resolution crossed dex file boundary: from void com.xxx.l1ll1l
2021-08-04 10:40:03
901
1
原创 Pixel修改kernel内核调试
下载内核源码git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm.git准备环境需要Android源码下的交叉编译器,在Android系统源码下source build/envsetup.shlunch aosp_sailfish-userdebug修改系统调用修改syscall open和kill的实现index 1d33f28..e40deb5 100644--- a/drivers/thermal/thermal.
2020-05-29 18:15:25
2326
原创 Android coredump分析加固so
修改系统代码如下xiabo@VM-DEV:~/android-q/system/core/rootdir$ git diff diff --git a/init/property_service.cpp b/init/property_service.cppindex f2c7462..ef8e800 100644--- a/init/property_service.cpp+++ b/init/property_service.cpp@@ -742,6 +742,23 @@ static vo
2020-05-16 17:35:07
537
原创 Android逆向-GDB调试无符号so
工具准备下载ndk将gdbserver push到手机,如果目标进程是64位的则push 64位的gdbserveradb push android-ndk-r14b/prebuilt/android-arm/gdbserver/gdbserver /data/local/tmp/编写目标程序创建 assembler工程// Android.mkLOCAL_PATH:= $(...
2020-03-25 18:40:24
742
原创 简单的禁止应用被双开的方法
前段时间发现一个应用被双开后,不能同时在一个手机上登陆两个账号,登陆A之后,B会被踢下线。刚开始还以为有什么黑科技,或者有名管道,本地socket之类的,或者是向sd卡写了什么文件,这几种方案都检查了,没有效果。没办法只能分析它的逻辑了,应用是加固了的,脱壳之后分析其原理。偶然通过netstat命令发现了这个应用监听了一个端口,发现原来用了这么简单的一种方法防止双开,既没有读取IMEI,IMS...
2019-11-05 09:42:22
3567
1
原创 JEB编写脚本
通过编写jeb的python脚本,用来解密java的加密函数,如下图得aa.E就是一个加密函数,如果脚本运行完成,这个应该被替换成解密后得字符串。我得方法就是遍历每个函数调用,然后找到目标方法,替换成解密后得字符串。结果就是简单得赋值语句能成功替换。#-*-coding: utf-8 -*- import stringimport re,collectionsimport sysf...
2019-10-24 16:44:41
2013
1
转载 WeakHashMap的回收机制分析
(转载)[https://www.ktanx.com/blog/p/288]在Java中,一般人对于WeakHashMap的理解都是:当某个键不再被使用时,将自动移除回收其条目。WeakHashMap真的是自动移除回收其条目的吗?看了下WeakHashMap的实现源码,主要是通过expungeStaleEntries这个函数来实现回收的,基本上WeakHashMap中所有的public方法都...
2019-10-24 15:18:15
467
原创 为什么wait()一定要放在循环中
在多线程的编程实践中,wait()的使用方法如下:synchronized (monitor) {// 判断条件谓词是否得到满足while(!locked) {// 等待唤醒monitor.wait();}// 处理其他的业务逻辑}那为什么非要while判断,而不采用if判断呢?如下:synchronized (monitor) {// 判断条件谓词是否得到满足if...
2019-10-24 15:16:44
659
原创 Android java脱壳(修改art源码方案)
9.0 aosp 修改源码地方:android-p/art/runtime/dex/art_dex_file_loader.ccOpenCommon函数中添加7.0 8.0 8.1 修改源码地方:android-p/art/runtime/dex_file.ccOpenMemory函数添加 ALOGD("OpenMemory begin... %s", path.c_str());...
2019-10-24 15:03:44
1124
原创 linker打开log开关
linker在设计之初就为广大码农提供了便利 // Get a few environment variables. const char* LD_DEBUG = getenv("LD_DEBUG"); if (LD_DEBUG != nullptr) { g_ld_debug_verbosity = atoi(LD_DEBUG); }因此可以在进程内部设置环境变量s...
2019-10-24 15:00:01
984
原创 vfork导致父进程环境变量被修改
vfork导致父进程环境变量被修改vfork版本#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <sys/types.h>#include <unistd.h>static int childProcess(void *arg) { ...
2019-10-24 14:50:53
410
原创 SmaliEx反编译Rom
Download latest version: https://github.com/testwhat/SmaliEx/releases/tag/snapshot Build command: gradlew -b smaliex/build.gradle dist Usage:Deoptimize boot classes (The output will be in “o...
2018-07-24 13:50:03
662
1
原创 Android studio调试smali
使用工具android killer或者apktools:用于反编译apk包,得到smali代码 android studio:调试smali代码工具,或者使用idea,android studio就是在idea的基础上修改的 smalidea-0.05.zip: as插件,需要安装到android studio中 使用步骤as中导入smalidea插件反编译apk为sm...
2018-06-15 10:34:24
901
原创 刷入第三方Recovery系统TWRP
我们需要预先准备两个文件,分别是SuperSU与TWRP:supersu权限管理工具TWRP 辅助刷机的Recovery系统Supersu下载页Twrp下载页 在Devices根据自己型号,解锁对应的版本,点进去下最新的。准备好上面两个文件后,我们需要把它们分别放置到合适的位置: - SuperSU下载好后将它放到手机的根目录下即可,只要能在后面的刷机中通过目录方便定位到就行。...
2018-06-15 10:33:35
29835
原创 apktool解包和打包apk
下载apktool工具解包 apktool d xxx.apk -f 或者 java -jar apktools.jar decode xxx.apk植入代码 修改smali代码重新打包 apktool b xxx -o xxx-new.apk生成keystore keytool -genkey -alias xiabo -keyalg RSA -validity ...
2018-06-15 10:32:27
5598
原创 Android功耗分析
系统功耗跟踪功耗分析doze模式一直处于关闭状态doze模式开启状态功耗优化参考系统功耗跟踪使用方法,搜集日志adb shell dumpsys batterystats --reset// 运行...adb bugreport bugreport.zip导入Battery Historian分析 采集时间从前一天晚上十点到当天...
2018-05-10 13:44:06
5484
1
原创 ida调试方法与快捷键
ida调试:1:先将android_server push到手机 ,如果手机没有root,需要root才能在android studio中看到进程,可以用工具./setprops ro.debuggable 1修改为debug 2:打开调试应用并等待attach: adb shell am start -D -N com.asobimo.aurcusonline.ww/com.asobim...
2018-05-10 11:51:09
5704
原创 Android Camer框架
Camera框架Camera拍照流程拍照采用ImageReader来作为中介保存图片例子参考android-Camera2Basic 首先是创建ImageReaderstatic void ImageReader_init(JNIEnv* env, jobject thiz, jobject weakThiz, j...
2018-05-10 09:39:32
543
4
原创 Android Binder理解
在之所以需要进程通讯,内核空间的地址空间是所有进程共享的,但是用户空间使用的是虚拟地址空间(都有4GB空间),不能共享,因此需要类似于binder这样的驱动,让数据在内核中逛一圈Binder框架定义了四个角色:Server,Client,ServiceManager(以后简称SMgr)以及Binder驱动。其中Server,Client,SMgr运行于用户空间,驱动运行于内核空间。这四个角色的...
2018-05-09 20:05:56
269
原创 Android图像实例SampleWindow
# 简单的window显示 这个例子是一个简单的window显示,仅仅是将一个window加入了WMS并显示,由于没有AMS参与管理栈(实际上根本没有用AMS),因此在切换的时候这个简单的window不会消失 - 这个例子中简单明了的展示出了以下几处重要的操作: - window的add:添加WindowState - window的relayout: windiow的大小...
2018-05-09 20:04:48
489
原创 ActivityManagerService流程
Activity启动流程目的:理清activity的生命周期管理与AMS之间的关系一、理清activity的生命周期管理与AMS之间的关系1、Launcher通知AMS启动某个activity:Launcher中:应用程序中开启一个activity通过startActivitySafely()—->startActivity(),如果是程序内部启动那么直接...
2018-05-09 20:03:53
372
原创 InputManagerService
Input框架每增加一个WindowState.java,WMS都会通过registerInputChannel向InputDispatcher注册一个connection,这个connection用于后续event查找当前的触摸位置属于哪一个windowevent 主要通过两种途径返回到framework1、key发往PhoneWindowManager一路通过In...
2018-05-09 20:03:18
548
原创 lowmemorykiller内核回收机制注册、回调
LMK分为三个进程 - AMS 中设置lmk的6个内存阈值,以及更新每个进程/线程的adj值applyOomAdjLocked - lmkd是个单独的进程,socket监听,AMS发来的请求,更新内核的参数 - lowmemorykiller在内核中注册shrinker,利用内核的内存回收机制,根据lmkd中设置的参数执行lmk,先杀6个阈值中最大的(当内存低于80640个page时(3...
2018-05-09 20:02:31
361
原创 Android Native Framework gdb调试工具
脚本使用方法gdb_native.sh 228 adb1gdb_native.sh 228 其中228代表要调试进程的pid,必须指定;adb1 指定你想使用的adb工具,也可以不指定adb。#!/bin/bash PROJECT_ROOT=$(dirname $_) #set -x BIN_BIT=64 # BIN_BIT=64 when bin is 64...
2018-05-09 20:01:51
403
原创 PackageManagerService流程
PMS安装应用程序流程一、启动时安装1、查看PMS的功能与启动过程,首先PMS是在systemserver中启动的。之后分为两大部分启动1)恢复之前的引用安装信息:在main中new,开始调用readLP()恢复上一次引用程序安装信息(读取/data/system/packages.xml文件)—-> ScanDirLP()扫描指定目录—->readPackage...
2018-05-09 20:01:10
397
原创 Android Graphics Framework
Android系统图形框架Android系统图形框架由下往上主要的包括HAL(HWComposer和Gralloc两个moudle),SurfaceFlinger(BufferQueue的消费者),WindowManagerService(窗口管理者),View(BufferQueue的生产者)四大模块。 - HAL: 包括HWComposer和Gralloc两个moudle,Android...
2018-05-09 19:58:09
1219
原创 七、Android数据链接更新路由表
数据链接响应sp<RILRequest> RIL::processSolicited(const Parcel& p) { switch (rr->mRequest) { case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); brea
2016-12-20 18:45:43
6704
1
原创 五、 数据业务APN参数的开机默认使能
在DcTracker的创建及准备工作中,initApnContexts()将初始化好当前系统支持的ApnContexts类型,但是这些APN参数默认都是没有被Enable的,只有当APN被Enable之后,该APN才可以被使用,下面我们就来看如何将一个APN参数激活protected void initApnContexts() { // Load device network attrib
2016-12-20 18:23:38
4246
原创 四、 Android 数据业务APN参数的创建
在前两节简单介绍了连接管理的大致框架,数据链接的准备工作,包括APN的初始化与默认APN使能,DcTracker的构造,包括各种事件的注册等工作。但是数据链接的打开不止是只有用户主动去打开,Android可以提供数据业务的对象主要有,移动数据网络、WIFI、蓝牙、网线等,这些连接本身都可以独立使用,但是对于用户来说,每一时刻又最多只能使用一种方式接入网络,那么当这些功能同时打开时,比如即使用户打开了
2016-12-20 18:18:48
1684
原创 三、Android 网络评分机制
在前两节简单介绍了连接管理的大致框架,数据链接的准备工作,包括APN的初始化与默认APN使能,DcTracker的构造,包括各种事件的注册等工作。但是数据链接的打开不止是只有用户主动去打开,Android可以提供数据业务的对象主要有,移动数据网络、WIFI、蓝牙、网线等,这些连接本身都可以独立使用,但是对于用户来说,每一时刻又最多只能使用一种方式接入网络,那么当这些功能同时打开时,比如即使用户打开了
2016-12-20 18:15:03
7176
原创 二、Android 数据链接的动态分析
经过前面这些过程,网络连接所需要的条件就全部准备就绪,接下来就是等待网络接入 把网络接入过程简单分为三个阶段 触发阶段 —-该阶段是由各种不同事件触发的,比如SIM载入完毕、PS域Attach成功、通话结束、APN改变等,该阶段的最终都是要调用setupDataOnConnectableApns()方法; 准备连接阶段 —-该阶段是指,在DcTracker收到建立连接的请求之后,需要进行一
2016-12-20 17:17:23
2326
原创 一、Android DcTracker的创建及准备工作
DcTracker是在每个Phone构造的时候创建的,DcTrackerBase是DcTracker,他们的核心都是Handler。@GSMPhone.java public GSMPhone (Context context, CommandsInterface ci, PhoneNotifier notifier, boolean unitTestMode) { //创建DcTr
2016-12-20 17:01:07
2635
原创 Linux多线程服务器-门禁打卡系统
源码地址 系统采用一个服务器+两种客户端(网页+APP)OpenDoorMultiThreadServerOpenDoorMultiThreadServer 实验室门禁打卡系统 1、mydb是操作数据库Mysql类,表示每个人员身份的唯一标准是提前分配的不同的局域网IP 2、public是一些公用的函数,开门,字符串操作 3、log 是打印日志 4、OpenDoorMultiThrea
2015-09-09 10:52:39
2840
原创 C++ 异步回调
上一文中讲了C语言通过函数指针实现异步回调 本文继续讨论C++中实现回调,由于C++中有类,而C语言中的回调函数不能直接定义为成员函数,所以就很麻烦了,下面将讨论解决办法。 首先知道静态成员函数是全局的,也就是类的,因此推测可以用静态成员函数来实现回调机制。这里补充一下关于类中静态成员的知识#include <iostream>#include <stdio.h>#include <stdl
2015-08-30 13:16:57
18095
6
TCP网络调试助手
2014-07-19
VESA and Industry Standards and Guidelines for Computer Display Monitor Timing
2014-06-12
color space 颜色空间
2014-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人