Smali是什么Smali是Android虚拟机的反汇编语言。Android虚拟机的可执行文件并不是普通的class文件,而是再重新整合打包后生成的dex文件。dex文件反编译之后就是Smali代码,所以说,Smali语言是Android虚拟机的反汇编语言。动态调试APK,通常静态分析APK是不够的,如果需要彻底分析APK的执行逻辑,需要通过动态调试来进行。修改APK运行逻辑,通过修改Smali代码,再重新编译打包成新的APK,是Android逆向的基本操作。Smali基本语法
数据类型
Smali(方法类型)
代码
Java
备注
V
return-void
void
只能用...
布局格式线性布局LinearLayout线性布局(LinearLayout)主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能方一个控件。
使用线性布局,需要将布局节点改成LinearLayout,基本格式如下:
1234567891011 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.androi...
AndroidKillerAndroidKiller是一可视化的Android反编译工具,集合了多款安卓反编译软件,只要有配置jdk环境,AndroidKiller的安装十分常规
使用基础页面
在左侧,工程信息位置,展示名称、包名、入口;右侧日志输出,展示
更改apk的安装包名下好一个apk安装包,这里选用土豆视频为例子
打开AndroidKiller.exe程序,把下好的apk包拉入程序中,程序会自动编译apk,中途出现分析工程提示不用管直接点击否,编译的结果如下
![屏幕截图 174312](./assets/屏幕截图 174312-1725985509168-4...
apk文件结构APK 文件APK (Android application package) ,是应用程序的压缩包形式,将应用程序的原代码、各类资源和清单信息组合在一起,以便在设备上进行安装和运行
接下以ibilibili安装包为例观察其文件结构
下载apk文件
因为其本质上就是一个 zip压缩包。所以直接用win解压解压文件
如图,文件内部可分为
静态资源文件(assets)
库文件(lib)
签名文件(META-INF)
编译资源文件(res)
配置清单文件(AndroidManifest.xml)
核心代码文件(classes.dex)
资源映射文件(resources.ar...
HandlerHandle是一套 Android 消息传递机制,主要用于线程间通信
handler其实就是主线程在起了一个子线程,子线程运行并生成Message,Looper获取message并传递给Handler,Handler逐个获取子线程中的Message
Binder/Socket用于进程间通信
Message :代表一个行为或者一串动作 每一个消息在加入消息队列时,都有明确的目标Handler
ThreadLocal: 线程本地存储区(Thread Local Storage,简称为TLS)ThreadLocal的作用是提供线程内的局部变量TLS,这种变量在线程的生...
sd卡的读写操作HttpURLConnectionHttpURLConnection是基于[http协议的,支持GET、POST、PUT、DELETE等各种请求方式。如果使用HTTPS协议请求,可以使用它的子类HttpsURLConnection完成更安全的请求操作
使用步骤
创建一个URL对象:
1URL url=new URL(“接口地址”)
调用URL对象的openConnection()来获取HttpURLConnection对象实例;
1HttpURLConnection connection= (HttpURLConnection) url.openConnection...
四大组件
活动(activity),用于表现功能
服务(service),后台运行服务,不提供界面呈现
广播接受者(Broadcast Receive),勇于接收广播
内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库
活动定义:是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示
一个Activity通常就是一个单独的屏幕
可以类比为windows开发中的窗口
使用1234567public class FirstActivity exte...
输入输出流
输入流
输出流
字节流
InputStream
OutputStream
字符流
Reader
Writer
输入到控制台语法
12345678public class test { public static void main(String[] args) { System.out.println(msg);//输出一个字符串并换行 System.out.print(msg);//输出一个字符串不换行 System.out.printf(format,msg);//格式化输出 &...
多线程概述多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程是比进程更小的执行单位,线程是在进程的基础上进行的进一步划分。所谓多线程是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在、同时运行,一个进程可能包含了多个同时执行的线程。
进程与线程进程:正在运行的应用程序:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,即每个进程都有着自己的堆、栈等且是互不共享的。
线程:进程中的一个执行路径(一段程序从执行到结束的整个过程),共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程线程实际上是在进程的基础上进一步划...