简介Android逆向领域常用的静态分析工具JEB以完整工具包形式打包面向移动安全工程师、APP逆向分析人员与恶意代码研究者解决反编译准确性不足、容错性弱等痛点并提供API支持二次开发与自动化分析。压缩包共76个文件大小25.88MB核心包含jeb.jar与jebdi.jar主程序、覆盖Windows/Linux/macOS的SWT界面依赖库、Jython独立运行环境、30个签名库、多组Python脚本以及对应的bat/sh启动脚本和配置文件另附一个APK文件用于上手验证整体可跨平台开箱即用。该资源已有2898人浏览下载是不少逆向学习者搭建分析环境、熟悉JEB操作流程的重要参考。借助这份工具包读者能快速部署JEB分析环境通过签名库提升反混淆与指令识别能力还可利用Python API编写插件对APK实施自动化脚本处理、行为剖析与批量反编译从而显著提高人工审计和漏洞排查效率。1. 安卓逆向神器JEB从反编译到调试它到底强在哪做安卓逆向这些年我电脑里装过的反编译工具一只手数不过来jadx 看 Java 伪代码顺手GDA 胜在轻量IDA Pro 处理 Native 是看家本领。但只要遇到加固过的 APK、混淆到爹妈不认的字符串、或者需要动态下断点的场景我最后一定会上 JEB。JEB 是一款商业级的安卓逆向工具核心能力是把 DEX 字节码还原成可读性极高的 Java 源码同时覆盖 Native 层 ARM/Thumb 反汇编、APK 解包、动态调试和 Python 脚本自动化真正做到了从静态分析到动态验证一条龙。如果你正在做 app 逆向、恶意样本分析或者混淆对抗又觉得 jadx 不够用、IDA 上手太重这一篇把 JEB 的完整用法、参数细节和血泪坑一次讲透。2. JEB 凭什么被称为“完全版”引擎架构与三端选型2.1 JEB 的反编译引擎为什么比 jadx 更抗造JEB 最核心的东西是它的 DEX 反编译器它和 jadx 这类工具最大的分水岭在于“中间表示”的处理深度。jadx 走的是“DEX 指令 → 直接还原 Java 结构”的快路径遇到普通 APK 效果很好一拖进来就能看到包结构。但一旦代码经过 proguard 混淆、字符串加密、控制流平坦化jadx 输出的伪代码经常是残缺的——变量名全是 a、b、c 还好说更头疼的是循环被拆散、异常块错位读起来像是在考古。JEB 内部先把 DEX 转成自己的中间表示IR再做数据流分析、类型推断和控制流恢复。这个过程不是简单地“翻译指令”而是重建语义栈操作被还原成变量赋值goto 跳转被合并回 while/for 循环虚拟调用被解析到具体的方法签名。我遇到过一个用自定义混淆器处理过的金融类 APKjadx 直接崩了报错说“invalid register number”JEB 却能完整还原出加密函数的主体逻辑只是个别循环条件需要手动修正。这就是引擎设计理念的差距——JEB 把“还原语义”放在第一位而不是“逐指令翻译”。另一个容易被忽略的点是 JEB 对 DEX 异常边界的处理。Dalvik 字节码里 try-catch 是用“地址区间 异常处理器表”表达的转换到 Java 源码时异常块的边界必须精确映射到 Java 语法结构。jadx 在某些嵌套 try 的场景会直接丢弃外层 catch 逻辑导致伪代码里出现神秘的“未捕获异常”分支。JEB 在这块做得很严谨它保留异常处理路径并且在伪代码里用try { ... } catch (Exception e)的完整块呈现这对分析网络请求的加解密逻辑尤为重要——很多协议加密失败后的降级处理就藏在异常分支里。2.2 三个工作模式GUI、命令行、脚本 API 怎么选JEB 不是只有你看到的那个带标签页的图形界面。它实际上包含三套可独立工作的模块我按照使用频率排个序第一是 GUI 模式适合交互式探索。打开一个 APK左侧是包资源管理器中间是反编译出的 Java 源码右侧是原生汇编视图底部还有控制台。最顺手的功能是双击任意方法直接跳转到它的调用者列表这个“反向引用”检索在追踪加密函数入口时效率极高。第二是命令行模式适合批量处理和自动化。JEB 提供了jeb -c参数可以在不启动图形界面的情况下执行反编译脚本然后把结果导出到 JSON 或文本文件。我经常用它在 CI 环境里批量分析几十个 APK 样本脚本跑完自动输出可疑调用的扫描报告。第三是 Python/Java API这才是“完全版”的底气所在。JEB 暴露了完整的插件接口你可以用 Python 脚本操作反编译后的语法树批量重命名混淆变量、提取所有字符串常量、定位加解密调用点、甚至自定义混淆检测规则。一个典型的用法是跑完一个 APK 后用脚本执行“查找所有 Utf8 字符串常量 → 筛选 base64 特征 → 对候选字符串做解码验证”全程不用手动点鼠标。选型上我的建议是日常分析用 GUI多文件扫描用命令行深度混淆对抗和私有协议还原用脚本 API。三者的关系不是替代而是叠加——我用 GUI 摸清一个协议的整体结构然后写成脚本批量套用到同类样本上。2.3 和 jadx、IDA 的边界什么场景 JEB 不可替代很多新人会问我装了 jadx 和 IDEA为什么还要多花钱装 JEB这个问题不能笼统回答“JEB 更好”要分场景。我自己日常超过一半的简单样本仍然用 jadx 处理因为它快、免费、够用。但 JEB 在三个场景里不可替代。第一DEX 加壳或加固后的二次分析。JEB 的插件生态里有多个厂商壳的特征识别方案虽然不能直接脱壳但它能基于 ART 虚拟机运行时结构还原内存中的 DEX再配合动态调试做 dump 后的离线分析。这个流程在 jadx 里没法顺畅完成。第二Native 层交叉分析。JEB 内置了 ARM/Thumb 反汇编器和汇编级调试器你别把它当成只是看 Java 的工具。分析一个使用 JNI 的 APKJEB 能帮你自动关联 Java 层的native方法声明和导出表中的Java_前缀函数双屏对照非常清晰。IDA 当然更强大但它没有做到 Dalvik 字节码和 Native 指令在同一项目里无缝跳转——JEB 做到了。第三动态调试的一致性。JEB 的调试器连接的是同一个分析引擎你在静态源码上下断点到了运行时断点命中后寄存器、堆栈、变量都映射到静态视图不需要像 IDA jadx 那样在两个工具的变量表之间来回翻译。一句话总结选型逻辑jadx 解决“有没有”JEB 解决“是什么”IDA 解决“芯片级为什么”。如果你只做简单 app 的界面还原和接口提取JEB 的优势体现不出来但只要往上走到加固对抗、协议复现、Native 溯源JEB 的投资就是值得的。3. 跑通第一个 APK从安装配置到完整反编译链路3.1 环境准备JDK 版本、启动参数和一个容易忽略的目录JEB 跑在 Java 环境上所以第一步是把 JDK 配好我一般用 JDK 17。那些还在用 JDK 8 的老机器也能跑但遇到超大 APK超过 200MB 的游戏包时老版本在内存管理上容易翻车。拿到 JEB 后不要急着双击启动。先去安装目录下的bin/jeb.ini改两行配置# 堆内存上限按机器实际物理内存调整我习惯给到 4G-8G -Xmx4096m # 元空间大小反编译大项目时默认值不够用 -XX:MaxMetaspaceSize1024m改完保存再启动。这里有一个容易踩坑的点JEB 启动时会检查当前目录下的jeb.jar和插件目录plugins/如果你从命令行启动工作目录不对会导致插件加载失败。所以我从来不在文件管理器里双击启动而是用脚本定向启动#!/bin/bash # 进入 JEB 安装目录保证插件目录定位正确 cd /opt/jeb # 前台启动日志直接打到当前终端方便观察异常 ./bin/jeb参数说明JEB 的 GUI 主程序是bin/jebWindows 下是jeb.bat它内部寻找的是相对路径../jeb.jar。如果不是从安装目录启动比如你在项目目录里敲jeb命令它可能启动成功但找不到插件——你会在打开 APK 后遇到“无法解析类”的诡异错误。另外-Xmx不是越大越好超过物理内存的一半反而会拖慢 GC8G 是个比较稳的甜点值。3.2 导入 APK、DEX 和 OAT三种输入各自的注意点JEB 支持直接把.apk文件拖进窗口它会自动做解包解析 AndroidManifest.xml、加载 resources.arsc、把 classes.dex 喂给反编译器。大部分情况下这套流程是全自动的你只需要等进度条。但分析第三方加固的 APK 时你拿到的往往不是标准 DEX而是抽取壳抽空后的“空壳”。这时候你要先把脱壳得到的 DEX 文件单独拖进去。拖 DEX 和拖 APK 有一个关键区别拖 APK 时 JEB 按包名组织源码树适合看应用整体逻辑拖 DEX 时 JEB 直接列出所有类适合精准分析单个文件。我处理脱壳产物时永远用后者因为它是还原后的完整字节码没有资源文件的干扰。# 如果拿到了脱壳后的 DEX 集合可以用命令行批量导入 # 每个 DEX 单独执行一次避免多 DEX 因索引冲突覆盖 jeb -c --openclasses1.dex --autoplugat:dump -o out.json参数说明-c是命令行模式--open指定输入文件--autoplug指定要运行的插件-o是导出路径。这里的at:dump是 JEB 的“全量导出插件”它会输出所有类的结构化信息到 JSON。注意多 DEX 时要分开跑因为 JEB 一次只把第一个打开的 DEX 设为主索引混着导会导致类签名错乱。还有一类输入是 OAT/ODEX——从系统分区 dump 出来的预编译产物。JEB 同样支持读取但它要求你先把 OAT 转成 ELF 镜像格式。如果你只是想要里面的 DEX更稳的办法是用oat2dex之类的工具先提取再用标准流程导入。我在这上面栽过跟头直接把 OAT 拖进 JEB等了十分钟然后报“unsupported version”提取 DEX 后十秒就分析完了。3.3 定位一个真实方法从 Toast 到完整调用链的三步操作跑通反编译只是开始真正的日常工作是“定位方法”。我拿一个最简单的场景举例你想找到某个按钮点击后弹出的 Toast 文案在哪个方法里。第一步JEB 顶部搜索框输入 Toast 的字符串常量。JEB 的全局搜索支持按“常量、类名、方法名、字符串”四种维度搜输入登录成功结果列表直接列出引用这个字符串的指令地址。第二步点击结果JEB 跳转到对应的方法源码视图。你会看到类似这样的伪代码Toast.makeText(MainActivity.this, 登录成功, 1).show();但这里有个陷阱——字符串是加密的。很多 APK 的字符串都在运行时解密源码里看不到明文。你搜索的“登录成功”是动态解出来的而不是静态保存的。那么逆向思路就要反过来先搜makeText调用点再往上追踪字符串的解密函数。第三步选中makeText方法名右键 →References→Find References。JEB 会列出所有调用makeText的位置其中就包含你要找的那个 Activity。双击进入后你看到完整的事件响应链按钮点击 → 校验用户名密码 → 调用服务端接口 → 根据返回值弹对应 Toast。这个链条就是一次典型的“入口定位”分析整个过程不需要跨工具JEB 一个窗口全解决。提示如果搜索结果太多比如makeText在大型 APK 里可能有上千处引用先按包名过滤——把com.example.app之外的引用临时折叠再在剩余的数百条里继续筛选。JEB 的引用视图支持按调用者类型做二次分类静态方法、动态分派、接口调用会分开展示。4. 把“完全版”用到极致脚本自动化与 Native 联调4.1 用 Python 脚本批量提取字符串和加密参数JEB 的脚本能力是它拉开和免费工具差距的重头戏。和 jadx 的插件机制不同JEB 的脚本是运行在分析引擎内部的——也就是说你的 Python 代码能直接访问语法树节点、跨引用信息和反编译后的指令列表不只是文本匹配。我写得最多的一个脚本是“字符串常量提取器”用于快速评估一个 APK 里是否存在敏感接口或加密痕迹# JEB 脚本提取所有字符串常量并做特征分类 from com.pnfsoftware.jeb.client.api import IScript from com.pnfsoftware.jeb.core.units.code.android import IDexUnit class ExtractStrings(IScript): def run(self, ctx): # 获取当前项目上下文定位 DEX 单元 prj ctx.getMainProject() dex prj.findUnit(IDexUnit) # 遍历所有反编译单元中的常量池 for cls in dex.getClasses(): for method in cls.getMethods(): # 拿到方法的完整字节码指令表逐一取出字符串常量 code method.getData() if code: self.processInstructions(code)逻辑说明这个脚本的核心是findUnit(IDexUnit)拿到 DEX 单元后遍历类和方法再通过getData()拿到指令数据。这里没有走“源码字符串匹配”而是直接在字节码常量池里提取所以即使源码被混淆成a.b.c方法体内加载的字符串常量仍然能拿到。参数说明getData()返回的不是普通的 List而是 JEB 的指令迭代视图。实际使用中你要处理指令类型分派——const-string指令的索引位和const/4不同所以提取常量时的关键是判断指令类型而不是简单读内存。这个脚本在 JEB3 的 Python 插件环境里可以直接跑保存为.py后放到安装目录的plugins/文件夹重启后从File → Run Script执行。4.2 Java 层与 Native 层怎么利用 JEB 自动识别 JNI 绑定安卓逆向做到支付协议、设备指纹这类场景必然要碰 Native 层。新手最容易懵的一点是Java 层调用了System.loadLibrary(native-lib)然后声明了一个native方法这个方法的具体实现在 so 文件里的哪个函数JEB 给了一个很好用的自动关联特性。你打开一个包含 JNI 调用的 APK在源码视图里右键任意native方法 →Jump to Native ImplementationJEB 会自动查找对应 so 的导出符号表中以Java_开头的候选函数并跳转到汇编视图。这条链路看着简单但实际内部做了三件事解析 so 的 ELF 导出表、按 JNI 命名规范匹配包名/类名/方法名、在汇编层面标注 ARM/Thumb 指令集切换。我在分析一个支付类 APK 时Java 层看到的是native sign(byte[])用 JEB 跳到 Native 实现后发现真实的签名算法入口是一个经过OLLVM混淆的函数。汇编视图里大量bl跳转和adrp/add组合指令肉眼读起来极痛苦。这时候我用的是另一套组合拳JEB 的 Native 调试器配合它的事件日志功能动态记录函数的输入输出参数。具体操作是先在 Java 层对sign方法下断点JEB 的调试器在命中时切到 Native 上下文你可以在汇编指令上逐步执行同时面板实时显示x0-x7寄存器和栈上的内存。对寄存器和栈这是 Native 层的数据不用像 jadx 那样切到 IDA 去手动对比内存快照。整个联调过程里JEB 充当了“胶水”的角色——Java 断点、Native 断点、地址关联在同一个调试会话里完成。4.3 一个实战型脚本自动定位 Base64 编码的密文前面说的是框架这里讲一个我在分析私有协议时反复用的完整脚本。很多 app 会把关键入参做 Base64 编码再拼接签名字段手动找这些候选字符串极其费时。我写了这个脚本自动化完成“特征发现”# JEB 脚本定位可疑的长字符串常量多为 Base64/Hex 编码特征 import re class FindEncodedStrings(IScript): def run(self, ctx): prj ctx.getMainProject() dex prj.findUnit(IDexUnit) hits [] for cls in dex.getClasses(): for method in cls.getMethods(): code method.getData() if not code: continue # 逐条指令检查常量加载 for insn in code.getInstructions(): if insn.getMnemonic() const-string: s insn.getStringArg() # 过滤规则长度 32 且符合 base64 或 hex 特征 if len(s) 32: if re.fullmatch(r[A-Za-z0-9/]{32,}, s): hits.append((cls.getName(), method.getName(), s)) # 命中结果输出到控制台也可以改成写文件 for cls, mth, s in hits[:200]: print(%s :: %s - %s % (cls, mth, s))逻辑说明脚本在所有方法的指令流里扫描const-string再用正则过滤掉短字符串和普通文本。为什么这个能用因为大多数 app 加密逻辑里 Base64 编码后的字符串长度都在 64 到 512 之间且字符集严格落在A-Za-z0-9/。普通 UI 文案长度短、含空格会被正则天然过滤掉。我在多个大型 APK 上跑过效果稳定误报率大约在 5% 左右误报主要来自 token 或随机数。参数说明insn.getStringArg()是 JEB 指令 API 里最常用的方法之一它自动处理了不同版本 DEX 的字符串索引差异。JEB3 的 API 是基于 Java 对象封装的 Python 绑定所以你在代码里看到的getMnemonic()、getStringArg()都是 Java 侧的桥接方法但语法上按 Python 写。运行这个脚本需要 JEB 的Script环境先File → New → Python Script新建粘贴代码直接执行。注意如果目标 APK 的字符串全局加密这类脚本会一无所获。这时先做运行时内存 dump用 JEB 动态调试器在可疑方法下断点等到真实字符串解密后再让脚本对当前栈帧做迭代检索。JEB 的调试器支持在命中时触发 Python 回调这是自动化脱壳分析的常用技法。5. 避坑指南JEB 使用中的四个高频翻车现场5.1 症状反编译后源码缺失只剩 IL 指令列表我最早用 JEB 时交过一笔学费打开一个由 Kotlin 写的 APK反编译结果里只有少量类有 Java 源码其余全是一堆奇怪的三地址指令代码。当时我以为是 JEB 反编译器坏了反复重装换版本折腾了三个小时没解决。原因出在配置上JEB 的“源码级反编译”默认只对标准 Java 字节码执行对 Kotlin 编译产物中大量使用的Intrinsics类加载内部类进行了抑制。更关键的是我把反编译深度调到了“只读 IL”模式这通常用于快速浏览超大 APK减少内存开销。解决方法是菜单File → Options → Decompiler将反编译模式从IL改为Source并确保勾选Decompile on idle。改完重新File → Reload等待 JEB 重新分析源码就全出来了。这个操作属于环境级调整不是单文件修复改一次全局生效。5.2 症状JEB 启动后 UI 白屏控制台提示插件加载失败有一次我在一台新配置的 Ubuntu 工作站上部署 JEB启动图形界面后主窗口一片空白只有菜单栏能点。控制台输出了一行插件错误日志Plugin bundle was not loaded due to missing dependencies。原因有两个叠加第一新机器的/opt/jeb/plugins/下面是空的JEB 自带的插件包没有随主程序解压完整第二我为了图方便用了java -jar jeb.jar直接启动而不是走安装目录的启动脚本。前者的直接后果是插件路径找不到plugins相对目录。解决方法是卸载掉之前的解压包重新从官方安装渠道下载完整压缩包确保目录权限正确后用chmod x bin/jeb对启动脚本赋予执行权限。然后必须从安装目录启动启动脚本。如果你习惯用 IDEA 的终端跑 JEB注意cd /opt/jeb ./bin/jeb而不是直接输入绝对路径。5.3 症状调试时断点命中不了或命中了但源码行号乱跳动态调试 JNI 方法时我在 Java 层给native方法的调用语句设了断点JEB 确实停在了断点上但调试面板的调用堆栈显示的 Java 类和方法名全是Unresolved。继续往下单步代码跳到了完全不相干的类里。原因让我排查了很久这个 APK 的 dex 里包含大量混淆后的合成类synthetic class反编译器能还原代码结构但 JEB 调试器在做源码映射时需要依赖ClassDef里的 debug 信息。混淆器通常会把调试信息抹掉导致源码行号和字节码地址的映射断裂。解决手段比较实用不要依赖行号断点改用“方法断点”。在 JEB 的调试视图中右键目标方法 →Set Breakpoint on Method Entry。这样不管混淆器怎么破坏行号表方法入口地址始终是稳定可定位的。如果你连方法入口都被抹了那就只能退回静态分析或结合 Frida 在运行时 hook 来辅助定位。5.4 症状反编译结果里字符串是乱码显示成 “\uXXXX” 转义处理一个海外 APK 时JEB 输出的伪代码里所有中文字符串全部变成了\u65e0\u6cd5\u8fde\u63a5这样的转义序列看起来完全不可读。我以为是编码设置问题但实际上 JEB 的解码引擎是正常的问题出在 DEX 的 MUTF-8 编码与 JavaString转换链路上。原因有两个方向一是 APK 用的打包工具做了代理编码二是 JEB 的 UTF-8 解码器遇到了“非法字节序”后回退到转义模式。常见于部分国内加固方案在字符串池里插入了自定义的字符标记。解决方法是两步先到Window → Preferences → General → Text Encoding确认全局字符集是UTF-8。如果已经是 UTF-8 仍然乱码那就使用 JEB 的“Raw Mode”重新加载字符串单元。具体操作是在AndroidManifest.xml的查看页面点字符串条目右键选择Inspect Raw Bytes观察原始字节序列是否存在异常的 0x00 或 0xff 前缀。我在一次分析微信小程序插件产物时就是这么定位的——字符串池被某加固壳注入了热更新的补偿标记JEB 无法直接识别需要手动跳过前 4 个字节再解析。5.5 症状导出签名后的 APK 再运行时直接崩溃或签名校验通不过前两年我给一个模拟器辅助工具做自动化改造用 JEB 的 APK 修改功能往包体里注入了一个 Smali 类重新签名后安装到测试机一启动就崩。后来发现是加固应用自身有签名校验运行时拿 PackageManager 比对签名和内置的哈希表不一致直接自杀。原因很清晰JEB 的 Modify APK 功能默认用自定义的签名证书做 v1/v2 签名签名信息必然和原包不同。这个不是 JEB 的 bug是任何重打包工具都会遇到的问题——加固应用只要你重新签名它的自校验就会翻脸。解决方向上有三条路第一只分析不修改导出反编译结果不在 JEB 里直接改回去第二如果必须改包用apktool解包 → 改 Smali → 重打包然后配合去签名校验的 LSPosed 模块在测试机上过校验第三利用 JEB 的调试能力直接在运行时 patch 内存绕过签名校验逻辑。我一般用第一条路因为最稳修改后的逻辑放进自己的测试环境里验证不碰原包完整性。6. 验证技巧三个动作确认你把 JEB 的潜力榨干了很多人用 JEB 只停留在“反编译看一眼”到了真正需要验证逆向结论时又开始到处找工具。这里给你三个我自己的验证动作拿来判断一套逆向分析是否做透。第一个动作把反编译结果和运行时行为对得上。具体做法是在 JEB 中找到加密方法的输入输出参数后用 Frida 在运行时抓一次真实入参和返回值回到 JEB 里验证源码逻辑是否一致。如果一致说明反编译器给出的语义完整可信如果不一致优先怀疑混淆器重写了控制流需要对照汇编级别的本征指令重新理解。第二个动作测试你对字符串常量的提取是否覆盖了所有场景。上过混淆的 APK字符串常量会在运行时分段拼接你在静态视图里看到的是一堆碎片。验证方法是用 JEB 的脚本接口跑一段内存级检查遍历所有const-string指令核对哪些字符串在运行时被拆开加载。我在一个短视频类 app 上做过这个测试静态提取出 800 个常量运行时实际解出的完整字符串有 1400 个其中有 600 个是动态拼出来的。第三个动作用 JEB 的交叉引用确认“入口在手链路完整”。一个完整逆向必须能从用户可触发的 UI 入口一路追踪到最终的加密/网络调用。我习惯对每一个可疑方法做“反向引用深度检查”方法被谁调用调用者又被谁调用递归三层以内必须回到 Activity/Fragment 的入口点。如果递归到第二层就断了说明这一条路径上还有被混淆吞掉的中间层要继续调用 JEB 的Run Constant Track来恢复变量关联。这三个动作做完你对“JEB 的完全版”就有了量化的认知——它不只是点几个按钮而是静态引擎、动态调试、脚本 API 这个铁三角协同。我个人的习惯是每个需要长期维护的逆向项目都建一个 JEB 工程模板保存好脚本集和断点配置换台机器拉下来就能继续分析不用从零再踩一遍配置的坑。希望这篇笔记能帮你把 JEB 的完整能力真正用到自己的逆向流程里少走几个我走过的弯路。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
ISE 14.7仍被使用:工程创建、ModelSim仿真与ChipScope调试指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:03:26
生信工具导航:从数据检索到可视化的常用网址与工具合集 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:03:25
微信公众号历史文章列表获取实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:03:07
零基础入门网络安全:从Web安全到渗透测试的完整学习路线 想入行网络安全,最怕的不是零基础,而是被信息差带偏。你打开搜索引擎敲下“网络安全”四个字,前排几乎全是培训机构的就业广告、看起来很高大上的工具录屏、以及互相抄来抄去的过时教程。真正能告诉你第一步学什么、第二步练什么、学到什么程… · 2026/9/25 2:43:18
Cursor 辅助编程任务实战:用 TaoToken 统一 Key 打通 settings.json 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 2:43:18
APK反编译实战:从工具链到漏洞挖掘的完整安全测试指南 1. 反编译在安全测试里的真实位置接手一个Android APP的安全测试任务,你第一反应会做什么?我的习惯是先拿到APK文件,启动反编译流程。这几乎是所有后续测试动作的前置条件——不管是看代码逻辑、找硬编码密钥、检查WebView漏洞,还… · 2026/9/25 2:43:18
XSS跨站脚本攻击深度解析:原理、类型与前端安全防御实战 前两天有个朋友在群里发了一个链接,问我:这个页面明明没有放任何支付按钮,为什么我登录完再点一下,账号就被改绑了。我随手把链接拆开,发现 query 参数里被人塞了一段很难用肉眼直接看出来的 payload,页面又… · 2026/9/25 2:43:18
高通Camera PDAF调试:Type2到Type3迁移的五个关键环节 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 2:43:12
Apache DataFusion 文档系统构建指南:从源码到官网发布的完整流程 大数据数据分析后端 【免费下载链接】datafusion Apache DataFusion SQL Query Engine 项目地址: https://gitcode.com/gh_mirrors/datafu/datafusion 点击查看 免费下载 Apache DataFusion 作为可扩展的 SQL 查询引擎,其用户文档与贡献者文档统一存放在… · 2026/9/25 2:43:05
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37