- 博客(32)
- 收藏
- 关注
原创 在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
2144
1
原创 Xposed拦截抽象方法
XposeHelpers提供了一些辅助方法,我们可以使用findAndHookXXX:查找并Hook方法与构造方法。而且只能Hook方法与构造方法,不能Hook接口和抽象方法。如果直接拦截抽象方法,会出现下列错误:1、直接使用findAndHookMethod拦截抽象方法//unregisterBiz方法为LongLinkSyncService的抽象方法XposedHelpers.findA...
2018-12-25 21:43:13
5258
4
原创 Xposed模拟操作第三方应用的控件
使用Xposed设置第三方应用的输入框的值;使用Xposed点击第三方应用的按钮;使用Xposed操作密码键盘输入密码;一、使用Xposed为设置第三方应用的输入框的值思路:找到EditText对象,再为EditText设置值即可;第三方应用控件查找EditText源码:public class WithdrawActivity_ extends BaseActivity {...
2018-12-14 19:40:07
5974
原创 解决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
73097
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
1780
转载 android逆向之多dex(multiDex)文件apk的逆向
很多大厂的Android App因为业务量大,引用库多导致其apk包的中的类于方法剧增.这样就有可能出现因为方法数过多导致编译失败的情况.产生这个问题的主因是dex文件格式的限制.一个DEX文件中method个数采用使用原生类型short来索引文件中的方法,也就是4个字节共计最多表达65536个method,field/class的个数也均有此限制。对于DEX文件,则是将工程所需全部class文件...
2018-10-29 12:31:14
4186
2
原创 7、Lua 协同程序(coroutine)
1、什么是协同(coroutine)?Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。 协同是非常强大的功能,但是用起来也很复杂。线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。一个具有多个协同程序...
2018-08-27 17:53:58
288
原创 6、Lua 模块与包
1、Lua 模块与包模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua 的模块是==由变量、函数等==已知元素组成的 table,模块最终会返回一个table。 因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其...
2018-08-27 17:53:46
316
原创 5、Lua 迭代器
迭代器(iterator)是一种对象,它能够用来它可以遍历集合的每一个元素。在Lua中,通常将迭代其表示为函数。每调用一次函数,即返回集合中的“下一个”元素。每个迭代器都需要在每次成功调用之间保持一种状态,这样才能知道它所在的位置及如何步进到下一个位置。泛型 for 迭代器泛型 for 在自己内部保存迭代函数,实际上它保存三个值:迭代函数、状态常量、控制变量。泛型 for 迭...
2018-08-27 17:53:33
344
原创 4、Lua 表(table)和元表(Metatable)
一、Lua table(表) table 是 Lua 的一种数据结构,能容纳任何数据类型,如:数字、字典等。 Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。 Lua table 是不固定大小的,你可以根据自己需要进行扩容。Lua也是通过table来解决模块(module)、包(package)和对象(Object)...
2018-08-27 17:53:21
2534
原创 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
1122
原创 2、Lua 控制语句和函数
一、Lua 循环Lua 语言提供了以下几种循环处理方式: 循环类型 描述 while 循环 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。 for 循环 重复执行指定语句,重复次数可在 for 语句中控制。 Lua repeat…until 重复执行循环,直到 指定的条件为真时为止 循环嵌...
2018-08-27 17:52:52
250
原创 1、Lua 基础
Lua是属于引用类型的语言,Lua中一切皆引用。Lua中的任何数据类型的定义都是包含名字和内存两部分,名字都是指向内存的。一、Lua 基本语法1、单行注释两个减号是单行注释:–2、多行注释–[[ 多行注释 多行注释 –]]3、全局变量在默认情况下,变量总是认为是全局的。全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,...
2018-08-27 17:52:34
6863
原创 0、Lua语言理解
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放。Lua的核心思想是:一切皆引用 ,是一种引用型的语言。1、设计目的其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。2、Lua 特性轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。可扩展: Lua提供了非常易于使用的扩展接口...
2018-08-27 17:52:06
7179
原创 adb命令管理Linux 文件和目录
Linux的目录结构为树状结构,最顶级的目录为根目录 /。1、绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。2、相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法处理目录的常用命令ls: 列出目...
2018-08-27 15:13:02
9491
原创 Java反射与hook混用反射某支付的方法
反射某支付软件apk的方法 思路: 1、可以先取得某支付软件的classLoader,可以通过hook某支付软件的必须方法(如:LauncherActivity的attachBaseContext方法)来取得某支付软件classLoader; 2、取得某支付软件的classLoader,则可以查找某支付软件dex中的所有方法和变量,就反射某支付软件的方法和变量了;注意:...
2018-08-27 11:35:06
8203
转载 阿里系产品Xposed Hook检测机制原理分析
导语:在逆向分析android App过程中,我们时常用的用的Java层hook框架就是Xposed Hook框架了。一些应用程序厂商为了保护自家android App不被Xposed Hook框架给hook。于是想尽各种方法检测自己产品是否被Xposed Hook给Hook。笔者最近逆向分析阿里系的产品,发现阿里系的产品能够检测自否给Xposed Hook了。本文就带领给位一起看看官阿里系产...
2018-08-24 14:24:58
14770
转载 Android逆向之旅---破解某支付软件防Xposed等框架Hook功能检测机制
一、情景介绍最近想写几个某支付软件的插件,大家现在都知道现在插件大部分都是基于Xposed的hook功能,包括之前写了很多的某社交软件的插件,所以不多说就直接用Jadx打开支付软件之后然后找到想要hook的方法,可惜的是遇到这个错误:这个软件内部做了防止Xposed的hook功能检测,当我们写了对应了Xposed模块在打开app的时候就会出现这样的错误,其实吧这个错误网上之前有人写过分...
2018-08-24 14:16:50
17437
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
38207
10
原创 Android手机:破解锁屏密码
Android手机破解锁屏密码很简单,只需要升级为Root用户即可简单的破解。 升级root用户,安装一个Kingroot即可。破解步骤如下:手机连接电脑,使用adb shell命令进入ADB环境: 利用su命令获取root权限,获取成功会从”$”变成”#” 使用cd命令进入data/system目录 用ls -l命令查看查看当前目录的所有文件信息 上锁的手机可以看到...
2018-08-23 21:00:57
35533
5
原创 Java反射机制
一、Java反射机制概述Java放射机制是指在==运行状态==中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取信息及动态调用方法的功能成为Java的反射机制。二、反射的作用利用Java机制,在Java程序中可以动态的去调用一些protected甚至是private的方法或类,这样就可以在很大程度上满足一些特殊需求。...
2018-08-23 16:31:18
9720
原创 return new对象造成溢出内存
方法中返回的对象,一般不会造成内存溢出,但是一下情况就是刚好造成的内容溢出: 如果对象的引用刚好被单例所持有的话,JVM就不会回收该引用。1、创建对象Info info = new Info();new Info()的时候,会返回一个地址,并且将地址赋值给引用info,当这个引用被info持有的时候,java虚拟机会认为这个对象是有用的,不会回收。2、方法...
2018-08-23 10:51:00
8749
原创 Java IO输入输出及乱码问题
/** * 以二进制读出文件内容 * @param file * @return * @throws IOException */ private static byte[] readFileBytes(File file) throws IOException { byte[] arrayOfByte =...
2018-08-22 20:32:20
8095
原创 URL编码与解码原理
一、概述在开始讨论编码解码之前,首先来明确一下问题。 什么是application/x-www-form-urlencoded字符串? 答:它是一种编码类型。当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-urlencoded字符串。表单里提交时也是如此,当包含非西欧字符的字符串时,系统也会将这些字符转换成applicatio...
2018-08-22 20:20:16
12278
1
原创 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
13422
原创 MD5算法的应用及原理
MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。MD5算法的使用不需要支付任何版权费用。MD5功能: 1. 输入任意长度的信息,经过处理,输出为128位的信息(数字指纹); 1. 不同的输入得到的不同的结果(唯一性); 1. 根据128位的输出结果不可能反推出输入的信息(不可逆); 一、Md5...
2018-08-22 19:55:58
11690
原创 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
7099
原创 Dalvik虚拟机、Java虚拟机与ART虚拟机
一、Java虚拟机1. Java的是Java字节码。传统的Java程序经过编译,生成Java字节码保存在class文件中,Java虚拟机通过解码class文件中的内容来运行程序。2. Java虚拟机基于栈架构。程序在运行时虚拟机需要频繁的从栈上读取或写入数据,这个过程需要更多的指令分派与内存访问次数,会耗费不少CPU时间。二、Dalvik虚拟机(Android 4....
2018-08-22 19:50:33
7253
原创 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
6702
原创 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
7802
原创 Java正则表达式总结
Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 “Hello World” 字符串。 .(点号)也是一个正则表达式,它匹配任何一个字符如:”a” 或 “1”。 下表列出...
2018-08-22 16:05:42
9500
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人