自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YSoul的博客

专注技术分享!

  • 博客(32)
  • 收藏
  • 关注

原创 个人介绍

我的微信公众号 我的微信号

2018-08-22 18:01:12 2660

原创 在library中使用okhttp或greenDao,依赖library的app模块报错:cannot access okhttp3.call.

问题描述:在公共library模块中引用okhttpimplementation 'com.squareup.okhttp3:okhttp:3.12.1'再在app模块中依赖library,此时app使用okhttp会报错:cannot access okhttp3.call解决方法:使用api替换implementation。(Use api instead of implemen...

2019-01-05 15:34:48 2085 1

原创 Xposed拦截抽象方法

XposeHelpers提供了一些辅助方法,我们可以使用findAndHookXXX:查找并Hook方法与构造方法。而且只能Hook方法与构造方法,不能Hook接口和抽象方法。如果直接拦截抽象方法,会出现下列错误:1、直接使用findAndHookMethod拦截抽象方法//unregisterBiz方法为LongLinkSyncService的抽象方法XposedHelpers.findA...

2018-12-25 21:43:13 5092 4

原创 Xposed模拟操作第三方应用的控件

使用Xposed设置第三方应用的输入框的值;使用Xposed点击第三方应用的按钮;使用Xposed操作密码键盘输入密码;一、使用Xposed为设置第三方应用的输入框的值思路:找到EditText对象,再为EditText设置值即可;第三方应用控件查找EditText源码:public class WithdrawActivity_ extends BaseActivity {...

2018-12-14 19:40:07 5707

原创 解决AndroidStudio编译时报错:org.gradle.api.ProjectConfigurationException;编译报错Read Time out

问题一: org.gradle.api.ProjectConfigurationException: A problem occurred configuring root project ‘app’.错误:编译报错Read Time out ,分析一: 1.看log是 下载jar包时候超时了,org.gradle.api.ProjectConfigurationException: A p...

2018-11-22 20:32:20 72583 29

转载 Android分包原理

如果App引用的库太多,方法数超过65536后无法编译。这是因为单个dex里面不能有超过65536个方法。为什么有最大的限制呢, 因为android会把每一个类的方法id检索起来,存在一个链表结构里面。但是这个链表的长度是用一个short类型来保存的, short占两个字节(保存-2的15次方到2的15次方-1,即-32768~32767),最大保存的数量就是65536。新版本的Android系统...

2018-11-17 16:24:00 1704

转载 android逆向之多dex(multiDex)文件apk的逆向

很多大厂的Android App因为业务量大,引用库多导致其apk包的中的类于方法剧增.这样就有可能出现因为方法数过多导致编译失败的情况.产生这个问题的主因是dex文件格式的限制.一个DEX文件中method个数采用使用原生类型short来索引文件中的方法,也就是4个字节共计最多表达65536个method,field/class的个数也均有此限制。对于DEX文件,则是将工程所需全部class文件...

2018-10-29 12:31:14 4069 2

原创 7、Lua 协同程序(coroutine)

1、什么是协同(coroutine)?Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。 协同是非常强大的功能,但是用起来也很复杂。线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。一个具有多个协同程序...

2018-08-27 17:53:58 249

原创 6、Lua 模块与包

1、Lua 模块与包模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua 的模块是==由变量、函数等==已知元素组成的 table,模块最终会返回一个table。 因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其...

2018-08-27 17:53:46 273

原创 5、Lua 迭代器

迭代器(iterator)是一种对象,它能够用来它可以遍历集合的每一个元素。在Lua中,通常将迭代其表示为函数。每调用一次函数,即返回集合中的“下一个”元素。每个迭代器都需要在每次成功调用之间保持一种状态,这样才能知道它所在的位置及如何步进到下一个位置。泛型 for 迭代器泛型 for 在自己内部保存迭代函数,实际上它保存三个值:迭代函数、状态常量、控制变量。泛型 for 迭...

2018-08-27 17:53:33 270

原创 4、Lua 表(table)和元表(Metatable)

一、Lua table(表) table 是 Lua 的一种数据结构,能容纳任何数据类型,如:数字、字典等。 Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。 Lua table 是不固定大小的,你可以根据自己需要进行扩容。Lua也是通过table来解决模块(module)、包(package)和对象(Object)...

2018-08-27 17:53:21 2395

原创 3、Lua 运算符、字符串、数组、table(表)

一、Lua 运算符1、算术运算符设定 A 的值为10,B 的值为 20:^ 乘幂 A^2 输出结果 100负号 -A 输出结果v -102、关系运算符 操作符 描述 ~= 不等于,检测两个值是否相等,相等返回 false,否则返回 true< (A ~= B) 为 true。3、其他运算符 操作符 描述...

2018-08-27 17:53:07 1064

原创 2、Lua 控制语句和函数

一、Lua 循环Lua 语言提供了以下几种循环处理方式: 循环类型 描述 while 循环 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。 for 循环 重复执行指定语句,重复次数可在 for 语句中控制。 Lua repeat…until 重复执行循环,直到 指定的条件为真时为止 循环嵌...

2018-08-27 17:52:52 204

原创 1、Lua 基础

Lua是属于引用类型的语言,Lua中一切皆引用。Lua中的任何数据类型的定义都是包含名字和内存两部分,名字都是指向内存的。一、Lua 基本语法1、单行注释两个减号是单行注释:–2、多行注释–[[ 多行注释 多行注释 –]]3、全局变量在默认情况下,变量总是认为是全局的。全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,...

2018-08-27 17:52:34 6772

原创 0、Lua语言理解

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放。Lua的核心思想是:一切皆引用 ,是一种引用型的语言。1、设计目的其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。2、Lua 特性轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。可扩展: Lua提供了非常易于使用的扩展接口...

2018-08-27 17:52:06 7133

原创 adb命令管理Linux 文件和目录

Linux的目录结构为树状结构,最顶级的目录为根目录 /。1、绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。2、相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法处理目录的常用命令ls: 列出目...

2018-08-27 15:13:02 9395

原创 Java反射与hook混用反射某支付的方法

反射某支付软件apk的方法 思路: 1、可以先取得某支付软件的classLoader,可以通过hook某支付软件的必须方法(如:LauncherActivity的attachBaseContext方法)来取得某支付软件classLoader; 2、取得某支付软件的classLoader,则可以查找某支付软件dex中的所有方法和变量,就反射某支付软件的方法和变量了;注意:...

2018-08-27 11:35:06 8138

转载 阿里系产品Xposed Hook检测机制原理分析

导语:在逆向分析android App过程中,我们时常用的用的Java层hook框架就是Xposed Hook框架了。一些应用程序厂商为了保护自家android App不被Xposed Hook框架给hook。于是想尽各种方法检测自己产品是否被Xposed Hook给Hook。笔者最近逆向分析阿里系的产品,发现阿里系的产品能够检测自否给Xposed Hook了。本文就带领给位一起看看官阿里系产...

2018-08-24 14:24:58 14585 1

转载 Android逆向之旅---破解某支付软件防Xposed等框架Hook功能检测机制

一、情景介绍最近想写几个某支付软件的插件,大家现在都知道现在插件大部分都是基于Xposed的hook功能,包括之前写了很多的某社交软件的插件,所以不多说就直接用Jadx打开支付软件之后然后找到想要hook的方法,可惜的是遇到这个错误:这个软件内部做了防止Xposed的hook功能检测,当我们写了对应了Xposed模块在打开app的时候就会出现这样的错误,其实吧这个错误网上之前有人写过分...

2018-08-24 14:16:50 17243 4

原创 常用adb 和 adb shell 命令

一、ADB命令(电脑上操作的命令)ADB常用命令:1. 查看设备: 查看当前连接的设备,adb devices2. 安装软件:将指定的apk文件安装到设备上adb install <apk文件路径>如: adb install com.sina.weibo 参数“-r”,它是更新安装的意思,参数 -s ,安装到sdcard. ...

2018-08-24 12:04:21 38042 10

原创 Android手机:破解锁屏密码

Android手机破解锁屏密码很简单,只需要升级为Root用户即可简单的破解。 升级root用户,安装一个Kingroot即可。破解步骤如下:手机连接电脑,使用adb shell命令进入ADB环境: 利用su命令获取root权限,获取成功会从”$”变成”#” 使用cd命令进入data/system目录 用ls -l命令查看查看当前目录的所有文件信息 上锁的手机可以看到...

2018-08-23 21:00:57 34700 6

原创 Java反射机制

一、Java反射机制概述Java放射机制是指在==运行状态==中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取信息及动态调用方法的功能成为Java的反射机制。二、反射的作用利用Java机制,在Java程序中可以动态的去调用一些protected甚至是private的方法或类,这样就可以在很大程度上满足一些特殊需求。...

2018-08-23 16:31:18 9654

原创 return new对象造成溢出内存

方法中返回的对象,一般不会造成内存溢出,但是一下情况就是刚好造成的内容溢出: 如果对象的引用刚好被单例所持有的话,JVM就不会回收该引用。1、创建对象Info info = new Info();new Info()的时候,会返回一个地址,并且将地址赋值给引用info,当这个引用被info持有的时候,java虚拟机会认为这个对象是有用的,不会回收。2、方法...

2018-08-23 10:51:00 8657

原创 Java IO输入输出及乱码问题

/** * 以二进制读出文件内容 * @param file * @return * @throws IOException */ private static byte[] readFileBytes(File file) throws IOException { byte[] arrayOfByte =...

2018-08-22 20:32:20 8071

原创 URL编码与解码原理

一、概述在开始讨论编码解码之前,首先来明确一下问题。 什么是application/x-www-form-urlencoded字符串? 答:它是一种编码类型。当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-urlencoded字符串。表单里提交时也是如此,当包含非西欧字符的字符串时,系统也会将这些字符转换成applicatio...

2018-08-22 20:20:16 12165

原创 Base64 的原理、实现及应用

一、Base64编码原理Base64编码是基于64个字符A-Z,a-z,0-9,+,/的编码方式,因为2的6次方正好为64,所以就用6bit就可以表示出64个字符,eg:000000对应A,000001对应B。BASE64 的编码原理:都是按字符串长度,以每 3 个 字符(1Byte=8bit)为一组,然后针对每组,首先获取每个字符的 ASCII 编码(字符’a’=97=01100001)...

2018-08-22 20:04:07 13373

原创 MD5算法的应用及原理

MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。MD5算法的使用不需要支付任何版权费用。MD5功能: 1. 输入任意长度的信息,经过处理,输出为128位的信息(数字指纹); 1. 不同的输入得到的不同的结果(唯一性); 1. 根据128位的输出结果不可能反推出输入的信息(不可逆); 一、Md5...

2018-08-22 19:55:58 11633

原创 AES和DES代码实现

DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法。AES已经变成目前对称加密中最流行算法之一;AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。package com.zyt;import java.io...

2018-08-22 19:53:12 7060

原创 Dalvik虚拟机、Java虚拟机与ART虚拟机

一、Java虚拟机1. Java的是Java字节码。传统的Java程序经过编译,生成Java字节码保存在class文件中,Java虚拟机通过解码class文件中的内容来运行程序。2. Java虚拟机基于栈架构。程序在运行时虚拟机需要频繁的从栈上读取或写入数据,这个过程需要更多的指令分派与内存访问次数,会耗费不少CPU时间。二、Dalvik虚拟机(Android 4....

2018-08-22 19:50:33 7227

原创 Android 中使用 SQLite 数据库

一、Android 中SQLite 介绍Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。由于JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,会消耗太多的系统资源,对于手机这种内存受限设备来说并不合适。因此Android 提供了...

2018-08-22 19:44:02 6669

原创 SQL 基础增、删、改、查使用

SQL 对大小写不敏感!!!一、SQL 查询语句1、SQL SELECT 语句SELECT 列名称 FROM 表名称以及:SELECT * FROM 表名称示例如下:(从Persons表中查询name和age两列数据)select name,age from Persons2、SQL SELECT DISTINCT 语句在表中,可能会包含重复值。...

2018-08-22 19:38:42 7784 1

原创 Java正则表达式总结

Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 “Hello World” 字符串。 .(点号)也是一个正则表达式,它匹配任何一个字符如:”a” 或 “1”。 下表列出...

2018-08-22 16:05:42 9466

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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