自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】一、FFmpeg so库编译

转自:https://juejin.im/post/5e130df55188253a8b42ebac 目录 一、Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框架 3,音视频播放:音视频同步 4,音视频解封和封装:生成一个MP4 二、使用Open...

2020-04-17 21:57:42 72 0

原创 安卓动态调试七种武器之离别钩 – Hooking(上)

作者:蒸米 地址:http://drops.wooyun.org/tips/9300 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的。另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调...

2020-04-17 21:53:08 24 0

转载 mediacodec和OpenGLES纹理共享方案

1、OpenGL生成纹理 2、纹理绑定到SurfaceTexture上 3、用SurfaceTexture做参数创建Surface 4、MediaCodec解码的视频就往Surface发送,就显示出画面了 直接上代码 vertex_shader.glsl attribute vec4...

2019-11-11 20:58:58 301 0

原创 SO文件包大小优化

1、编译参数--ffunction-sections,-fdata-sections,链接参数-Wl,--gc-sections, --ffunction-sections和-fdata-sections会把符号编译成单独的section,--gc-sections在链接的时候会去掉用不到...

2019-05-23 10:10:29 1369 0

原创 C++内存布局详解

C++类中有两种成员变量,三种成员函数: 其中对象的内存布局中只包含非静态的成员变量,静态的成员变量是在全局数据区。 C++中类的继承类型,以及对应的类实例内存布局如下图: 1. 单继承 继承情况如下: 对应的对象内存布局: 2. 一般多继承(非菱形) 继承情况如下:...

2018-01-28 13:04:07 290 0

原创 FLV文件格式详解

具体格式可以参看 flv spec。 下面主要介绍上图中的Tag里面的字段,每个Tag由两部分组成:Tag Header和Tag Data。 1. Tag Header 名称 长度 介绍 Tag类型 1 bytes 8:音频 9:视频 18:meta 其他:保留 数据区...

2017-12-29 17:34:18 3018 0

转载 git tag使用方法

原文地址:http://blog.sina.com.cn/s/blog_157abb48f0102wjcw.html 标签管理 发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来...

2017-10-21 16:12:03 2477 0

转载 Android shell获取和模拟点击事件

1. 获取点击屏幕的坐标位置 通过 adb shell getevent 命令获得点击屏幕的位置坐标的方法: 第一步:计算比例 首先通过命令 adb shell getevent -p | grep -e "0035" -e "00...

2017-04-05 16:13:50 7071 2

转载 Git永久删除commit

工作中有一次不小心提交了不该提交的代码到GIT上,而且在发现之前又提交了几个commit,现在想在GIT服务器上永久删除这个commit,具体步骤记录如下。     假设当前分支为master,当前的commit情况如下,现在需要删除commit_id_2和commit_id_4...

2017-03-21 22:25:03 4494 0

原创 Linux格式化Log宏

#define PRINTF_DEBUG(args)  {\     struct tm *__now; \     struct timeb __tb; \     char __datestr[16];\     char __timestr[16];\     char __mss[4];\...

2017-03-16 22:36:53 569 0

转载 git命令大全图

2017-03-15 12:12:00 564 0

原创 Android ELF文件编译之符号隐藏

编译系统是一套非常强大的系统,有众多的编译参数,但是大部分人只听过很少几个,希望以后能有时间好好看一下相关的资料研究清楚。 今天来介绍Android下面NDK编译so时,怎样实现符号隐藏,gcc默认的情况下是将所有符号都导出的,为了安全启见可以将符号隐藏,可以给破解带来很大的麻烦,另外还可以有效减...

2017-02-21 14:59:49 1670 0

转载 Git远程分支和refs文件详解

原文地址:http://blog.csdn.net/forever_wind/article/details/37506389 最近同时同步博客到github和gitcafe上,遇到一些问题,我们分如下几个方面来分析一下: 推送远程分支到同一个服务器 比如首先建立git服务器,顺便clone...

2017-01-13 11:03:34 2698 0

转载 Android SO 加壳(加密)与脱壳思路

原帖地址:http://blog.csdn.net/jltxgcy/article/details/52205210 0x01 常见的Android SO加壳(加密)思路     1.1 破坏Elf Header     将Elf32_Ehdr 中的e_shoff, ...

2016-12-21 16:25:07 3931 0

原创 花指令文章

http://blog.csdn.net/qincode/article/details/16116091 http://blog.csdn.net/yangbostar/article/details/6194133 http://www.cnblogs.com/hrhguanli/p/...

2016-12-19 19:18:41 521 0

原创 Android C语言_init函数和constructor属性及.init/.init_array节探索

了解C语言的程序猿都知道有两种方法可以让一部分代码在so或可执行文件被加载的时候先于其它任何函数执行,一种是定义一个void _init(void)函数,另一种是在函数后面声明constructor属性。那么这两种方式在执行的时候有什么区别吗?先后顺序呢?了解ELF文件格式的人又会问它们在文件中的...

2016-12-13 11:42:51 2901 0

原创 ELF文件分析中的重要工具

1. file 用于查看文件的简单信息 BriansdeMacBook-Pro:armeabi-v7a brian$ file libcheckcert.so libcheckcert.so: ELF 32-bit LSB shared object, ARM, version 1 (SYS...

2016-12-09 17:02:37 1950 0

转载 LeetCode 372. Super Pow解题思路(超详细)

这道题实际上是考察快速幂,所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模算法。 我们先从简单的例子入手:求。 算法1.首先直接地来设计这个算法: int a...

2016-11-18 19:57:31 3050 1

原创 Android内核之运行自定义内核

获取Android内核的途径有两种,一种是从设备中提取内核,可以看我另外一篇文章;另一种方式是从官网去下载内核源码,编译然后刷到手机里。这里我们讲第二种方式。

2016-11-15 19:10:42 2606 0

原创 Mac下AOSP编译和刷机过程中的各种坑

常见的几个坑我这里就不记录了,大家可以Google,这里就记录一个我搞了半天的坑,是有关JDK的。这里我使用的AOSP是Android4.4。 最开始我是使用jdk1.8版本编译,出现下面错误: host Java: doclava (out/host/common/obj/JAVA_LIBRAR...

2016-11-14 15:34:47 1635 0

原创 Android内核之内核提取

Android设备启动的时候有两种模式:第一种是正常启动,使用boot分区;第二种是启动恢复过程,使用recovery分区。这两种分区的结构是相同的,后面会介绍到。两者的区别顾名思义,这里不多说了。这两个分区的镜像文件分别对应boot.img和recovery.img,我们可以从很多渠道去获取到,...

2016-11-10 11:54:12 7257 0

转载 Android系统属性SystemProperty分析

原帖地址:http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html 一 System Property   代码中大量存在:SystemProperties.set()/SystemProperties.g...

2016-10-25 10:29:03 491 0

原创 关于setpropex工具使用的几点问题记录

如果需要修改Android的ro.类型的系统属性,大概有两种方法:一种是需要解锁boot loader,定制自己的boot.img文件;另一种是用setpropex工具。 两种方法都需要root权限,第一种方法比较复杂,但好处是可以永久性的修改属性,第二种方法很简单,但是只是暂时的,系统重启就失效...

2016-10-24 18:57:42 1634 1

原创 Android系统/proc目录最全解析

1. /proc目录 首先来介绍一下/proc目录,它是一个虚拟的目录,其下面的文件和目录也都是虚拟的,不占用实际的存储空间,而是存在于系统内存中。proc以文件系统的方式为访问系统内核的操作提供接口,它是动态从系统内核中读出所需信息的。 /proc/cmdline:显示内核启动的命令行。/p...

2016-10-19 18:03:13 8194 3

转载 Android实用命令汇总——ps

ps进程命令 在adb shell终端,输入 ps,可查看手机当前所有的进程状态,其中ps的英文全称是Process Status。 1. ps命令参数 -t 显示进程里的所有子线程-c 显示进程耗费的CPU时间-p 显示进程优先级、nice值、调度策略-P 显示进程,通常是bg(后台进程...

2016-10-19 15:38:41 2808 0

转载 Android实用命令汇总——am

一、概述 作为一名开发者,相信对adb指令一定不会陌生。那么在手机连接adb后,可通过am命令做很多操作: (1) 拨打电话10086 adb shell am start -a android.intent.action.CALL -d tel:10086 (2) 打开网站www.g...

2016-10-19 11:36:17 1021 0

转载 Android实用命令汇总——pm

一、Pm命令 命令格式: pm command> 命令列表: 命令 功能 实现方法 list packages 列举app包信息 PMS.getInstalledPackages install [options] > 安装应用 PMS....

2016-10-19 11:35:42 641 1

转载 Android实用命令汇总——dumpsys

dumpsys命令功能很强大,能dump系统服务的各种状态,非常有必要熟悉该命令的用法以及含义。 一、 dumpsys命令 1.1 服务列表 不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前手机所支持的dump服务,先进入adb shell,再执行如下命令:dumps...

2016-10-19 11:13:54 450 0

转载 Android进程总结

在网上看到一篇比较全的Android进程整理文章,这里转载一下,原帖地址:http://gityuan.com/2015/12/19/android-process-category/ 一、概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是...

2016-10-19 11:03:00 747 0

原创 MacOS安装并使用Drozer总结

Drozer官网:https://labs.mwrinfosecurity.com/tools/drozer/ 1. 首先下载Drozer源码并编译安装: git clone https://github.com/mwrlabs/drozer/ cd drozer python set...

2016-10-09 17:26:52 2707 3

原创 Android应用安全相关工具总结

1. AndroGuard,基于python的逆向工程和分析框架,主要用于静态分析Android应用。 2. apktool,APK解包和打包相关工具。 3. dexdump,Android SDK中自带的解析dex文件的工具。 4. andbug,基于Java调试连线协议(JDWP)的Andro...

2016-10-09 14:57:38 284 0

转载 Android LLVM-Obfuscator C/C++ 混淆编译的深入研究

一、 LLVM是什么? (1)LLVM是lowlevel virtual machine的简称,是一个编译器框架。苹果公司的Xcode 4.0之后用的都是LLVM编译器。 (2)LLVM 诞生于2003.10伊利诺伊大学香槟分校,创始人ChrisLattner,现任苹果公司『开发者工具』部门的主...

2016-09-28 15:10:04 1875 0

原创 图解Dex文件结构及解析要点

Dex文件格式相当简单,看下图: 上图是我从数据结构的角度画出来的Dex文件格式,每个数据结构在android源码dalvik/libdex目录下都有定义,关于上图有几点需要注意: 1. 图中所有以(encoded)标注的数据结构在文件中对应的数据都是经过Leb128编码的,详细的可以自己...

2016-09-07 19:41:20 2595 0

转载 APK瘦身记,如何实现高达53%的压缩效果

原帖:http://bbs.pediy.com/showthread.php?t=209029&highlight=apk+%E7%98%A6%E8%BA%AB+%E8%BA%AB 1、我是怎么思考这件事情的 APK是Android系统安装包的文件格式,关于这个话题其实是一个老...

2016-08-23 19:00:08 3946 0

转载 10条命令,一分钟分析Linux性能问题

当你登录到一台存在性能问题的Linux服务器上时,在头一分钟,你会检查什么? 我们看看Netflix的性能工程师是怎么做的。 Netflix大量使用EC2 Linux服务器,很多时候是用一些较为高层的工具做云或实例层次的分析。不过有时仍然需要登录到某个实例上,运行一些标准的Linu...

2016-08-22 16:16:26 591 0

转载 我脑海中的优秀技术团队

文中的“我”,其实不是一个单纯的角色,它可能会包含多层含义,不管是我作为一个团队的管理者,还是我作为一名技术团队的普通员工,都会对自己的团队有一些期许,一些定义,一些要求,而这就是今天我们要谈论的话题。希望这些思考能够对管理者或者求职者有些帮助。 团队的首先组成就是人,那我理想中的技术团队中的人...

2016-08-22 15:16:13 399 0

原创 Arm汇编学习笔记(九)——高效的分支代码及非对齐数据的访问

分支代码switch(x)在我们平常的代码中是非常常见的,而且也是比较耗时的操作,如果优化以后可以对代码的效率有很大提升。 1. 对于0 此种情况N不能太大,对于下面C代码: int ref_switch(int x) { switch (x) { c...

2016-08-19 16:58:19 1236 2

原创 Arm汇编学习笔记(八)——寄存器的使用

在程序中,我们可以使用16个通用寄存器中的14个来保存自己的数据,r13和r15分别是sp和pc寄存器,我们无法使用。 ATPCS规定,栈指针应该是8字节对齐。 ATPCS规定,被调用函数必须保证在执行前和执行后r4-r11的内容不变,即被调用函数必须在开始保存r4-r...

2016-08-18 17:23:20 2226 0

原创 Arm汇编学习笔记(七)——ARM9五级流水及流水线互锁

本文主要是通过分析五级流水及流水线互锁的原理,从而可以编写出更加高效的汇编代码。 1. ARM9五级流水线 ARM7采用的是典型的三级流水线结构,包括取指、译码和执行三个部分。其中执行单元完成了大量的工作,包括与操作数相关的寄存器和存储器读写操作、ALU操作及相关器件之间的数据传输。这三个阶段...

2016-08-17 17:26:06 6671 2

原创 Arm汇编学习笔记(六)——函数调用栈空间以及fp寄存器

Arm上函数调用的规则在ARM System Developer's Guide文档中的ATPCS部分有详细的定义,这里主要通过函数调用过程中函数栈的情况来说明fp和sp等寄存器的作用。有关ATPCS的详细内容可以去文档中看。 fp叫做frame pointer寄存器,即栈帧指针寄存...

2016-08-17 12:44:12 17514 2

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