- 博客(127)
- 收藏
- 关注
原创 使用 apktool 修改 APK 的完整踩坑记录
当前安装的 APK该包已经声明并“拥有”这个权限名Android 不允许两个不同的包声明同一个自定义权限名,因此安装失败。
2025-11-25 23:27:52
956
原创 Android应用拆包与合包实战(XSaver)
这次对 X Saver 的 split APK 合并,主要经历了三个关键点:正确认识 base / ABI / DPI 三类 split;所有 XML 资源必须来自 apktool 解包后的工程,而不是 raw APK 解压出来的二进制 XML;Manifest 与public.xmlManifest 只删与 split 相关的 meta-data / 属性;public.xml保留 base 的,忽略 split 的。
2025-11-25 23:08:35
1300
原创 如何设计更安全的 VIP 权限体系
现在很多 App 都是“广告 + 订阅 / VIP”普通用户:有广告、有功能限制VIP 用户:无广告、功能解锁、更高配额// 典型的“初版写法”在自己代码里这样写当然没问题,但一旦应用面对的是“真实世界 + 真实攻击者”只要本地某个布尔值被改掉,整套 VIP 体系就崩了;只要某个方法被 Hook 成永远返回 true,所有付费功能瞬间解锁;只要签名和版本校验不严,变种包可以堂而皇之地跟你抢用户。这篇文章不讨论“怎么绕过”,而是从**“如果我是攻击者,我会从哪里下手?”**这个视角,
2025-11-22 22:58:40
1139
原创 Android 应用逆向分析与架构研究笔记
这篇文章记录的是我在学习 Android 逆向过程中,对某款视频保存类 App做的一次完整分析和架构拆解。目的学习第三方 App 的架构设计与模块划分理解多广告 SDK 集成的方式和常见问题分析会员 / VIP 权限体系与常见安全隐患反思自己在日常开发中可以如何规避被攻击、提高健壮性不包括、不鼓励的行为不鼓励对线上应用做绕过付费、绕过广告、二次打包分发等行为文中所有示例只讨论原理分析与调试思路,不作为生产环境操作指南请务必遵守各应用平台、广告平台、以及所在地区的法律法规。
2025-11-22 22:52:06
1824
原创 Claude + JADX + MCP 逆向分析 Android APK
用 JADX 反编译 APK用 jadx-ai-mcp 插件 + MCP Server 把 JADX 的项目上下文暴露出去用 Claude Desktop 作为“AI 逆向助手”,自动读代码、查类、看 Manifest、找可疑函数等等。
2025-11-18 00:49:31
2456
1
原创 Windows WSL Codex CLI 全自动运行配置 - 从此不再要确认
Codex 有个 config.toml,路径在 ~/.config/codex/config.toml。可以根据场景切换:日常开发用安全的,重构/生成工具代码时用自动的。
2025-11-15 18:35:12
1201
原创 Windows PowerShell 终端读取系统环境变量失败问题解决
在 Windows10 上,如果你在“系统变量”中新增或修改环境变量,而且已经重启 Shell 并 重新登录了,PowerShell 还是没有刷新环境变量,如下所示。
2025-11-15 17:08:14
204
原创 Android 15 :如何使用 Appium Inspector 抓取 UI 层级(最完整踩坑指南)
Android 14/15 上 UiAutomatorViewer 基本不可用(dump 不到层级),同时某些 app 被强制隔离(尤其微信、系统设置)下载地址(官方):https://github.com/appium/appium-inspector/releases。从此你可以分析任意 app UI、编写自动化脚本、逆向布局结构、研究业务 app(微信 / WhatsApp / 设置)(2)Android SDK(随 Android Studio 或 cmdline-tools)
2025-11-08 11:54:24
1491
原创 使用 KernelSU + PlayIntegrityFix 解决Root后ChatGPT不能使用的问题
参考文章:刚从iPhone转到Android的用户,买了一加13T,享受刷机折腾的乐趣,结果安装了ChatGPT以后,发现无法使用,报错:PlayIntegrity Verification failed,了解了下这是谷歌的一中设备认证机制,折腾了一下,虽然没有三项全绿,ChatGPT已正常使用,本文将以。
2025-06-28 13:35:42
8116
12
原创 为什么32位CPU处理64位整数时要拆成多个32位?附C语言实现
中间结果可能超过32位,甚至超出64位,这就需要将每个32位部分继续拆分为16位甚至更小的单元进行处理,并手动处理进位与溢出。但在32位CPU架构中,原生并不支持一次性处理64位整数,因此编译器和底层实现必须。下面是一个简单的模拟64位加法的例子,使用两个32位变量(high + low)组成一个64位结构。对于64位加法,仅仅将其分成两个32位部分(高位和低位)即可。这个函数将两个32位数拆分为4个16位小块来计算,最后合并成64位结果。32位CPU中,所有寄存器的宽度为32位,意味着它。
2025-05-18 13:39:40
683
原创 std::enable_shared_from_this 模板类的作用是什么?
我们以Connection类的shared智能指针为例说明,是一个标准库模板类,它的作用是让一个类的对象能够安全地生成指向自身的,即使该对象最初是通过普通指针或其他方式创建的。
2025-04-14 23:15:35
644
原创 x86 保护模式中的GDT表是什么?
GDT(全局描述符表,Global Descriptor Table)是 x86 保护模式下用于描述不同类型内存段的一个重要数据结构。在保护模式下,GDT 用于管理和保护系统内存,它通过提供一组段描述符来定义内存的访问权限、大小、类型等属性。
2025-04-14 23:12:50
560
原创 C++编译期反射的案例和场景
序列化是将对象转换为可存储或传输的格式(如JSON、XML等),反序列化则是从这种格式恢复对象。传统上需要手写大量代码,而通过编译期反射,可以自动生成这些代码。处理枚举类型时,经常需要将枚举值映射为字符串(如日志打印)或从字符串恢复枚举值(如配置解析)。通过编译期反射,可以轻松实现这些功能。编译期反射可以帮助在编译阶段验证类型是否符合要求,避免运行时错误。通过编译期反射,可以自动生成这些代码,减少重复劳动。在元编程中,利用编译期反射可以生成复杂的模板化代码,适用于需要高性能和强抽象的场景。
2025-04-13 16:11:47
707
原创 Visual Studio Code 在.S汇编文件中添加调试断点及功能简介
Visual Studio Code(VS Code)提供了强大的调试功能,下面简单讲讲 VS Code 断点功能。
2025-04-13 16:08:23
2126
原创 UNIX域套接字(Unix Domain Sockets, UDS) 的两种接口
(File Descriptor Passing),这是其独特优势。虽然 UNIX 域套接字在本地通信,但。UNIX 域套接字的流式套接字支持。
2025-04-11 09:38:16
926
原创 Linux 递归查找并删除目录下的文件
在 Linux 中,可以使用 find 命令递归查找并删除目录下的文件。如果需要删除目录本身,可以使用 -type d 或结合 rm -r。
2025-04-07 23:35:22
695
原创 关于计算机网络的一些疑问
队头阻塞(Head-of-Line Blocking, HOL Blocking)是指一个连接中的请求因为前面的请求没有完成而被阻塞的情况。HTTP/1.x 中,主要有两种形式的队头阻塞:HTTP 层的队头阻塞:在 HTTP/1.1 中,虽然引入了“持久连接”(Persistent Connection)和“管道化”(Pipelining),但同一条 TCP 连接只能按顺序处理请求。如果一个请求因为某些原因(如服务器响应延迟)没有完成,后续请求就必须等待,无法越过前面的请求。这就导致了“队头阻塞”。
2025-04-06 09:37:19
1204
原创 USB传输结构结构与类型简介
Transfer(传输)├─ Transaction(事务)│ ├─ Packet(数据包)│ └─ Packet(数据包)└─ Transaction(事务)从大到小:传输 → 事务 → 数据包,层层细化。
2025-04-06 09:30:44
1110
原创 USB传输(Transaction)过程简介
快递单(Token):说明要寄什么、给谁。包裹(Data Packet):实际物品。签收单(Handshake):确认是否收到。
2025-04-04 14:55:30
1270
原创 深度探索C++对象模型 - 位逐次拷贝语义
位逐次拷贝语义”(bitwise copy semantics)指的是,对象的复制可以通过直接复制其在内存中的原始字节来实现。这种复制方式简单且高效,适用于结构简单的类,例如那些不包含指针、需要特殊拷贝处理的资源或复杂继承结构的类。对于这类简单的类,复制其内存布局就相当于创建了一个完全相同的副本。当一个类包含一个成员对象,而该成员对象所属的类定义了拷贝构造函数时(无论是显式声明还是由编译器合成),该类就不能简单地依赖位逐次拷贝。
2025-04-04 14:54:32
618
原创 C 预处理器、编译器和链接器的理解与说明
阶段选项作用示例预处理器-E仅预处理,输出结果-I指定头文件路径-D定义宏编译器-c生成目标文件(.o-S生成汇编代码(.s-O2优化级别 2-g生成调试符号链接器-o指定可执行文件名-L指定库搜索路径-l指定链接的库。
2025-04-03 11:58:15
1336
原创 解决双系统(ubuntu与windows)中的时间同步问题
我在同一台机器上同时运行Ubuntu和其他操作系统(如Windows),遇到由于不同的RTC处理方式导致的时间不同步问题使用下面的指令查看系统时间状态,Local time实际上是RTC timeWindows默认假设RTC是以本地时间为基准设置的,而大多数Linux发行版(包括Ubuntu)则通常配置成认为RTC保存的是UTC协调世界时15。这种差异会导致每次切换操作系统后看到的时间不一致。
2025-03-30 13:47:29
2375
原创 开源项目里的 autogen.sh 是做什么?
脚本用于在特定系统上配置软件的构建过程。它会检查系统特性、已安装的库和头文件,并根据这些信息生成适合的。是一个在基于 Autotools 构建系统的开源项目中常见的脚本。是 Autotools 的一个组件,它会根据项目根目录下的。脚本中添加额外的自定义步骤,以完成特定的初始化或准备工作。是 Autotools 的另一个组件,它会根据项目中的。它会检查系统中是否安装了构建项目所需的工具,例如。如果缺少必要的工具,脚本可能会报错并提示安装。,或者在项目的构建相关文件(例如。因此,通常会在克隆源代码后。
2025-03-29 18:19:59
661
原创 libimobiledevice项目中各个库的作用
这是一个基于 FUSE (Filesystem in Userspace) 的工具,允许您像挂载普通文件系统一样挂载 iOS 设备的文件系统。这是一个后台守护进程(daemon),负责管理通过 USB 连接的 iOS 设备的 socket 连接。这是一个用于与处于恢复模式(Recovery Mode)或设备固件升级模式(DFU Mode)的 iOS 设备进行通信的库。这是一个命令行工具,也是一个库,用于在已越狱和未越狱的 iOS 设备上安装、卸载和管理应用程序(.ipa 文件)。守护进程的客户端库。
2025-03-29 17:14:28
855
原创 Boost无锁队列简介
无锁队列(Lock-Free Queue)是一种在多线程环境中非常高效的队列实现,其最大优势在于避免了传统的锁机制(如互斥锁mutex)带来的性能开销。它们通过特定的算法和原子操作保证多线程访问时,不需要锁定资源,因此提高了并发执行效率。以Boost库中的无锁队列和分析其中的一些关键点,理解无锁队列的实现原理。
2025-03-25 11:12:37
896
原创 SQLite优化实践
通过将多个插入操作包装在一个事务中,可以显著减少每次写入数据库时的磁盘I/O操作。减少磁盘I/O、提高插入速度,并在牺牲一些内存和CPU使用的情况下优化数据库性能。
2025-03-25 11:08:57
1312
原创 C++中的SSO(小字符串优化)是什么
SSO(Small String Optimization)是一种优化技术,旨在提高小字符串的性能。在传统的实现中,字符串通常会在堆上分配内存,这意味着每次创建或操作字符串时,都会涉及到动态内存分配,这对小字符串来说是低效的。为了解决这个问题,SSO 将短字符串直接存储在对象本身的内存中,而不需要额外的堆内存分配。这样可以大幅降低小字符串操作的开销,避免频繁的内存分配和指针访问。
2025-03-24 22:23:38
761
原创 notify_one() 会阻塞吗?
时,如果有线程在等待条件变量,它会被唤醒并开始检查条件。如果没有线程在等待,调用。唤醒线程后,这个线程并不会立刻继续执行,它必须先重新获取锁并检查条件是否满足。会使一个处于等待状态的线程被唤醒并继续执行,但它本身并不会阻塞。它是用于唤醒一个等待中的线程,通常是通过条件变量(
2025-03-24 22:19:18
335
原创 SQLite 查询数据库属性
在 SQLite 命令行工具中,没有直接查看数据库文件大小的指令,但你可以通过操作系统的命令来查看。例如,在 Linux 或者 macOS 系统中,你可以使用。表存储着数据库的元数据,其中包含了所有表、视图、索引等的定义信息。若要查看某个表的结构,也就是表的列名、数据类型等信息,可以使用。在 Windows 系统中,你可以使用。若要查看数据库里的所有表名,可以借助。替换成你实际要查看的表名。
2025-03-21 09:59:27
948
原创 Windows 格式化磁盘
7、输入 “format fs=ntfs quick” 命令,将指定分区格式化为 NTFS 文件系统。6、输入 “select partition #” 命令(# 为要格式化的分区号),精准选定要进行格式化操作的分区。点击 “开始” 菜单,输入 “cmd”,右键单击并选择 “以管理员身份运行”。3、输入 “list disk” 命令,查看当前计算机中所有的磁盘,找到装有 Ubuntu 系统的磁盘编号。4、输入 “select disk #” 命令(# 为要格式化的分区所在的硬盘号),选中目标磁盘。
2025-03-21 09:39:41
2514
原创 Android Shell上执行可执行文件报错:Permission denied
文件系统挂载为SELinux安全策略限制Android中以下目录通常允许执行文件:
2025-03-19 21:54:18
994
原创 Mac下查看dylib库的版本信息
在macOS系统里,otool是一个实用的命令行工具,可用于查看 Mach-O 文件(如可执行文件、动态链接库等)的相关信息。若要查看动态链接库(.dylib)的版本,可借助otool -L命令。
2025-03-18 14:57:12
815
iOS逆向-基础内容-iOS体系结构-iOS安全体系-iOS Media Layer-iOS Core OS Layer-iOS 应用程序结构-iOS 进程间通信
2025-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅