自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LittleFishC的博客

热爱编程

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

原创 【LeetCode】盛最多水的容器

有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。使用双指针,然后每次选择较短的那条边所对应的指针进行移动,因为移动较短的边有可能增加容器的高度,从而可能找到更大的容积(找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输入:height = [1,1]

2024-08-15 23:51:49 56

原创 【LeetCode】最长连续序列

如果当前数字 num 是一个序列的开始(即 num - 1 不在哈希表中),那么从 num 开始逐个检查后续数字 num + 1, num + 2, …是否在哈希表中存在,直到不再连续。给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]请你设计并实现时间复杂度为 O(n) 的算法解决此问题。输入:nums = [100,4,200,1,3,2]

2024-08-14 23:27:08 135

原创 【LeetCode】字母异位词分组

使用unordered_map(哈希表)将排序后的字符串映射到一个字符串列表中。哈希表的键是排序后的字符串,值是所有与该键对应的原始字符串组成的列表。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]给你一个字符串数组,请你将字母异位词组合在一起。字母异位词是由重新排列源单词的所有字母得到的一个新单词。输出: [[“a”]]输出: [[“”]]

2024-08-14 22:49:08 86

原创 【LeetCode】两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。你可以按任意顺序返回答案。

2024-08-14 18:55:35 178

原创 【LeetCode】移动零

利用双指针遍历数组,其中一个指针遍历整个数组,另一个指针记录下一个非零元素应该放置的位置。通过交换非零元素和零元素的位置,将所有非零元素集中到数组前面,最终将零元素移到数组末尾。这种方法在保证非零元素相对顺序不变的同时,实现了原地操作。给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]输入: nums = [0]

2024-08-14 18:05:14 124

原创 【LeetCode】删除链表中的节点

有一个单链表的 head,我们想删除它其中的一个节点 node。链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9。解释:指定链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9。输入:head = [4,5,1,9], node = 5。输入:head = [4,5,1,9], node = 1。输出:[4,1,9]

2024-08-14 17:23:57 231

原创 【LeetCode】摆动排序

奇数索引 (i % 2 == 1):此时希望 nums[i] >= nums[i+1]。给你一个的整数数组 nums, 将该数组重新排序后使 nums[0] = nums[2]

2024-08-14 00:03:37 111

原创 数组列表中的最大距离

现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b|。你的任务就是去找到最大距离。一种得到答案 4 的方法是从第一个数组或者第三个数组中选择 1,同时从第二个数组中选择 5。输入: [[1,2,3], [4,5], [1,2,3]]给定 m 个数组,每个数组都已经按照。题目来源:LeetCode。

2024-08-13 23:24:32 91

原创 二叉树最长连续序列

最长连续序列路径 是依次递增 1 的路径。该路径,可以是从某个初始节点到树中任意节点,通过「父 - 子」关系连接而产生的任意路径。给你一棵指定的二叉树的根节点 root ,请你计算其中 最长连续序列路径 的长度。输入:root = [1,null,3,2,4,null,null,null,5]解释:当中,最长连续序列是 2-3。注意,不是 3-2-1,所以返回 2。解释:当中,最长连续序列是 3-4-5 ,所以返回结果为 3。输入:root = [2,null,3,2,null,1]

2024-08-12 16:22:54 179

原创 Android系统免root注入frida脚本

通过这种方式可以实现app免root的就可以使用frida进行hook,然而这种方式在有些app反编译和回编译可能会出错,会存在签名校验、文件校验问题。

2024-08-08 18:01:55 647

原创 Frida Hook String构造函数

在实际Android应用开发中,无论是使用多么复杂的算法对字符串进行加密,然而开发者常常会构造出字符串的实例。因此,我们可以通过使用Frida hook String类的构造函数来追踪这些实例的构造位置,然后可以通过构造实例的地方栈回溯出关键位置。

2024-08-05 00:43:25 403

原创 Frida Hook Java层代码与协议分析

在本文中,我们继续以某嘟牛应用为例,在用户点击登录按钮后,哪个方法会被调用。我们在上一篇文章中提到,搜索关键词 “Encrypt” 后,发现两个包含该字符串的 Java 方法。接下来,我们通过 Frida 分别 Hook 这两个方法,以测试点击登录后会调用哪个方法。执行结果如下所示:通过结果我们可以看出,点击登录后最终执行的方法为 addRequestMap。

2024-08-03 00:44:32 363

原创 app逆向实战之定位关键代码

可以通过这两种方式定位关键代码,然而控件的方式在有些复杂的app当中,可能离着关键代码很远。针对字符串的方式会面临字符串加密,我们在搜索字符串搜不到相应的代码。

2024-08-02 16:31:09 491

原创 Android应用的执行入口

static {@Override@Override在这个类中,我们重写了和onCreate方法,并在静态代码块中添加了日志输出,以便于在应用启动时跟踪执行顺序。

2024-07-31 19:07:17 346

原创 Android系统目录与权限管理

并非所有目录和文件都能通过上述方式修改权限,有些需要修改SELinux策略。目录存放用户应用的数据,每个应用都有自己的子目录,以包名命名。该目录是私有目录,只有相应的应用能够访问,除非获得了root权限。是一个临时目录,具有较大的权限,通常用于存放一些临时文件。无论设备是否有外部存储卡,都会有sd卡目录,通常是。目录存放Android系统使用的框架文件,如一些。目录存放Android系统的shell命令。在Linux系统中,文件和目录的权限通过。目录存放系统自带的应用。的应用,其数据存放在。

2024-07-31 17:40:45 346

原创 Android逆向中常用的Linux命令

在进行Android逆向工程或开发时,通过adb shell进入设备的Android系统是常见的操作。由于Android系统的底层基于Linux,掌握Linux命令对于高效操作和管理设备至关重要。本文将介绍在adb shell中常用的Linux命令及其应用。

2024-07-31 00:00:55 687

原创 Android历史版本与APK文件结构

在移动设备日益普及的今天,Android系统已经成为全球最流行的移动操作系统。作为Android开发者或逆向工程师,了解Android系统的演进历史以及APK文件的基本结构是非常重要的。本文将详细介绍Android历史版本的演变以及APK的基本结构。

2024-07-30 23:29:05 666

原创 Android逆向中常用的adb命令

在Android逆向工程中,ADB(Android Debug Bridge)是一个非常重要的工具。它允许逆向工程师与Android设备进行交互和调试。本文将介绍一些在Android逆向中常用的adb命令。

2024-07-30 22:41:07 493

原创 初识LLVM

LLVM项目是一个模块化和可重用的编译器和工具链技术集合,最初作为伊利诺伊大学的研究项目,旨在提供现代的、基于SSA的编译策略,支持任意编程语言的静态和动态编译。如今,LLVM已发展为包含多个子项目的总项目,被广泛应用于商业和开源项目以及学术研究。LLVM的代码在“Apache 2.0许可证加LLVM例外”下发布。LLVM核心库:提供与源和目标无关的优化器和代码生成支持。Clang:一个高效的C/C++/Objective-C编译器,支持快速编译和有用的错误提示。LLDB。

2024-07-18 01:05:03 596

原创 leetcode-反转链表

给你单链表的头节点head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]

2024-07-07 22:31:57 177

原创 leetcode-LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。

2024-07-07 20:13:21 165

原创 leetcode-前K个高频元素

给你一个整数数组nums和一个整数k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]进阶:你所设计算法的时间复杂度必须优于O(nlogn) ,其中n是数组大小。

2024-07-07 17:05:12 191

原创 19_repr和str

【代码】25.repr和str。

2024-06-13 17:26:40 91

原创 18_Python中new方法

【代码】18_Python中new方法。

2024-06-13 17:20:14 178

原创 17_属性操作与property

【代码】17_属性操作与property。

2024-06-13 17:01:43 115

原创 经典排序算法_冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历待排序的元素列,依次比较相邻的元素,并在需要时交换它们的位置,直到整个序列按照要求有序。这个算法的名字由于在每一轮排序中,最大(或最小)的元素会像气泡一样"浮"到最后的位置而得名。

2024-06-13 01:33:22 105

原创 经典排序算法_选择排序

选择排序是一种简单直观的排序算法,其基本思想是每次从待排序的数据中选择最小(或最大)的元素,将其放置在已排序部分的末尾(或开头),直到所有元素均已排序完成。

2024-06-13 01:19:20 125

原创 16_描述符托管

【代码】16_描述符托管。

2024-06-12 00:40:54 108

原创 15_super() 函数

【代码】16_super() 函数。

2024-06-12 00:28:37 81

原创 14_字典setitem与getitem

【代码】14_字典setitem与getitem。

2024-06-12 00:20:41 166

原创 13_yield生成器

yield 类似于 return,会返回一个值。但不同的是,yield 会记住函数执行到的位置。下一次迭代时,从上次 yield 的位置继续执行。使用 yield,我们可以按需生成数据,每次调用生成器函数时返回一个值,就像排队取号一样。这样,我们可以逐步处理数据,而不是一次性获取所有数据。yield 关键字允许我们一次性处理大量数据时,避免一次性将所有资源都加载到内存中。第一次调用时必须先next()或send(None),否则会报错。send可以强行修改上一个yield表达式值。

2024-06-11 23:46:40 101

原创 12_Python迭代器

【代码】12_Python迭代器。

2024-06-11 20:21:41 99

原创 11_异常处理

【代码】11_异常处理。

2024-06-11 20:07:36 118

原创 10_闭包

【代码】10_闭包。

2024-06-11 19:45:10 90

原创 09_Python中args和kwargs

【代码】09_Python中args和kwargs。

2024-06-11 19:19:05 112

原创 08_python文件操作

【代码】08_python文件操作。

2024-06-11 19:02:19 177

原创 07_循环中常用方法

【代码】07_循环中常用方法。

2024-06-11 18:34:56 75

原创 06_Python类

【代码】06_Python类。

2024-06-11 18:11:58 73

原创 05_函数

【代码】05_函数。

2024-06-11 17:30:08 411

原创 04_循环语句

【代码】04_循环语句。

2024-06-11 17:10:24 101

空空如也

空空如也

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

TA关注的人

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