1.Android的生命周期
答:onCreate - onStart - onResume-onPause-onStop-onDestory-onRestart
2.Android的入口函数
答:继承了application类中的attachContext,onCreate
3.Xposed框架的原理及常用的函数
答:
替换system/bin/app_process文件,app_process就是zygote进程文件,所以xposed通过替换zygote进程实现了控制手机上所有app进程
常用函数
(1)findAndHookMethod
参数:实现该方法的类的名称,用于解析目标和参数类的类加载器, 目标方法名称,目标方法的参数以及回调
(2)findAndHookConstructor hook构造函数
参数:实现该方法的类的名称,用于解析目标和参数类的类加载器,目标方法的参数以及回调
(3)findClass:使用指定的类加载器查找类
类名的语法
java.lang.String
java.lang.String[]
android.app.ActivityThread.ResourcesKey
android.app.ActivityThread$ResourcesKey
参数:上面格式的类名,类加载器
(4)findField : 在类中查找自动并将其设置为可访问
参数:变量所在的class,变量名String
(5)CallMethod 调用给定对象的实例或静态方法
参数:对象实例,方法名称,方法调用的参数
(6)newInstance 创建给定类的新实例
参数: 类引用,构造函数调用的参数
4.Hook和注入有哪些
Hook:
反射
在程序动态运行的时候,对于任意一个类,都可以获取其所有的方法和变量
Java的动态代理
注入:
Smali注入
5.反调试
Tracerpid不等于0
Ptrace自身
IsDebuggerConnect
6.网络协议
Http tcp ip
http是一个使用TCP的应用层协议,网络层使用IP协议
传输层协议:TCP/UDP
TCP(传输控制协议) 面向连接的协议
UDP (用户数据报协议) 无连接协议
7.加密算法
DES 3DES AES
MD5 SHA1
对称加密算法:
DES(数据加密标准)算法:DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位(实际用到了56位,第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)
3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全
该方法使用两个密钥,执行三次DES算法,加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。
3DES加密过程为:C=Ek3(Dk2(Ek1(P)))
3DES解密过程为:P=Dk1(EK2(Dk3(C)))
采用两个密钥进行三重加密的好处有:
①两个密钥合起来有效密钥长度有112bit,可以满足商业应用的需要,若采用总长为168bit的三个密钥,会产生不必要的开销。
②加密时采用加密-解密-加密,而不是加密-加密-加密的形式,这样有效的实现了与现有DES系统的向后兼容问题。因为当K1=K2时,三重DES的效果就和原来的DES一样,有助于逐渐推广三重DES。
③三重DES具有足够的安全性,目前还没有关于攻破3DES的报道。
AES(高级加密标准)
AES加密算法采用分组密码体制,每个分组数据的长度为128位16个字节,密钥长度可以是128位16个字节、192位或256位,一共有四种加密模式,我们通常采用需要初始向量IV的CBC模式,初始向量的长度也是128位16个字节。
非对称加密算法
RSA算法
原理:两个大质数相乘
8.阿里壳脱壳的步骤
动态调试
在dvmDexOpenFile下段
用IDA脚本Dump
9.动态调试的步骤
开着Android monitor
IDA动态调试
运行Android_server
端口转发adb forward tcp:23946 tcp:23946
调试启动程序am start -D n 包名/.活动名
IDA附加
F9
在linker关键位置下断
jdb -connect com.sun.jdi.SocketAttach:port=8700,hostname=localhost
10.Apk使用apktool打包
1.apktool d test.apk 解包test.apk
2.apktool b test.apk 重打包test.apk
网友评论