<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[寒夜的博客]]></title><description><![CDATA[中年菜鸟一只]]></description><link>https://blog.youkuaiyun.com/sinat_42574069</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sinat_42574069]]></copyright><item><title><![CDATA[Charles + Postern 手机APP抓包设置]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/118501210</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/118501210</guid><author>sinat_42574069</author><pubDate>Tue, 06 Jul 2021 00:19:50 +0800</pubDate><description><![CDATA[文章目录一、Charles的配置二、Postern设置1、服务器和端口设置2. 匹配规则
一、Charles的配置

使用socks代理而不用http代理的原因在于，http代理处于应用层，很容易被绕过。
二、Postern设置
1、服务器和端口设置
Postern的作用是代理转发，可以将普通的代理置为vpn代理。vpn代理是处于网络层的，可以抓到更多的数据包。


代理服务器名称：可以任意填写
服务器地址：



箭头所指的就是代理服务器的地址。

服务器端口：之前自己设置的端口，即16666。也可以使用]]></description><category></category></item><item><title><![CDATA[ARM汇编直播课笔记]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/115442818</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/115442818</guid><author>sinat_42574069</author><pubDate>Mon, 05 Apr 2021 22:52:49 +0800</pubDate><description><![CDATA[分析dex文件不会用到ARM汇编，但是分析elf文件时会用到ARM汇编。
elf文件：后缀为.so的文件，官方名称为动态链接库。是可执行文件，对内统称二进制文件。
判断一个文件是否为elf文件：使用二进制工具打开，如果文件头部分为7F 45 4C 46，则表示其为elf文件。

...]]></description><category></category></item><item><title><![CDATA[ARM指令集]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/115362505</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/115362505</guid><author>sinat_42574069</author><pubDate>Wed, 31 Mar 2021 23:02:16 +0800</pubDate><description><![CDATA[文章目录1. 常用ARM指令1.1 跳转指令1.2 比较指令2. 寄存器于储存器操作2.1 寄存器的定义2.2 寄存器常用指令2.3 数据传送指令2.4 数据算术运算指令2.5 数据逻辑运算指令2.6 其他指令
1. 常用ARM指令
1.1 跳转指令


B：无条件跳转


BL：带连接的跳转指令


BX：带状态切换的无条件跳转


BLX：带链接和状态切换的无条件跳转


例如：
B 0x1234          跳转到绝对地址0x1234的位置执行相应的代码
BL loc_234        跳转]]></description><category></category></item><item><title><![CDATA[ARM汇编语言程序结构]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/115361619</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/115361619</guid><author>sinat_42574069</author><pubDate>Wed, 31 Mar 2021 21:56:58 +0800</pubDate><description><![CDATA[文章目录1. ARM 汇编规范2. 符号3. 常量4. ARM 指令的格式5. ARM 指令的条件域6. Android操作系统7. 反编译可执行程序8. 小结
1. ARM 汇编规范


所有的符号都必须在一行书写，在后面不用添加高级语言所用的分号。


ARM汇编器对标识符的大小写敏感，书写符号以及指令时字母大小写一定要一致。


一条ARM指令，伪指令。寄存器名可以全部写为大写字母，也可以全部为小写字母, 但是不能大小写混合编写使用。


注释使用(分号)，注释内容由(分号)开始到执行结束。


例如]]></description><category></category></item><item><title><![CDATA[NDK开发—JNI动态注册]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/115342743</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/115342743</guid><author>sinat_42574069</author><pubDate>Wed, 31 Mar 2021 16:09:24 +0800</pubDate><description><![CDATA[1. 新建一个Android Application Project，起名为jisuanqi1，目的是实现计算器的功能。

2. 新建两个Plain Text和TextView，分别命名为第1、2个数字

3. 然后增加4个按钮，分别为加减乘除，并修改按钮的id


为防止空指针异常，我们在text中输入0

4. 返回MainActivity.java中创建初始化init()方法

5. 绑定编辑框和按钮，并且定义编辑框的内容，然后定义加减乘除四种方法，用native修饰


获取编辑框的值

6. 设置]]></description><category></category></item><item><title><![CDATA[NDK开发—调用方法]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/115336006</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/115336006</guid><author>sinat_42574069</author><pubDate>Tue, 30 Mar 2021 23:32:08 +0800</pubDate><description><![CDATA[1. 首先在之前的项目中创建2个方法，1个普通方法，1个静态方法。并用native修饰新增的javatoc方法

2. cd到src目录，重新生成jni接口

3. 将生成后的.h头文件中的内容复制到JNIstudy.h中（与之前的步骤一样），将新生成的javatoc方法复制到.c文件中，补齐方法和参数

4. 在java.h文档中搜索callvoidmethod。在搜索过程中我们可以看到，在有返回值的方法中，返回的是哪种类型的值，均有对应的方法。此处，我们使用第一个，复制到.c文件中，并补齐方法和参数

]]></description><category></category></item><item><title><![CDATA[NDK开发—调用字段]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/115273129</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/115273129</guid><author>sinat_42574069</author><pubDate>Sun, 28 Mar 2021 23:50:09 +0800</pubDate><description><![CDATA[1. 创建一个新的项目，名字为 JNIstudy

然后，
2. 在 MainActivity.java 文件中创建一个native方法；
3. 在 Oncreate中，用 Toast 弹窗进行提示。

4. 保存，然后打开cmd，cd到所在src文件的路径下面，然后在选所在的盘，进入src目录


5. 输入 javah，可以查看常用的命令

6. 生成 JNI 样式的标头文件
先把之前输入的代码稍微进行下调整，然后在生成JNI时看看到底是哪个生成的。更改后的代码如下：
package com.examp]]></description><category></category></item><item><title><![CDATA[安卓逆向基础6：C语言基础概述]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/112439501</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/112439501</guid><author>sinat_42574069</author><pubDate>Sun, 10 Jan 2021 22:51:48 +0800</pubDate><description><![CDATA[文章目录1. C语言基础语法1.1 基础语法1.2 令牌1.3 注释1.4 标识符1.5 关键字2. 指针2.1 指针的概述2.2 指针的实例用法2.3 实例用法3. C语言结构体/共用体3.1 结构体类型的概念3.2 结构体格式3.3 结构体声明的3种方式3.4 结构体变量的引用3.5 结构体类型的初始化3.6 共用体3.7 如何引用共用体变量3.8 共用体变量初始化3.9 共用体类型的数据特点3.10 结构体和共用体的区别4. 文件操作4.1 文件概述4.2 文件基本操作4.3 文件结构体4.4 文件读]]></description><category></category></item><item><title><![CDATA[安卓逆向基础： 篡改APK名称&APP分身]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/112132030</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/112132030</guid><author>sinat_42574069</author><pubDate>Wed, 06 Jan 2021 19:56:44 +0800</pubDate><description><![CDATA[文章目录概述：1. 准备工作2. 修改APP名称3. APP分身
概述：
此次，我们修改的文件是这个，图标如下：

1. 准备工作
首先，将apk从模拟器中导出，然后拖到AndroidKiller中打开apk，直接点击编译开始反编译。
然后，在模拟器中将下载后的apk卸载，并将反编译后的apk拖入模拟器进行安装。
2. 修改APP名称
首先，在工程搜索中搜索“土豆视频”。可以看到，一共搜到了2条记录，其中第2条记录就是我们要修改的内容：

我们将“土豆视频”修改为“优酷视频”，然后回编译：

我们将之前的a]]></description><category></category></item><item><title><![CDATA[JAVA核心：网络通信]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/111773277</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/111773277</guid><author>sinat_42574069</author><pubDate>Sun, 27 Dec 2020 14:38:02 +0800</pubDate><description><![CDATA[文章目录1. 网络程序设计基础1.1 局域网与因特网1.2 网络协议1.3 端口（Port）和套接字（Socket）1.3.1 端口1.3.2 套接字2. TCP程序设计基础2.1  IP 地址封装（InetAddress ）类2.2 服务器套接字（ServerSocket ）类2.3 TCP 网络程序3. UDP 程序设计基础3.1 DatagramPacket 类3.2 DatagramSocket 类
1. 网络程序设计基础
网络程序设计编写时与其他计算机进行通信的程序。Java已经将网络程序所需要的]]></description><category></category></item><item><title><![CDATA[JAVA核心：多线程]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/111731393</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/111731393</guid><author>sinat_42574069</author><pubDate>Sat, 26 Dec 2020 23:26:33 +0800</pubDate><description><![CDATA[文章目录1. 线程简介2. 实现线程的两种方式2.1 继承 Thread 类2.2 实现 Runnable 接口
1. 线程简介
完全可以同时进行的活动在Java中被称为并发，而将并发完成的每一件事情称为线程。
一个线程则是进程中的执行流程，一个进程中可以同时包括多个线程，每个线程也可以得到一小段程序的执行时间，这样一个进程就可以具有多个并发执行的线程。



进程是资源分配的最小单位，线程是最小的执行单位。
一个进程可以有多个线程
线程共享进程资源

2. 实现线程的两种方式
在Java中主要提供2种方式]]></description><category></category></item><item><title><![CDATA[JAVA核心：枚举类型与泛型]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/111709683</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/111709683</guid><author>sinat_42574069</author><pubDate>Sat, 26 Dec 2020 12:20:59 +0800</pubDate><description><![CDATA[文章目录1. 枚举类型1.1 使用枚举类型设置常量1.2 深入了解枚举类型1.2.1 操作枚举类型成员的方法1.3 使用枚举类型的优势2. 泛型2.1 回顾向上转型与向下转型2.2 定义泛型类2.3 泛型的常规用法2.4 泛型的高级用法2.5 泛型总结
1. 枚举类型
使用枚举类型，可以取代前面学习过的定义常量的方式，同时枚举类型还赋予程序在编译时进行检查的功能。
1.1 使用枚举类型设置常量
使用枚举类型定义常量的语法如下：
public enum Constants{
	Constants_A,
	Co]]></description><category></category></item><item><title><![CDATA[JAVA核心：反射]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/111410600</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/111410600</guid><author>sinat_42574069</author><pubDate>Wed, 23 Dec 2020 23:20:53 +0800</pubDate><description><![CDATA[文章目录1. Class 类与 Java 反射1.1 访问构造方法1.2 访问成员变量1.3 访问方法2. 使用 Annotation 功能2.1 定义 Annotation 类型2.2 访问 Annotation 信息
1. Class 类与 Java 反射

1.1 访问构造方法
在通过下列一组方法访问构造方法时，将返回Constructor类型的对象或数组。每个Constructor对象代表一个构造方法，利用Constructor对象可以操纵相应的构造方法。

getConstructors()
ge]]></description><category></category></item><item><title><![CDATA[JAVA核心：I/O（输入/输出）]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/111185762</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/111185762</guid><author>sinat_42574069</author><pubDate>Sat, 19 Dec 2020 19:51:48 +0800</pubDate><description><![CDATA[文章目录1. 流概述2. 输入/输出流2.1 输入流2.2 输出流3. File 类3.1 文件的创建与删除3.2 获取文件信息
1. 流概述
流是一组有序的数据序列，根据操作的类型，可分为输入流和输出流两种。I/O（Input/Output）流提供了一条通道程序，可以使用这条通道把源中的字节序列送到目的地。虽然I/O流经常与磁盘文件存取有关，但是程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口等。


2. 输入/输出流
2.1 输入流

InputStream类是字节输入流的抽象类，是所有字节输入流]]></description><category></category></item><item><title><![CDATA[JAVA核心：集合类]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/111143644</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/111143644</guid><author>sinat_42574069</author><pubDate>Sun, 13 Dec 2020 21:39:10 +0800</pubDate><description><![CDATA[文章目录1. 集合类概述2. Collection 接口3. List集合3.1 List接口3.2 List接口的实现类4. set 集合4.1 TreeSet4.2 HashSet5. Map集合5.1 Map接口5.2 Map接口的实现类
1. 集合类概述
Java语言的java.util包中提供了一些集合类，这些集合类又被称为容器。提到容器不难会想到数组，集合类与数组不同之处是，数组的长度是固定的，集合的长度是可变的；数组用来存放基本类型的数据，集合用来存放对象的引用。常用的集合有List集合、Se]]></description><category></category></item><item><title><![CDATA[JAVA核心：Swing程序设计]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/110939814</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/110939814</guid><author>sinat_42574069</author><pubDate>Sun, 13 Dec 2020 18:33:59 +0800</pubDate><description><![CDATA[文章目录1. Swing 概述1.1 Swing 特点1.2 Swing 包1.3 常用Swing组件概述2. 常用窗体2.1 JFrame窗体2.2 JDialog窗体（对话框窗体）3. 标签组件与图标3.1 标签的使用3.2 图标的使用3.2.1 创建图标3.2.2 使用图片图标4. 常用布局管理器4.1 绝对布局4.2 流布局管理器4.3 边界布局管理器4.4 网络布局管理器4.5 网格组布局管理器5. 常用面板5.1 JPanel面板5.2 滚动面板6. 按钮组件6.1 提交按钮组件6.2 单选按钮]]></description><category></category></item><item><title><![CDATA[JAVA核心：异常处理]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/110747169</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/110747169</guid><author>sinat_42574069</author><pubDate>Tue, 08 Dec 2020 19:59:12 +0800</pubDate><description><![CDATA[文章目录1. 异常概述2. 处理程序异常错误2.1 错误2.2 捕捉异常2.2.1 try-catch 语句块2.2.2 finally 语句块3. Java 常见异常4. 自定义异常5. 在方法中抛出异常5.1 使用throws关键字抛出异常5.2 使用throw关键字抛出异常
1. 异常概述
在程序中，错误可能产生于程序员没有预料到的各种情况，或者是因为超出了程序员控制之外的环境因素，如用户的坏数据、试图打开一个根本不存在的文件等。在Java中这种在程序运行时可能出现的一些错误称为异常。异常是一个在程序]]></description><category></category></item><item><title><![CDATA[JAVA核心学习：类的高级特性]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/110498777</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/110498777</guid><author>sinat_42574069</author><pubDate>Sun, 06 Dec 2020 13:17:30 +0800</pubDate><description><![CDATA[文章目录1. Java 类包1.1 类名冲突1.2 完整的类路径1.3 创建包1.4 导入包1.4.1 使用import关键字导入包1.4.2 使用import导入静态成员2. final 变量3. final 方法4. final 类5. 内部类5.1 成员内部类5.1.1 成员内部类简介5.1.1 内部类向上转型为接口5.1.3 使用this关键字获取内部类与外部类的引用5.2 局部内部类5.3 匿名内部类5.4 静态内部类5.5 内部类的继承
1. Java 类包
1.1 类名冲突
Java中每个接口]]></description><category></category></item><item><title><![CDATA[JAVA核心学习：接口、继承与多态（下）]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/110402026</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/110402026</guid><author>sinat_42574069</author><pubDate>Tue, 01 Dec 2020 19:52:10 +0800</pubDate><description><![CDATA[文章目录3. 对象类型的转换3.1 类的向上转型3.2 类的向下转型4. instanceof关键字5. 方法的重载6. 多态7. 抽象类与接口7.1 抽象类7.2 接口
3. 对象类型的转换
3.1 类的向上转型
向上转型就是把子类对象赋值给父类类型的变量。

首先，创建一个Person类：
public class Person {
	public Person(String name) {
		System.out.println("您好，我叫"+name);
		
	} 
}

然后，创建一个Stu]]></description><category></category></item><item><title><![CDATA[JAVA核心学习：接口、继承与多态（上）]]></title><link>https://blog.youkuaiyun.com/sinat_42574069/article/details/110350569</link><guid>https://blog.youkuaiyun.com/sinat_42574069/article/details/110350569</guid><author>sinat_42574069</author><pubDate>Sun, 29 Nov 2020 21:47:21 +0800</pubDate><description><![CDATA[文章目录1. 类的继承1.1 extends关键字1.2 方法的重写1.3 super关键字2. Object类2.1 getClass()方法2.2 toString()方法2.3 equals()方法
1. 类的继承
子类可以继承父类原有的属性和方法，也可以增加原来父类不具备的属性和方法，或者直接重写父类中的某些方法。
在继承中，还有一种特殊的重写方式，子类与父类的成员方法返回值、方法名称、参数类型及个数完全相同，唯一不同的是方法实现内容，这种特殊的重写方式被称为重构。
1.1 extends关键字

]]></description><category></category></item></channel></rss>