<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SSL Pinning - 标签 - 逆向工程 Cookbook</title><link>https://overkazaf.github.io/reverse_engineering/tags/ssl-pinning/</link><description>Android 与 Web 逆向工程实战手册</description><generator>Hugo 0.147.7 &amp; FixIt v0.4.0-alpha.3-20251224074056-4fec1cda</generator><language>zh-CN</language><managingEditor>overkazaf@gmail.com (+5)</managingEditor><webMaster>overkazaf@gmail.com (+5)</webMaster><lastBuildDate>Thu, 25 Sep 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://overkazaf.github.io/reverse_engineering/tags/ssl-pinning/index.xml" rel="self" type="application/rss+xml"/><item><title>Web 逆向工程 Cookbook</title><link>https://overkazaf.github.io/reverse_engineering/web/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/</guid><description>&lt;h1 class="heading-element" id="web-逆向工程-cookbook">&lt;span>Web 逆向工程 Cookbook&lt;/span>
 &lt;a href="#web-%e9%80%86%e5%90%91%e5%b7%a5%e7%a8%8b-cookbook" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>欢迎来到 &lt;strong>Web RE Cookbook&lt;/strong> —— 一本实战导向的 Web 逆向工程实用手册。&lt;/p></description></item><item><title>故障排除 - Troubleshooting</title><link>https://overkazaf.github.io/reverse_engineering/web/10-troubleshooting/</link><pubDate>Sun, 20 Jul 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/10-troubleshooting/</guid><description>&lt;h1 class="heading-element" id="故障排除---troubleshooting">&lt;span>故障排除 - Troubleshooting&lt;/span>
 &lt;a href="#%e6%95%85%e9%9a%9c%e6%8e%92%e9%99%a4---troubleshooting" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>遇到问题？这里有常见问题的解决方案和调试技巧。&lt;/p></description></item><item><title>Magisk 与 LSPosed 技术原理</title><link>https://overkazaf.github.io/reverse_engineering/android/04-reference/advanced/magisk_lsposed_internals/</link><pubDate>Thu, 25 Sep 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/04-reference/advanced/magisk_lsposed_internals/</guid><description>&lt;h1 class="heading-element" id="magisk-与-lsposed-技术原理">&lt;span>Magisk 与 LSPosed 技术原理&lt;/span>
 &lt;a href="#magisk-%e4%b8%8e-lsposed-%e6%8a%80%e6%9c%af%e5%8e%9f%e7%90%86" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>Magisk 和 LSPosed 是 Android 平台上最流行的 Root 和 Hook 解决方案。本文深入分析其技术实现原理，帮助理解现代 Android 系统修改技术的核心机制。&lt;/p></description></item><item><title>HTTP/2 与 HTTP/3</title><link>https://overkazaf.github.io/reverse_engineering/web/04-advanced-recipes/http2_http3/</link><pubDate>Fri, 11 Jul 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/04-advanced-recipes/http2_http3/</guid><description>&lt;h1 class="heading-element" id="http2-与-http3">&lt;span>HTTP/2 与 HTTP/3&lt;/span>
 &lt;a href="#http2-%e4%b8%8e-http3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;h2 class="heading-element" id="概述">&lt;span>概述&lt;/span>
 &lt;a href="#%e6%a6%82%e8%bf%b0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>HTTP/2 和 HTTP/3 是 HTTP 协议的最新版本，带来了性能提升和新的特性。在逆向工程中，理解这些协议的工作原理对于分析现代 Web 应用至关重要。&lt;/p></description></item><item><title>TLS 指纹识别 (JA3/JA4)</title><link>https://overkazaf.github.io/reverse_engineering/web/04-advanced-recipes/tls_fingerprinting/</link><pubDate>Tue, 08 Jul 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/04-advanced-recipes/tls_fingerprinting/</guid><description>&lt;h1 class="heading-element" id="tls-指纹识别-ja3ja4">&lt;span>TLS 指纹识别 (JA3/JA4)&lt;/span>
 &lt;a href="#tls-%e6%8c%87%e7%ba%b9%e8%af%86%e5%88%ab-ja3ja4" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;h2 class="heading-element" id="思考时刻">&lt;span>思考时刻&lt;/span>
 &lt;a href="#%e6%80%9d%e8%80%83%e6%97%b6%e5%88%bb" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>在学习 TLS 指纹之前，先挑战你的认知：&lt;/p></description></item><item><title>反分析技术案例</title><link>https://overkazaf.github.io/reverse_engineering/android/03-case-studies/case_anti_analysis_techniques/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/03-case-studies/case_anti_analysis_techniques/</guid><description>&lt;h1 class="heading-element" id="反分析技术案例">&lt;span>反分析技术案例&lt;/span>
 &lt;a href="#%e5%8f%8d%e5%88%86%e6%9e%90%e6%8a%80%e6%9c%af%e6%a1%88%e4%be%8b" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>网络和请求问题</title><link>https://overkazaf.github.io/reverse_engineering/web/10-troubleshooting/network_issues/</link><pubDate>Sat, 24 May 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/10-troubleshooting/network_issues/</guid><description>&lt;h1 class="heading-element" id="网络和请求问题">&lt;span>网络和请求问题&lt;/span>
 &lt;a href="#%e7%bd%91%e7%bb%9c%e5%92%8c%e8%af%b7%e6%b1%82%e9%97%ae%e9%a2%98" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>常见的网络连接和 HTTP 请求问题及解决方案。&lt;/p></description></item><item><title>Android 沙箱技术与实现指南</title><link>https://overkazaf.github.io/reverse_engineering/android/04-reference/advanced/android_sandbox_implementation/</link><pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/04-reference/advanced/android_sandbox_implementation/</guid><description>&lt;h1 class="heading-element" id="android-沙箱技术与实现指南">&lt;span>Android 沙箱技术与实现指南&lt;/span>
 &lt;a href="#android-%e6%b2%99%e7%ae%b1%e6%8a%80%e6%9c%af%e4%b8%8e%e5%ae%9e%e7%8e%b0%e6%8c%87%e5%8d%97" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>Android 沙箱技术，通常也被称为&amp;quot;虚拟化引擎&amp;quot;或&amp;quot;App 多开框架&amp;quot;，是一种在单个 Android 设备上创建隔离环境以运行其他应用程序的技术。它允许一个&amp;quot;宿主&amp;quot;应用程序在自己的进程空间内加载并运行一个&amp;quot;插件&amp;quot;应用程序，同时对插件应用的所有系统交互进行拦截和管理。&lt;/p></description></item><item><title>JA3 TLS 指纹识别技术详解</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/network/ja3_fingerprinting/</link><pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/network/ja3_fingerprinting/</guid><description>&lt;h1 class="heading-element" id="ja3-tls-指纹识别技术详解">&lt;span>JA3 TLS 指纹识别技术详解&lt;/span>
 &lt;a href="#ja3-tls-%e6%8c%87%e7%ba%b9%e8%af%86%e5%88%ab%e6%8a%80%e6%9c%af%e8%af%a6%e8%a7%a3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>绕过 App 对 Frida 的检测</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/frida_anti_debugging/</link><pubDate>Tue, 22 Apr 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/frida_anti_debugging/</guid><description>&lt;h1 class="heading-element" id="绕过-app-对-frida-的检测">&lt;span>绕过 App 对 Frida 的检测&lt;/span>
 &lt;a href="#%e7%bb%95%e8%bf%87-app-%e5%af%b9-frida-%e7%9a%84%e6%a3%80%e6%b5%8b" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>验证码绕过技术：滑块与点选篇</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/captcha_bypassing_techniques/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/captcha_bypassing_techniques/</guid><description>&lt;h1 class="heading-element" id="验证码绕过技术滑块与点选篇">&lt;span>验证码绕过技术：滑块与点选篇&lt;/span>
 &lt;a href="#%e9%aa%8c%e8%af%81%e7%a0%81%e7%bb%95%e8%bf%87%e6%8a%80%e6%9c%af%e6%bb%91%e5%9d%97%e4%b8%8e%e7%82%b9%e9%80%89%e7%af%87" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>Redis 常用命令备忘录</title><link>https://overkazaf.github.io/reverse_engineering/android/04-reference/engineering/redis/</link><pubDate>Mon, 14 Apr 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/04-reference/engineering/redis/</guid><description>&lt;h1 class="heading-element" id="redis-常用命令备忘录">&lt;span>Redis 常用命令备忘录&lt;/span>
 &lt;a href="#redis-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4%e5%a4%87%e5%bf%98%e5%bd%95" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>Redis 是一个开源的、基于内存的、高性能的键值存储系统。它支持多种数据结构，如字符串、哈希、列表、集合和有序集合。本备忘录旨在提供常用命令的快速参考。&lt;/p></description></item><item><title>常用命令速查表</title><link>https://overkazaf.github.io/reverse_engineering/web/08-cheat-sheets/common_commands/</link><pubDate>Sat, 05 Apr 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/08-cheat-sheets/common_commands/</guid><description>&lt;h1 class="heading-element" id="常用命令速查表">&lt;span>常用命令速查表&lt;/span>
 &lt;a href="#%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4%e9%80%9f%e6%9f%a5%e8%a1%a8" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;h2 class="heading-element" id="chrome-devtools-console-命令">&lt;span>Chrome DevTools Console 命令&lt;/span>
 &lt;a href="#chrome-devtools-console-%e5%91%bd%e4%bb%a4" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 class="heading-element" id="选择元素">&lt;span>选择元素&lt;/span>
 &lt;a href="#%e9%80%89%e6%8b%a9%e5%85%83%e7%b4%a0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;div class="table-wrapper">
 &lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>命令&lt;/th>
 &lt;th>说明&lt;/th>
 &lt;th>示例&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>$()&lt;/code>&lt;/td>
 &lt;td>等同于 &lt;code>document.querySelector()&lt;/code>&lt;/td>
 &lt;td>&lt;code>$('#username')&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>$$()&lt;/code>&lt;/td>
 &lt;td>等同于 &lt;code>document.querySelectorAll()&lt;/code>&lt;/td>
 &lt;td>&lt;code>$$('.item')&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>$x()&lt;/code>&lt;/td>
 &lt;td>XPath 选择器&lt;/td>
 &lt;td>&lt;code>$x('//div[@class=&amp;quot;container&amp;quot;]')&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>$0&lt;/code>&lt;/td>
 &lt;td>当前选中的元素&lt;/td>
 &lt;td>&lt;code>$0.innerHTML&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>$1&lt;/code>&lt;/td>
 &lt;td>上一个选中的元素&lt;/td>
 &lt;td>&lt;code>$1.classList&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
 &lt;/table>
&lt;/div>&lt;h3 class="heading-element" id="实用函数">&lt;span>实用函数&lt;/span>
 &lt;a href="#%e5%ae%9e%e7%94%a8%e5%87%bd%e6%95%b0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;div class="table-wrapper">
 &lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>命令&lt;/th>
 &lt;th>说明&lt;/th>
 &lt;th>示例&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>copy()&lt;/code>&lt;/td>
 &lt;td>复制到剪贴板&lt;/td>
 &lt;td>&lt;code>copy($0)&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>clear()&lt;/code>&lt;/td>
 &lt;td>清空 Console&lt;/td>
 &lt;td>&lt;code>clear()&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>keys()&lt;/code>&lt;/td>
 &lt;td>获取对象所有键&lt;/td>
 &lt;td>&lt;code>keys(window)&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>values()&lt;/code>&lt;/td>
 &lt;td>获取对象所有值&lt;/td>
 &lt;td>&lt;code>values(localStorage)&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>monitor()&lt;/code>&lt;/td>
 &lt;td>监控函数调用&lt;/td>
 &lt;td>&lt;code>monitor(fetch)&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>unmonitor()&lt;/code>&lt;/td>
 &lt;td>取消监控&lt;/td>
 &lt;td>&lt;code>unmonitor(fetch)&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>table()&lt;/code>&lt;/td>
 &lt;td>表格显示数据&lt;/td>
 &lt;td>&lt;code>table([{name:'a',age:20}])&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>debug()&lt;/code>&lt;/td>
 &lt;td>在函数第一行设断点&lt;/td>
 &lt;td>&lt;code>debug(myFunction)&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>undebug()&lt;/code>&lt;/td>
 &lt;td>移除断点&lt;/td>
 &lt;td>&lt;code>undebug(myFunction)&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
 &lt;/table>
&lt;/div>&lt;h3 class="heading-element" id="网络相关">&lt;span>网络相关&lt;/span>
 &lt;a href="#%e7%bd%91%e7%bb%9c%e7%9b%b8%e5%85%b3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code>// 查看所有 Cookie
document.cookie;

// 清空所有 Cookie
document.cookie.split(&amp;#34;;&amp;#34;).forEach((c) =&amp;gt; {
document.cookie = c
.replace(/^ &amp;#43;/, &amp;#34;&amp;#34;)
.replace(/=.*/, &amp;#34;=;expires=&amp;#34; &amp;#43; new Date().toUTCString() &amp;#43; &amp;#34;;path=/&amp;#34;);
});

// 查看 LocalStorage
Object.keys(localStorage);

// 清空 LocalStorage
localStorage.clear();

// 发送 GET 请求
fetch(&amp;#34;https://api.example.com/data&amp;#34;)
.then((r) =&amp;gt; r.json())
.then(console.log);

// 发送 POST 请求
fetch(&amp;#34;https://api.example.com/login&amp;#34;, {
method: &amp;#34;POST&amp;#34;,
headers: { &amp;#34;Content-Type&amp;#34;: &amp;#34;application/json&amp;#34; },
body: JSON.stringify({ username: &amp;#34;admin&amp;#34;, password: &amp;#34;123456&amp;#34; }),
})
.then((r) =&amp;gt; r.json())
.then(console.log);&lt;/code>&lt;/pre>&lt;hr>
&lt;h2 class="heading-element" id="python-常用库">&lt;span>Python 常用库&lt;/span>
 &lt;a href="#python-%e5%b8%b8%e7%94%a8%e5%ba%93" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 class="heading-element" id="requests">&lt;span>Requests&lt;/span>
 &lt;a href="#requests" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code>import requests

# GET 请求
response = requests.get(&amp;#39;https://example.com&amp;#39;)
print(response.text)

# POST 请求
response = requests.post(&amp;#39;https://example.com/api&amp;#39;, json={
&amp;#39;username&amp;#39;: &amp;#39;admin&amp;#39;,
&amp;#39;password&amp;#39;: &amp;#39;123456&amp;#39;
})
print(response.json())

# 设置 Headers
headers = {
&amp;#39;User-Agent&amp;#39;: &amp;#39;Mozilla/5.0 ...&amp;#39;,
&amp;#39;Authorization&amp;#39;: &amp;#39;Bearer token123&amp;#39;
}
response = requests.get(&amp;#39;https://example.com&amp;#39;, headers=headers)

# 使用代理
proxies = {
&amp;#39;http&amp;#39;: &amp;#39;http://127.0.0.1:8080&amp;#39;,
&amp;#39;https&amp;#39;: &amp;#39;http://127.0.0.1:8080&amp;#39;
}
response = requests.get(&amp;#39;https://example.com&amp;#39;, proxies=proxies)

# Session 保持
session = requests.Session()
session.get(&amp;#39;https://example.com/login&amp;#39;)
session.post(&amp;#39;https://example.com/api&amp;#39;, json={&amp;#39;key&amp;#39;: &amp;#39;value&amp;#39;})&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="beautifulsoup">&lt;span>BeautifulSoup&lt;/span>
 &lt;a href="#beautifulsoup" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code>from bs4 import BeautifulSoup

# 解析 HTML
soup = BeautifulSoup(html, &amp;#39;html.parser&amp;#39;)

# 查找元素
soup.find(&amp;#39;div&amp;#39;, class_=&amp;#39;content&amp;#39;) # 查找第一个
soup.find_all(&amp;#39;a&amp;#39;) # 查找所有
soup.select(&amp;#39;.class #id tag&amp;#39;) # CSS 选择器

# 获取属性
element = soup.find(&amp;#39;a&amp;#39;)
element.get(&amp;#39;href&amp;#39;) # 获取 href
element.text # 获取文本
element.get_text(strip=True) # 获取文本（去空格）&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="regex-re">&lt;span>Regex (re)&lt;/span>
 &lt;a href="#regex-re" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code>import re

# 查找
match = re.search(r&amp;#39;pattern&amp;#39;, text)
matches = re.findall(r&amp;#39;pattern&amp;#39;, text)

# 替换
result = re.sub(r&amp;#39;old&amp;#39;, &amp;#39;new&amp;#39;, text)

# 编译（提高性能）
pattern = re.compile(r&amp;#39;pattern&amp;#39;)
matches = pattern.findall(text)&lt;/code>&lt;/pre>&lt;hr>
&lt;h2 class="heading-element" id="curl-命令">&lt;span>cURL 命令&lt;/span>
 &lt;a href="#curl-%e5%91%bd%e4%bb%a4" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 class="heading-element" id="基本用法">&lt;span>基本用法&lt;/span>
 &lt;a href="#%e5%9f%ba%e6%9c%ac%e7%94%a8%e6%b3%95" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># GET 请求
curl https://example.com

# POST 请求
curl -X POST https://example.com/api \
-H &amp;#34;Content-Type: application/json&amp;#34; \
-d &amp;#39;{&amp;#34;username&amp;#34;:&amp;#34;admin&amp;#34;,&amp;#34;password&amp;#34;:&amp;#34;123456&amp;#34;}&amp;#39;

# 设置 User-Agent
curl -A &amp;#34;Mozilla/5.0 ...&amp;#34; https://example.com

# 保存 Cookie
curl -c cookies.txt https://example.com

# 使用 Cookie
curl -b cookies.txt https://example.com

# 跟随重定向
curl -L https://example.com

# 显示响应头
curl -i https://example.com

# 只显示响应头
curl -I https://example.com

# 使用代理
curl -x http://127.0.0.1:8080 https://example.com

# 忽略 SSL 证书
curl -k https://example.com

# 上传文件
curl -F &amp;#34;file=@/path/to/file&amp;#34; https://example.com/upload&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="调试用法">&lt;span>调试用法&lt;/span>
 &lt;a href="#%e8%b0%83%e8%af%95%e7%94%a8%e6%b3%95" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 显示详细信息
curl -v https://example.com

# 显示时间统计
curl -w &amp;#34;@curl-format.txt&amp;#34; -o /dev/null -s https://example.com

# curl-format.txt 内容:
# time_namelookup: %{time_namelookup}\n
# time_connect: %{time_connect}\n
# time_appconnect: %{time_appconnect}\n
# time_redirect: %{time_redirect}\n
# time_pretransfer: %{time_pretransfer}\n
# time_starttransfer: %{time_starttransfer}\n
# ----------\n
# time_total: %{time_total}\n&lt;/code>&lt;/pre>&lt;hr>
&lt;h2 class="heading-element" id="git-常用命令">&lt;span>Git 常用命令&lt;/span>
 &lt;a href="#git-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 class="heading-element" id="基础操作">&lt;span>基础操作&lt;/span>
 &lt;a href="#%e5%9f%ba%e7%a1%80%e6%93%8d%e4%bd%9c" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 查看状态
git status

# 添加文件
git add .
git add file.txt

# 提交
git commit -m &amp;#34;message&amp;#34;

# 推送
git push origin master

# 拉取
git pull origin master

# 查看历史
git log
git log --oneline --graph

# 回退
git reset --hard HEAD^ # 回退一个版本
git reset --hard commit_id # 回退到指定版本&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="分支操作">&lt;span>分支操作&lt;/span>
 &lt;a href="#%e5%88%86%e6%94%af%e6%93%8d%e4%bd%9c" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 创建分支
git branch feature-name

# 切换分支
git checkout feature-name

# 创建并切换
git checkout -b feature-name

# 合并分支
git merge feature-name

# 删除分支
git branch -d feature-name&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="查看差异">&lt;span>查看差异&lt;/span>
 &lt;a href="#%e6%9f%a5%e7%9c%8b%e5%b7%ae%e5%bc%82" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 查看修改
git diff

# 查看已暂存的修改
git diff --staged

# 查看两个提交的差异
git diff commit1 commit2&lt;/code>&lt;/pre>&lt;hr>
&lt;h2 class="heading-element" id="nodejs--npm">&lt;span>Node.js / npm&lt;/span>
 &lt;a href="#nodejs--npm" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 class="heading-element" id="包管理">&lt;span>包管理&lt;/span>
 &lt;a href="#%e5%8c%85%e7%ae%a1%e7%90%86" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 安装包
npm install package-name
npm install -g package-name # 全局安装
npm install --save-dev package # 开发依赖

# 卸载包
npm uninstall package-name

# 更新包
npm update package-name

# 查看已安装的包
npm list
npm list -g

# 查看包信息
npm info package-name&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="常用脚本">&lt;span>常用脚本&lt;/span>
 &lt;a href="#%e5%b8%b8%e7%94%a8%e8%84%9a%e6%9c%ac" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 运行脚本
npm run script-name

# 常见的预定义脚本
npm start
npm test
npm run build&lt;/code>&lt;/pre>&lt;hr>
&lt;h2 class="heading-element" id="bash-文本处理">&lt;span>Bash 文本处理&lt;/span>
 &lt;a href="#bash-%e6%96%87%e6%9c%ac%e5%a4%84%e7%90%86" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 class="heading-element" id="grep">&lt;span>grep&lt;/span>
 &lt;a href="#grep" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 搜索文本
grep &amp;#34;pattern&amp;#34; file.txt

# 忽略大小写
grep -i &amp;#34;pattern&amp;#34; file.txt

# 递归搜索
grep -r &amp;#34;pattern&amp;#34; directory/

# 显示行号
grep -n &amp;#34;pattern&amp;#34; file.txt

# 反向匹配（不包含）
grep -v &amp;#34;pattern&amp;#34; file.txt

# 正则表达式
grep -E &amp;#34;regex pattern&amp;#34; file.txt&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="sed">&lt;span>sed&lt;/span>
 &lt;a href="#sed" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 替换文本
sed &amp;#39;s/old/new/&amp;#39; file.txt # 替换每行第一个
sed &amp;#39;s/old/new/g&amp;#39; file.txt # 替换所有
sed -i &amp;#39;s/old/new/g&amp;#39; file.txt # 直接修改文件

# 删除行
sed &amp;#39;/pattern/d&amp;#39; file.txt # 删除匹配的行
sed &amp;#39;1d&amp;#39; file.txt # 删除第一行
sed &amp;#39;1,10d&amp;#39; file.txt # 删除1-10行&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="awk">&lt;span>awk&lt;/span>
 &lt;a href="#awk" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 打印列
awk &amp;#39;{print $1}&amp;#39; file.txt # 打印第一列
awk &amp;#39;{print $1,$3}&amp;#39; file.txt # 打印第1和第3列

# 条件过滤
awk &amp;#39;$3 &amp;gt; 100&amp;#39; file.txt # 第3列大于100的行

# 求和
awk &amp;#39;{sum&amp;#43;=$1} END {print sum}&amp;#39; file.txt&lt;/code>&lt;/pre>&lt;hr>
&lt;h2 class="heading-element" id="docker-常用命令">&lt;span>Docker 常用命令&lt;/span>
 &lt;a href="#docker-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 class="heading-element" id="镜像操作">&lt;span>镜像操作&lt;/span>
 &lt;a href="#%e9%95%9c%e5%83%8f%e6%93%8d%e4%bd%9c" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 拉取镜像
docker pull image-name

# 查看镜像
docker images

# 删除镜像
docker rmi image-name

# 构建镜像
docker build -t image-name .&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="容器操作">&lt;span>容器操作&lt;/span>
 &lt;a href="#%e5%ae%b9%e5%99%a8%e6%93%8d%e4%bd%9c" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># 运行容器
docker run -d --name container-name image-name
docker run -it image-name /bin/bash # 交互式

# 查看容器
docker ps # 运行中的
docker ps -a # 所有的

# 停止容器
docker stop container-name

# 启动容器
docker start container-name

# 删除容器
docker rm container-name

# 查看日志
docker logs container-name

# 进入容器
docker exec -it container-name /bin/bash&lt;/code>&lt;/pre>&lt;hr>
&lt;h2 class="heading-element" id="快速参考">&lt;span>快速参考&lt;/span>
 &lt;a href="#%e5%bf%ab%e9%80%9f%e5%8f%82%e8%80%83" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 class="heading-element" id="编码解码">&lt;span>编码/解码&lt;/span>
 &lt;a href="#%e7%bc%96%e7%a0%81%e8%a7%a3%e7%a0%81" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code># Base64
import base64
encoded = base64.b64encode(b&amp;#39;text&amp;#39;)
decoded = base64.b64decode(encoded)

# URL编码
from urllib.parse import quote, unquote
encoded = quote(&amp;#39;text with spaces&amp;#39;)
decoded = unquote(encoded)

# JSON
import json
json_str = json.dumps({&amp;#39;key&amp;#39;: &amp;#39;value&amp;#39;})
obj = json.loads(json_str)&lt;/code>&lt;/pre>&lt;h3 class="heading-element" id="时间戳">&lt;span>时间戳&lt;/span>
 &lt;a href="#%e6%97%b6%e9%97%b4%e6%88%b3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;pre>&lt;code>import time
import datetime

# 当前时间戳（秒）
timestamp = int(time.time())

# 当前时间戳（毫秒）
timestamp_ms = int(time.time() * 1000)

# 时间戳转日期
dt = datetime.datetime.fromtimestamp(timestamp)
print(dt.strftime(&amp;#39;%Y-%m-%d %H:%M:%S&amp;#39;))

# 日期转时间戳
dt = datetime.datetime(2024, 1, 1, 12, 0, 0)
timestamp = int(dt.timestamp())&lt;/code>&lt;/pre>&lt;pre>&lt;code>// JavaScript
const timestamp = Date.now(); // 毫秒
const timestampSec = Math.floor(Date.now() / 1000); // 秒

// 时间戳转日期
const date = new Date(timestamp);
console.log(date.toLocaleString());&lt;/code>&lt;/pre>&lt;hr>
&lt;h2 class="heading-element" id="相关章节">&lt;span>相关章节&lt;/span>
 &lt;a href="#%e7%9b%b8%e5%85%b3%e7%ab%a0%e8%8a%82" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;ul>
&lt;li>&lt;a href="./crypto_signatures.md">加密算法特征&lt;/a> - 加密算法识别&lt;/li>
&lt;li>&lt;a href="./regex_patterns.md">正则表达式&lt;/a> - 常用正则模式&lt;/li>
&lt;li>&lt;a href="./http_headers.md">HTTP 头速查&lt;/a> - HTTP 请求头&lt;/li>
&lt;/ul></description></item><item><title>SO 运行时仿真技术</title><link>https://overkazaf.github.io/reverse_engineering/android/04-reference/advanced/so_runtime_emulation/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/04-reference/advanced/so_runtime_emulation/</guid><description>&lt;h1 class="heading-element" id="so-运行时仿真技术">&lt;span>SO 运行时仿真技术&lt;/span>
 &lt;a href="#so-%e8%bf%90%e8%a1%8c%e6%97%b6%e4%bb%bf%e7%9c%9f%e6%8a%80%e6%9c%af" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>在高级 Android 逆向工程中，我们经常需要自动化地调用 SO 文件中的加密、签名或校验函数。然而，在真实的设备上通过 Frida Hook 来做这件事，不仅效率低下，而且容易受到反调试和环境检测的阻碍。&lt;/p></description></item><item><title>JavaScript Hook 脚本</title><link>https://overkazaf.github.io/reverse_engineering/web/07-scripts/javascript_hook_scripts/</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/07-scripts/javascript_hook_scripts/</guid><description>&lt;h1 class="heading-element" id="javascript-hook-脚本">&lt;span>JavaScript Hook 脚本&lt;/span>
 &lt;a href="#javascript-hook-%e8%84%9a%e6%9c%ac" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;h2 class="heading-element" id="概述">&lt;span>概述&lt;/span>
 &lt;a href="#%e6%a6%82%e8%bf%b0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>Hook（钩子）是逆向工程中最核心的动态分析技术之一。通过运行时劫持(Runtime Interception)原生 API 或自定义函数，可以实现对目标代码的无侵入式监控、参数篡改和行为修改。Hook 技术基于 JavaScript 的动态特性和原型链机制，能够在不修改源代码的情况下改变程序执行流程。&lt;/p></description></item><item><title>C 代码：用于运行时仿真与设备指纹生成</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/scripts/c_for_emulation/</link><pubDate>Sat, 22 Mar 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/scripts/c_for_emulation/</guid><description>&lt;h1 class="heading-element" id="c-代码用于运行时仿真与设备指纹生成">&lt;span>C 代码：用于运行时仿真与设备指纹生成&lt;/span>
 &lt;a href="#c-%e4%bb%a3%e7%a0%81%e7%94%a8%e4%ba%8e%e8%bf%90%e8%a1%8c%e6%97%b6%e4%bb%bf%e7%9c%9f%e4%b8%8e%e8%ae%be%e5%a4%87%e6%8c%87%e7%ba%b9%e7%94%9f%e6%88%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>脱壳分析加固的 Android 应用</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/unpacking/un-packing/</link><pubDate>Sat, 22 Mar 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/unpacking/un-packing/</guid><description>&lt;h1 class="heading-element" id="脱壳分析加固的-android-应用">&lt;span>脱壳分析加固的 Android 应用&lt;/span>
 &lt;a href="#%e8%84%b1%e5%a3%b3%e5%88%86%e6%9e%90%e5%8a%a0%e5%9b%ba%e7%9a%84-android-%e5%ba%94%e7%94%a8" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>Flutter 应用逆向案例</title><link>https://overkazaf.github.io/reverse_engineering/android/03-case-studies/case_flutter_apps/</link><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/03-case-studies/case_flutter_apps/</guid><description>&lt;h1 class="heading-element" id="flutter-应用逆向案例">&lt;span>Flutter 应用逆向案例&lt;/span>
 &lt;a href="#flutter-%e5%ba%94%e7%94%a8%e9%80%86%e5%90%91%e6%a1%88%e4%be%8b" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>使用动态分析验证和探索 Android App 的运行时行为</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/analysis/dynamic_analysis_deep_dive/</link><pubDate>Wed, 26 Feb 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/analysis/dynamic_analysis_deep_dive/</guid><description>&lt;h1 class="heading-element" id="使用动态分析验证和探索-android-app-的运行时行为">&lt;span>使用动态分析验证和探索 Android App 的运行时行为&lt;/span>
 &lt;a href="#%e4%bd%bf%e7%94%a8%e5%8a%a8%e6%80%81%e5%88%86%e6%9e%90%e9%aa%8c%e8%af%81%e5%92%8c%e6%8e%a2%e7%b4%a2-android-app-%e7%9a%84%e8%bf%90%e8%a1%8c%e6%97%b6%e8%a1%8c%e4%b8%ba" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>Frida 常用脚本速查手册</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/scripts/frida_common_scripts/</link><pubDate>Mon, 24 Feb 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/scripts/frida_common_scripts/</guid><description>&lt;h1 class="heading-element" id="frida-常用脚本速查手册">&lt;span>Frida 常用脚本速查手册&lt;/span>
 &lt;a href="#frida-%e5%b8%b8%e7%94%a8%e8%84%9a%e6%9c%ac%e9%80%9f%e6%9f%a5%e6%89%8b%e5%86%8c" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>绕过应用的 Xposed 检测</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/xposed_anti_debugging/</link><pubDate>Sun, 23 Feb 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/xposed_anti_debugging/</guid><description>&lt;h1 class="heading-element" id="绕过应用的-xposed-检测">&lt;span>绕过应用的 Xposed 检测&lt;/span>
 &lt;a href="#%e7%bb%95%e8%bf%87%e5%ba%94%e7%94%a8%e7%9a%84-xposed-%e6%a3%80%e6%b5%8b" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>JA4+ TLS/QUIC 指纹识别技术详解</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/network/ja4_fingerprinting/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/network/ja4_fingerprinting/</guid><description>&lt;h1 class="heading-element" id="ja4-tlsquic-指纹识别技术详解">&lt;span>JA4+ TLS/QUIC 指纹识别技术详解&lt;/span>
 &lt;a href="#ja4-tlsquic-%e6%8c%87%e7%ba%b9%e8%af%86%e5%88%ab%e6%8a%80%e6%9c%af%e8%af%a6%e8%a7%a3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>JNI 开发与调用原理</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/native/jni_development/</link><pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/native/jni_development/</guid><description>&lt;h1 class="heading-element" id="jni-开发与调用原理">&lt;span>JNI 开发与调用原理&lt;/span>
 &lt;a href="#jni-%e5%bc%80%e5%8f%91%e4%b8%8e%e8%b0%83%e7%94%a8%e5%8e%9f%e7%90%86" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>Objection 常用技巧 (Objection Snippets)</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/scripts/objection_snippets/</link><pubDate>Sun, 09 Feb 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/scripts/objection_snippets/</guid><description>&lt;h1 class="heading-element" id="objection-常用技巧-objection-snippets">&lt;span>Objection 常用技巧 (Objection Snippets)&lt;/span>
 &lt;a href="#objection-%e5%b8%b8%e7%94%a8%e6%8a%80%e5%b7%a7-objection-snippets" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>安卓银行木马分析案例</title><link>https://overkazaf.github.io/reverse_engineering/android/03-case-studies/case_malware_analysis/</link><pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/03-case-studies/case_malware_analysis/</guid><description>&lt;h1 class="heading-element" id="安卓恶意软件分析实战">&lt;span>安卓恶意软件分析实战&lt;/span>
 &lt;a href="#%e5%ae%89%e5%8d%93%e6%81%b6%e6%84%8f%e8%bd%af%e4%bb%b6%e5%88%86%e6%9e%90%e5%ae%9e%e6%88%98" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>主流应用加固厂商及其特征识别</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/app_hardening_identification/</link><pubDate>Wed, 22 Jan 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/app_hardening_identification/</guid><description>&lt;h1 class="heading-element" id="主流应用加固厂商及其特征识别">&lt;span>主流应用加固厂商及其特征识别&lt;/span>
 &lt;a href="#%e4%b8%bb%e6%b5%81%e5%ba%94%e7%94%a8%e5%8a%a0%e5%9b%ba%e5%8e%82%e5%95%86%e5%8f%8a%e5%85%b6%e7%89%b9%e5%be%81%e8%af%86%e5%88%ab" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>逆向工程 GitHub 开源项目</title><link>https://overkazaf.github.io/reverse_engineering/android/05-appendix/github_projects/</link><pubDate>Tue, 31 Dec 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/05-appendix/github_projects/</guid><description>&lt;h1 class="heading-element" id="逆向工程-github-开源项目">&lt;span>逆向工程 GitHub 开源项目&lt;/span>
 &lt;a href="#%e9%80%86%e5%90%91%e5%b7%a5%e7%a8%8b-github-%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>本列表旨在收集和分类逆向工程领域的优秀开源项目，方便查阅和学习。&lt;/p></description></item><item><title>工程化：虚拟化与容器技术</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/automation/virtualization_and_containers/</link><pubDate>Sat, 28 Dec 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/automation/virtualization_and_containers/</guid><description>&lt;h1 class="heading-element" id="工程化虚拟化与容器技术">&lt;span>工程化：虚拟化与容器技术&lt;/span>
 &lt;a href="#%e5%b7%a5%e7%a8%8b%e5%8c%96%e8%99%9a%e6%8b%9f%e5%8c%96%e4%b8%8e%e5%ae%b9%e5%99%a8%e6%8a%80%e6%9c%af" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>前置知识&lt;/strong>&lt;/p></description></item><item><title>抓包分析 Android 应用的网络流量</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/network/network_sniffing/</link><pubDate>Sat, 07 Dec 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/network/network_sniffing/</guid><description>&lt;h1 class="heading-element" id="抓包分析-android-应用的网络流量">&lt;span>抓包分析 Android 应用的网络流量&lt;/span>
 &lt;a href="#%e6%8a%93%e5%8c%85%e5%88%86%e6%9e%90-android-%e5%ba%94%e7%94%a8%e7%9a%84%e7%bd%91%e7%bb%9c%e6%b5%81%e9%87%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>工具使用问题</title><link>https://overkazaf.github.io/reverse_engineering/web/10-troubleshooting/tool_issues/</link><pubDate>Mon, 25 Nov 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/10-troubleshooting/tool_issues/</guid><description>&lt;h1 class="heading-element" id="工具使用问题">&lt;span>工具使用问题&lt;/span>
 &lt;a href="#%e5%b7%a5%e5%85%b7%e4%bd%bf%e7%94%a8%e9%97%ae%e9%a2%98" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>常见开发和逆向工具的问题及解决方案。&lt;/p></description></item><item><title>使用 TLS 指纹识别检测和绕过应用指纹</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/network/tls_fingerprinting_guide/</link><pubDate>Mon, 04 Nov 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/network/tls_fingerprinting_guide/</guid><description>&lt;h1 class="heading-element" id="使用-tls-指纹识别检测和绕过应用指纹">&lt;span>使用 TLS 指纹识别检测和绕过应用指纹&lt;/span>
 &lt;a href="#%e4%bd%bf%e7%94%a8-tls-%e6%8c%87%e7%ba%b9%e8%af%86%e5%88%ab%e6%a3%80%e6%b5%8b%e5%92%8c%e7%bb%95%e8%bf%87%e5%ba%94%e7%94%a8%e6%8c%87%e7%ba%b9" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>Frida 常用命令与脚本 API 大全</title><link>https://overkazaf.github.io/reverse_engineering/android/02-tools/dynamic/frida_guide/</link><pubDate>Mon, 14 Oct 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/02-tools/dynamic/frida_guide/</guid><description>&lt;h1 class="heading-element" id="frida-常用命令与脚本-api-大全">&lt;span>Frida 常用命令与脚本 API 大全&lt;/span>
 &lt;a href="#frida-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4%e4%b8%8e%e8%84%9a%e6%9c%ac-api-%e5%a4%a7%e5%85%a8" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>Frida 是一个动态代码插桩工具包，它允许您将自己的脚本注入到黑盒进程中。它对于逆向工程、安全研究和应用调试非常有用。&lt;/p></description></item><item><title>Xposed 框架入门</title><link>https://overkazaf.github.io/reverse_engineering/android/02-tools/dynamic/xposed_guide/</link><pubDate>Wed, 09 Oct 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/02-tools/dynamic/xposed_guide/</guid><description>&lt;h1 class="heading-element" id="xposed-框架入门">&lt;span>Xposed 框架入门&lt;/span>
 &lt;a href="#xposed-%e6%a1%86%e6%9e%b6%e5%85%a5%e9%97%a8" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>Xposed 是一个在 Android 平台上广受欢迎的动态代码 Hook 框架。与 Frida 主要用于实时、临时的分析不同，Xposed 旨在对系统和应用进行&lt;strong>永久性&lt;/strong>的修改。它通过替换一个核心系统进程 (&lt;code>app_process&lt;/code>)，在应用启动时加载自定义模块，从而实现对任意方法的高效 Hook。&lt;/p></description></item><item><title>SO 动态库编译与加载</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/native/so_compilation/</link><pubDate>Tue, 01 Oct 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/native/so_compilation/</guid><description>&lt;h1 class="heading-element" id="so-动态库编译与加载">&lt;span>SO 动态库编译与加载&lt;/span>
 &lt;a href="#so-%e5%8a%a8%e6%80%81%e5%ba%93%e7%bc%96%e8%af%91%e4%b8%8e%e5%8a%a0%e8%bd%bd" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;blockquote>
&lt;p>&lt;strong>📚 前置知识&lt;/strong>&lt;/p></description></item><item><title>Wireshark 指南</title><link>https://overkazaf.github.io/reverse_engineering/web/02-tooling/wireshark_guide/</link><pubDate>Tue, 24 Sep 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/02-tooling/wireshark_guide/</guid><description>&lt;h1 class="heading-element" id="wireshark-指南">&lt;span>Wireshark 指南&lt;/span>
 &lt;a href="#wireshark-%e6%8c%87%e5%8d%97" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;h2 class="heading-element" id="概述">&lt;span>概述&lt;/span>
 &lt;a href="#%e6%a6%82%e8%bf%b0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>Wireshark 是网络协议分析的“显微镜”。与 Burp/Charles 这种 HTTP 代理不同，Wireshark 捕获的是网卡层的原始数据包（TCP/IP）。&lt;/p></description></item><item><title>Charles Proxy 指南</title><link>https://overkazaf.github.io/reverse_engineering/web/02-tooling/charles_guide/</link><pubDate>Mon, 02 Sep 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/02-tooling/charles_guide/</guid><description>&lt;h1 class="heading-element" id="charles-proxy-指南">&lt;span>Charles Proxy 指南&lt;/span>
 &lt;a href="#charles-proxy-%e6%8c%87%e5%8d%97" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;h2 class="heading-element" id="概述">&lt;span>概述&lt;/span>
 &lt;a href="#%e6%a6%82%e8%bf%b0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>Charles 是 Mac/Windows 上最流行的抓包工具之一，以其界面简洁、功能实用著称。在移动端（Android/iOS）逆向中，Charles 往往是首选的抓包工具。&lt;/p></description></item><item><title>Xposed 内部原理深度剖析</title><link>https://overkazaf.github.io/reverse_engineering/android/02-tools/dynamic/xposed_internals/</link><pubDate>Tue, 27 Aug 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/02-tools/dynamic/xposed_internals/</guid><description>&lt;h1 class="heading-element" id="xposed-内部原理深度剖析">&lt;span>Xposed 内部原理深度剖析&lt;/span>
 &lt;a href="#xposed-%e5%86%85%e9%83%a8%e5%8e%9f%e7%90%86%e6%b7%b1%e5%ba%a6%e5%89%96%e6%9e%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>Xposed 是一个强大的 Android 框架，允许用户在运行时修改系统和应用程序进程的行为，而无需修改任何 APK 文件。本文档深入探讨了 Xposed 工作的核心原理。&lt;/p></description></item><item><title>WebSocket 逆向分析</title><link>https://overkazaf.github.io/reverse_engineering/web/03-basic-recipes/websocket_reversing/</link><pubDate>Fri, 12 Jul 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/03-basic-recipes/websocket_reversing/</guid><description>&lt;h1 class="heading-element" id="websocket-逆向分析">&lt;span>WebSocket 逆向分析&lt;/span>
 &lt;a href="#websocket-%e9%80%86%e5%90%91%e5%88%86%e6%9e%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;h2 class="heading-element" id="概述">&lt;span>概述&lt;/span>
 &lt;a href="#%e6%a6%82%e8%bf%b0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>WebSocket (WS) 是一种全双工协议，常用于即时通讯、股票行情、在线游戏、实时推送等场景。与 HTTP 不同，WS 是一次握手后建立长连接，后续数据都是帧 (Frame) 的形式双向传输。&lt;/p></description></item><item><title>AndroidManifest.xml 深度解析</title><link>https://overkazaf.github.io/reverse_engineering/android/04-reference/foundations/android_manifest/</link><pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/04-reference/foundations/android_manifest/</guid><description>&lt;h1 class="heading-element" id="androidmanifestxml-深度解析">&lt;span>AndroidManifest.xml 深度解析&lt;/span>
 &lt;a href="#androidmanifestxml-%e6%b7%b1%e5%ba%a6%e8%a7%a3%e6%9e%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>&lt;code>AndroidManifest.xml&lt;/code> 是 Android 应用的&amp;quot;大脑&amp;quot;和&amp;quot;蓝图&amp;quot;。它是一个强制性的配置文件，位于每个 APK 的根目录中。该文件向 Android 构建工具、操作系统和 Google Play 描述了应用的基本信息、组件、权限和硬件要求。对于逆向工程师来说，这是了解应用功能、入口点和安全边界的首要切入点。&lt;/p></description></item><item><title>Android 运行时 (ART) 深度解析</title><link>https://overkazaf.github.io/reverse_engineering/android/04-reference/foundations/art_runtime/</link><pubDate>Tue, 07 May 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/04-reference/foundations/art_runtime/</guid><description>&lt;h1 class="heading-element" id="android-运行时-art-深度解析">&lt;span>Android 运行时 (ART) 深度解析&lt;/span>
 &lt;a href="#android-%e8%bf%90%e8%a1%8c%e6%97%b6-art-%e6%b7%b1%e5%ba%a6%e8%a7%a3%e6%9e%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>ART (Android Runtime) 是 Android 5.0 (Lollipop) 之后默认的应用程序运行时环境，取代了旧的 Dalvik 虚拟机 (DVM)。ART 的引入显著改变了 Android 应用的执行方式，旨在提高应用的性能、启动速度和电池续航。&lt;/p></description></item><item><title>DEX 文件相关</title><link>https://overkazaf.github.io/reverse_engineering/android/04-reference/foundations/dex_format/</link><pubDate>Sat, 27 Apr 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/04-reference/foundations/dex_format/</guid><description>&lt;h1 class="heading-element" id="dex-文件相关">&lt;span>DEX 文件相关&lt;/span>
 &lt;a href="#dex-%e6%96%87%e4%bb%b6%e7%9b%b8%e5%85%b3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>DEX (Dalvik Executable) 文件是 Android 操作系统的核心组成部分之一。它们是专门为在内存和处理器速度受限的设备上高效运行而设计的。本指南将深入探讨 DEX 文件的定义、格式、运行原理以及相关工具。&lt;/p></description></item><item><title>APK 文件结构详解</title><link>https://overkazaf.github.io/reverse_engineering/android/04-reference/foundations/apk_structure/</link><pubDate>Wed, 24 Apr 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/04-reference/foundations/apk_structure/</guid><description>&lt;h1 class="heading-element" id="apk-文件结构详解">&lt;span>APK 文件结构详解&lt;/span>
 &lt;a href="#apk-%e6%96%87%e4%bb%b6%e7%bb%93%e6%9e%84%e8%af%a6%e8%a7%a3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;p>APK (Android Package) 是 Android 操作系统用于分发和安装移动应用的文件格式。它本质上是一个 ZIP 归档文件，包含了应用的所有代码、资源、证书等。理解其内部结构是逆向工程和安全分析的第一步。&lt;/p></description></item><item><title>HTTP/HTTPS 协议</title><link>https://overkazaf.github.io/reverse_engineering/web/01-foundations/http_https_protocol/</link><pubDate>Thu, 04 Apr 2024 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/web/01-foundations/http_https_protocol/</guid><description>&lt;h1 class="heading-element" id="httphttps-协议">&lt;span>HTTP/HTTPS 协议&lt;/span>
 &lt;a href="#httphttps-%e5%8d%8f%e8%ae%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h1>&lt;h2 class="heading-element" id="概述">&lt;span>概述&lt;/span>
 &lt;a href="#%e6%a6%82%e8%bf%b0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>HTTP (HyperText Transfer Protocol) 和 HTTPS (HTTP Secure) 是 Web 通信的基础协议。理解这些协议对于 Web 逆向工程至关重要。&lt;/p></description></item><item><title>反检测对抗</title><link>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/</link><pubDate>Fri, 30 May 2025 00:00:00 +0000</pubDate><author>overkazaf@gmail.com (+5)</author><guid>https://overkazaf.github.io/reverse_engineering/android/01-recipes/anti-detection/</guid><description>&lt;p>本节专注于 Android 应用中各类检测与防护机制的分析与绕过。内容涵盖调试器检测、设备指纹识别、验证码防护以及应用加固识别等攻防对抗技术，帮助安全研究人员理解和突破目标应用的安全防线。&lt;/p></description></item></channel></rss>