- 博客(55)
- 资源 (17)
- 收藏
- 关注
原创 Android子线程更新TextView思考
目录起因起因需求测试过程中发现一个bug,表现为TextView内容从短文案更新成长文案后内容被截断,最终原因定位为子线程创建并更新了TextView的内容
2021-07-04 15:02:19 1639 2
原创 开发常用插件整理
Idea系列插件名功能SequenceDiagram生成时序图Translation翻译Chrome插件名功能Vimium浏览器使用vim快捷键Momentum美化新建的tab页iTerm2插件名功能zsh-autosuggestions命令自动补全zsh-syntax-highlighting语法高亮Alfred插件名功能...
2021-04-05 15:17:57 256 1
原创 Handler运行机制
Handler是一个很重要的知识点,为了方便记忆用一张图概括其运行流程其中在MessageQueue#next方法中还有些比较重要的细节
2021-02-28 23:06:59 201
原创 Retrofit浅析
目录介绍使用原理Retrofit源码官方文档介绍A type-safe HTTP client for Android and Java.官方给出的一句话描述:适用于Android和Java的类型安全的HTTP客户端。是Android工程中使用率很高的网络请求框架。使用官方给出的使用样例public final class SimpleService { public static final String API_URL = "https://api.github.com";
2021-01-02 00:06:11 435 2
原创 Https工作流程
流程图之前一直对https工作原理比较疑惑,后来网上看到一幅图,个人觉得描绘的很清楚,借用一张图,来源原理https可以用来防止中间人攻击,整个流程中包含了两种加密方式,对称加密和非对称加密,client给server传送密钥使用的是非对称加密,即4->5的过程;双方正式传输数据使用的是对称加密,即6以后的过程。这两种加密的结合保证了传输的安全性,那么安全性是如何保证的?首先了解几个前置条件:非对称加密中,使用公钥加密,私钥解密;私钥签名,公钥验证对称加密中,加解密使用相同密钥从流
2020-12-28 23:41:12 426 2
原创 LeakCanary浅析-内存泄漏对象检测
依赖分析./gradlew :app:dependencies --configuration compile
2020-11-22 23:07:54 448
原创 Android手机搭建Web环境-Linux Deploy
目录准备开搞Linux环境搭建安装BusyBox安装Linux Deploy准备已经Root的手机BusyBox安装包Linux Deploy安装包开搞Linux环境搭建安装BusyBoxBusyBox中包含许多Linux命令和工具,安装它的目的是对Android命令进行增强安装BusyBox.apk安装完成后打开应用点击install等待安装完成安装Linux Deploy安装...
2020-08-30 23:16:56 714
原创 某K字头运动软件逆向分析-课程精讲
本篇承接上一篇某K字头运动软件逆向分析-登录时非法的请求在跟随视频训练时,很可能有些细节自己注意不到,以至于一些动作不规范,练习新动作时看一下讲解还是有必要的。许多课程都是前面一两节可以免费观看讲解,后面的就需要开通会员才能查看了,比如我搜了个训练腹肌的课程,在课程内容中选择一节查看讲解此时会弹出一个弹窗,在非会员的情况下只能看到大图模式下的重复动作,点击左上角的“查看精讲”按钮会跳转到一个h5页面,精讲内容列表中只有前两节是可以免费试看的,后边内容都是加锁的。adb命令查看下页
2020-08-02 15:41:48 573
原创 某K字头运动软件逆向分析-登录时非法的请求
最近重新燃起了运动的热情,经常使用到一款软件,里面有些内容需要付费观看,所以决定给它一些特殊的关爱。重新打包是避不开的,现在大多app都会做防护,所以决定什么都不做只是反编译重打包试下,果然重打包之后登录不了。。。我这里使用手机号+验证码的方式进行登录接口请求分析将apk反编译之后再重签名打包后,发现登录时会提示“非法的请求”,抓包发现登录接口返回码400这种情况应该是服务端对请求做了校验,需要对请求参数进行分析。这里使用的是手机号登录,请求body是包含手机号、验证码在内
2020-07-19 23:32:39 747
原创 Frida使用方法
代码模板import fridaimport sysdef on_message(message, data): print(message)dev = frida.get_remote_device()# 需要hook的应用包名session = dev.attach('com.gotokeep.keep')jscode = """Java.perform(function () { // hook的类 var b0 = Java.use('l.q.a.y.p.
2020-07-19 19:06:29 2534
原创 Frida环境搭建
目录python环境pc端安装frida手机端安装检查frida-server是否启动成功端口映射运行测试python环境官网下载安装即可https://www.python.org/downloads/pc端安装frida根据安装的python选择使用pip或者pip3pip3 install fridapip3 install frida-tools安装时遇到两个问题1、Using legacy setup.py install for frida, since package ‘wh
2020-07-18 22:16:51 2039
原创 文字全屏轮播效果实现
刷短视频时看到一个全屏文字滚动播放的效果,如图想了下,其实效果不难实现,沉浸式+TextView跑马灯效果即可实现基础版1、设置沉浸式这里采用了给Activity设置style的方式,res/values/styles.xml中<resources> ... <style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item
2020-06-28 00:26:20 1334
原创 侦探系列-照片隐藏信息提取
有没有想过一张照片中除了能看到的图像,还隐藏了多少信息?一、相关信息了解怀着好奇心开启对图片信息的探索之旅。首先了解到的一个名词EXIF,引用维基百科上的解释可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的文件格式,可以记录数码照片的属性信息和拍摄数据。其中包含的信息,同样来自维基百科...
2020-04-19 21:06:42 4037
原创 MessageQueue之IdleHandler
IdleHandler是什么?IdleHandler是包含在MessageQueue类中的一个接口,内部只包含一个方法,在消息队列空闲(没有消息或者第一个需要处理的消息在将来执行)时被回调publicstaticinterfaceIdleHandler{//当消息队列空闲时会被回调,返回值表示是否会被重复执行//返回true,会在mIdleHandlers...
2020-01-05 19:37:52 582 1
原创 Android Profiler之CPU
Profiler是Android Studio中提供的一个分析工具,它提供了四个维度的分析,CPU(函数调用)、MEMORY(内存分配)、NETWORK(网络流量)、ENERGY(耗电量)。这一篇根据官方的介绍针对CPU维度提供的分析功能进行下整理。CPU维度下提供了四种分析方式,Call Chart、Flame Chart、Top Down、Bottom Up。Call Chart(调...
2020-01-05 19:35:22 956 1
原创 MessageQueue之同步屏障
查看MessageQueue源码时看到一个没有没有听过的概念“同步屏障”,这个是什么概念?带着疑问一探究竟。MessageQueue有这么一个方法public int postSyncBarrier() { return postSyncBarrier(SystemClock.uptimeMillis());}private int postSyncBarrier(lo...
2019-12-02 00:37:33 665
原创 给android手机划代
目录DeviceInfo获取硬件信息的逻辑1、CPU核心数2、CPU频率信息获取3、获取总RAMYearClass的逻辑1、2016年的分类方式(主要使用的划分年代方式)2、2014年的分类方式(兜底策略)在学习性能优化相关的知识时看到一个比较有意思的开源项目,Facebook开源的device-year-class(https://github.com/faceb...
2019-11-24 10:58:28 380
原创 RecyclerView实现Gallery效果
概述最近看到一款常用的app上头图的滑动效果比较不错,于是想自己动手实现下效果预览先上图后说话实现这里我使用RecyclerView实现这个效果,其中重点和难点在于实现分页效果和滑动动画使用RecyclerView代码如下(从百度随意找了几张图片作为填充数据,如果涉及版权问题请联系删除):public class MainActivity extends AppCompatActi...
2019-05-02 11:15:42 1662
原创 TextView设置文字点击半透明
前一段接到一个需求,要求一个按钮在点击时背景颜色不变,文字半透明效果这里使用selector进行实现:layout<TextView android:id="@+id/tex_pressed_translucent" android:layout_width="50dp" android:layout_height="50dp" ...
2019-02-17 22:06:38 747
原创 SpannableString字体大小自适应
背景最近修复一个bug时遇到一个问题, TextView中显示的是SpannableString, 原有项目中自定义TextView是通过二分法找到一个合适的TextView能将字体完全展示的TextSize, 但是通过AbsoluteSizeSpan给SpannableString设置的字体大小是不受到TextView的textSize属性影响的,所以SpannableString的自适应需要...
2019-01-01 22:01:45 1708
原创 Activity和Fragment的生命周期
不包含销毁重建1、打开activity12、跳转其它activity23、从activity2返回activity14、activity1点击home键5、点击home键后重新进入activity16、activity1点击返回键包含销毁重建1、打开activity1同上正常情况2、跳转到activity23、从activity2返回activity14、点...
2018-10-20 18:48:31 410
原创 泛型PECS原则理解
概念PECS即 Producer extends Consumer super从集合中取元素, 使用&lt;? extends T&gt;通配符向集合中放元素, 使用&lt;? super T&gt;通配符问题这里仍然使用网上常见的一个例子,Fruit、Apple、RedApple的例子继承关系为:RedApple extends AppleApple extends Fruit...
2018-10-12 20:14:45 3607
原创 LayoutInflater的inflate方法使用
Android动态添加布局时经常会用到LayoutInflater的inflate(int resource, ViewGroup root, boolean attachToRoot) 方法,但是inflate方法的后两个参数很让我疑惑。 官方文档的解释如下: 翻译成中文的大概意思是: 如果attachToRoot为true,可选视图是生成的层次结构的父级,如果attachToRoo...
2018-07-20 13:34:42 3686
原创 charles抓取https
电脑端设置代理端口 手机端设置代理首先需要保证手机和电脑处于同一局域网在设置中打开wlan-》修改已经连接的网络-》打开手动代理-》设置代理服务器主机名和端口号(主机名为安装charles的电脑ip,端口8888)配置好后在手机端打开网页,charles应该已经能抓到http包了,但是https包还是加密状态设置ssl代理 *是通配符,表示匹配所有地址...
2018-07-18 16:17:48 1632
原创 给SeekBar的thumb设置点击事件
昨天朋友问我了解不了解SeekBar,他说想实现两个功能:禁止SeekBar手动滑动thumb 给SeekBar的thumb设置点击事件,但是没有现成的方法当时我还这没研究过SeekBar(说实话当时我还不了解SeekBar和thumb到底是什么。。。随手查了下才知道是SeekBar是进度条,thumb就是进度条上的滑块),所以决定动手实现下。SeekBar的使用由于没有使用...
2018-07-11 00:02:57 3144
原创 TextView显示文字上下有空白
如图背景为黄色的TextView中的字母到上下边都有一定距离 空白是什么经过一番搜索发现文字的绘制是以一个叫做基线(baseLine)的位置为准的,而不是以View的左上角为准文字的位置是受到几个值影响的,涉及到Paint.FontMetrics这个静态内部类,几个变量代表的内容也不是坐标轴上点的位置,而是以baseLine为准在Y轴方向的距离public static c...
2018-07-05 18:53:49 2290
原创 apk反编译
使用工具反编译、回编译apktool.jar签名platform.pk8platform.x509.pemsignapk.jar 以上工具后面会给出下载链接反编译java -jar apktool.jar d -f xxx.apk -o out该命令会将apk反编译,结果输出到out目录回编译java -jar apktool.jar ...
2018-06-20 13:24:45 262
原创 Android控制台常用命令
adb命令adb所在路径Android\sdk\platform-tools通过包名产看apk安装路径 adb shell pm path [packagename]aapt命令aapt所在路径Android\sdk\build-tools\xx.x.x查看未安装apk的包名等信息 aapt dump badging [apk路径]...
2018-06-17 10:42:35 4129 1
原创 Android重写ImageView实现图片镜像效果
前两天朋友问我一个问题,如何实现从手机系统相册加载一张图片,实现拖拽、缩放功能并且能镜像显示,当时我的第一反应是继承ImageView,重写onDraw方法,下面就按照这个思路实现下需求。从系统相册选择图片打开系统相册采用隐式Intent,因为调用者需要接受返回的结果,所以使用startActivityForResult启动Activity,打开系统相册核心代码如下public fin...
2018-06-16 13:15:26 4654 3
原创 Android Studio常用快捷键(windows)
代码查看Ctrl+F 文件中查找Ctrl+R 文件中替换Ctrl+E 最近打开过的文件Ctrl+N 打开类Ctrl+Shift+N 打开文件Ctrl+U 查看一个类的父类Ctrl+B 查看变量的声明Ctrl+Alt+H 查看方法的调用Ctrl+Shift+I 查看方法的实现Ctrl+H 显示类结构图Alt+1 快速打开或隐藏工程面板Ctrl+Shift+Alt+N 查找...
2018-05-29 13:15:48 206
原创 Xposed插件开发环境配置
准备已获得root权限的手机Xposed Installer安装运行环境手机上安装Xposed Installer后打开,框架-》安装/更新-》重启配置开发环境android Studio新建android项目AndroidManifest文件中写入配置信息<meta-data android:name="xposeddescription...
2018-05-28 19:21:02 1320
原创 让apk变可调试
前言最近学习android逆向发现已经发布的应用基本都不能直接调试,于是总结一下目前使用过的让apk变成可调试的方法。方法1、修改AndroidManifest中debuggable属性反编译apk后查看AndroidManifest文件中application节点属性如下: 其中没有debuggable属性,所以需要加上android:debuggable=”true”...
2018-05-23 20:33:50 11975
原创 ARM处理器寻址方式
ARM处理器支持九种寻址方式,分别是:立即寻址、寄存器寻址、寄存器间接寻址、寄存器移位寻址、基址变址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址立即寻址例如:MOV R0, #1234 作用是将十进制数1234赋值给R0,运行结果是R0 = 1234, 立即数以“#”作为前缀,十六进制数以“0x”开头,如#0x12。寄存器寻址例如:ADD R0, R1, R2 作用是将R...
2018-05-22 18:21:41 1012
原创 付费水果忍者破解
前言闲着无聊手机上下载了一款水果忍者游戏玩玩,正在玩的时候突然弹出了付费对话框,刚开始我还纳闷怎么没广告,这么良心,原来是在这里等着呢,如下图: 作为一个逆向初学者突然有一股冲动,能不能发挥专业技能解决下问题分析总体思路很明显改游戏是通过弹出dialog阻止用户进行游戏,关掉对话框游戏也会随之退出,所以我们的目标就是阻止dialog弹出从界面定位用jeb查看a...
2018-05-22 14:28:53 606
原创 RecyclerView item多布局显示新姿势
问题RecyclerView正在逐渐取代ListView,在使用RecyclerView中遇到了一个问题,需要在RecyclerView的固定位置设置不同布局的特殊Item,其中最大的问题在于不同类型data和View布局如何进行正确对应。思路将需要显示的不同类型数据都放到同一个容器中显示时根据不同的类型加载不同的布局实现在使用RecyclerView时最重要的一...
2018-04-30 11:25:57 1712 1
原创 Android studio创建java项目
Android studio创建java项目一、前言以前用习惯了eclipse写java项目和android项目,后来因为主攻Android,使用的ide便从eclipse逐渐转移到了Android studio(下面简称as),于是乎很长一段时间内一直使用as做开发,直到有一天需要建立一个java项目却发现电脑中没有eclipse,既然Android是用java开发的,我想as作为A...
2018-02-22 17:44:41 2096
原创 基数排序
基数排序一、介绍1、概念基数排序(英语:Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。2、基本思想从低位关键码起,按关键码的不同值将序列中的记录“分配”到RADIX个队列(组)中,然后再“收集”,称之为一趟排序,第一趟之后,排序表中的记录已按最低位关键码有序,再次对最低位关键码进行一趟“分配”和“收集”如此直到对最高位关键码进行一趟“
2017-08-13 17:47:35 578
原创 java包装类相关知识总结
java包装类相关知识总结1、什么是包装类封装了操作对应基本数据类型方法的类2、装箱和拆箱装箱:将基本数据类型转换成对应的包装类 public static Integer valueOf(int i) 拆箱:将包装类转化成对应的基本数据类型 public int intValue()int、Integer、String三者之间的转换关系图: 3、相同类型包装类变量之间的比较Boolean bo
2017-07-19 10:59:16 415
Genymotion兼容包(内部包含6.0及以下三个兼容包)
2018-01-30
DiskLruCache
2017-06-14
android属性动画效果的实现之ObjectAnimator
2017-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人