[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GRY281V2F7C147QY2TMB2Y":3,"skill-same:01M6GRY281V2F7C147QY2TMB2Y":121},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":19,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":40,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M6GRY281V2F7C147QY2TMB2Y","android-re",null,"分析 APK\u002FDEX、Manifest、Java\u002Fsmali、Android 加载环境和运行交互。APK 内原生 .so 主体由二进制分析协助，Android 侧继续负责 JNI 和设备条件。","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002FSKILL.md",[],[20,21,22,23,24,25,26,27,28],"android","re","android re","java","APK","manifest","dex","交互","smali","2026-11-10 10:12:30",false,"---\nname: android-re\ndescription: 分析 APK\u002FDEX、Manifest、Java\u002Fsmali、Android 加载环境和运行交互。APK 内原生 .so 主体由二进制分析协助，Android 侧继续负责 JNI 和设备条件。\n---\n\n# android-re\n\n## 输入与输出\n\n输入为 APK\u002F目录、设备与用户问题；输出为包\u002F签名\u002F组件、DEX\u002FJNI 定位、静态或运行证据、产物与限制。\n\n检查 Manifest、多 DEX 和 native 库，按自有类\u002F入口定位而非只看最大 classes.dex。jadx、apkanalyzer、androguard 等按需发现，反编译失败可对照 smali\u002F字节码。条件跳转与结构体偏移影响结论时核对指令；自写 parser 用已知 fixture 或成熟实现检验。\n\n运行时确认 adb 设备、ABI、权限、应用状态和输入回读；Frida host\u002Fserver 兼容性需实测。Windows SDK\u002F模拟器属于独立后端，WSL 不默认可用。截图、Toast 或回显说明对应输入和状态，正负对照可检验接受判据，未知正例不伪造。\n\n原生 .so 按设备 ABI、JNI_OnLoad\u002FRegisterNatives 与加载条件交 static\u002Fdynamic，Android 侧不退出整个任务。改写\u002F重签输出副本，记录签名与原包差异，不用修改后的接受证明原包行为。设备\u002F图形工具不足时可以交付静态部分。\n\n需要关联运行时方法时，区分 ClassLoader、DEX 身份、方法签名、进程和加载实例；同名方法不自动属于同一实现。离线发现、保存证据与宿主协议检查按需转 `re-dynamic\u002Freferences\u002Fre-workbench.md`；它们不证明 Android attach\u002FJava 观察已可用。\n\n需要完整签名、方法体、字段\u002F字符串使用点、多 DEX 引用与精确分页时，按需读 [DEX 静态索引](references\u002Fdex-static-index.md)。运行观察与 Ghidra 的只读关联见 `re-dynamic\u002Freferences\u002Fstatic-correlation.md`。不要求普通查询先建索引或启动后台实验。\n\n## 会话与交接\n\n按当前问题选方法，可静态先行、动态先行或直接建模。连续实验没有新增证据时盘点前提和可区分解释的实验；时间盒用于复查，可说明价值后继续原路线。\n\n简单单点查询记录最小证据即可；多阶段、恢复或协作任务按需使用 analysis-session，记录关键结论、目标代次、实验干预和未决问题。普通工具事件由运行层记录。候选与外部接受分别说明，可交付限定范围的未完成报告。共享项目写操作协调所有权；未获变更权时先只读。\n\n\n## 按需资料\n\n| 文件 | 何时读 |\n|---|---|\n| `references\u002Fapk-triage.md` | zip 结构与关键条目、AXML\u002FManifest 要点、签名版本判定、多 dex 自有类统计法、flag 形态 regex 集 |\n| `references\u002Fdalvik-notes.md` | smali 速查：常见 opcode 形态、const-string\u002Finvoke 模式、equals 比较点、R 类与命名误导识别 |\n\n## 补充专题入口\n\n- [tools](references\u002Ftools.md)：当前问题涉及文件名对应专题时按需读取。\n","# android-re\n\n## 输入与输出\n\n输入为 APK\u002F目录、设备与用户问题；输出为包\u002F签名\u002F组件、DEX\u002FJNI 定位、静态或运行证据、产物与限制。\n\n检查 Manifest、多 DEX 和 native 库，按自有类\u002F入口定位而非只看最大 classes.dex。jadx、apkanalyzer、androguard 等按需发现，反编译失败可对照 smali\u002F字节码。条件跳转与结构体偏移影响结论时核对指令；自写 parser 用已知 fixture 或成熟实现检验。\n\n运行时确认 adb 设备、ABI、权限、应用状态和输入回读；Frida host\u002Fserver 兼容性需实测。Windows SDK\u002F模拟器属于独立后端，WSL 不默认可用。截图、Toast 或回显说明对应输入和状态，正负对照可检验接受判据，未知正例不伪造。\n\n原生 .so 按设备 ABI、JNI_OnLoad\u002FRegisterNatives 与加载条件交 static\u002Fdynamic，Android 侧不退出整个任务。改写\u002F重签输出副本，记录签名与原包差异，不用修改后的接受证明原包行为。设备\u002F图形工具不足时可以交付静态部分。\n\n需要关联运行时方法时，区分 ClassLoader、DEX 身份、方法签名、进程和加载实例；同名方法不自动属于同一实现。离线发现、保存证据与宿主协议检查按需转 `re-dynamic\u002Freferences\u002Fre-workbench.md`；它们不证明 Android attach\u002FJava 观察已可用。\n\n需要完整签名、方法体、字段\u002F字符串使用点、多 DEX 引用与精确分页时，按需读 [DEX 静态索引](references\u002Fdex-static-index.md)。运行观察与 Ghidra 的只读关联见 `re-dynamic\u002Freferences\u002Fstatic-correlation.md`。不要求普通查询先建索引或启动后台实验。\n\n## 会话与交接\n\n按当前问题选方法，可静态先行、动态先行或直接建模。连续实验没有新增证据时盘点前提和可区分解释的实验；时间盒用于复查，可说明价值后继续原路线。\n\n简单单点查询记录最小证据即可；多阶段、恢复或协作任务按需使用 analysis-session，记录关键结论、目标代次、实验干预和未决问题。普通工具事件由运行层记录。候选与外部接受分别说明，可交付限定范围的未完成报告。共享项目写操作协调所有权；未获变更权时先只读。\n\n\n## 按需资料\n\n| 文件 | 何时读 |\n|---|---|\n| `references\u002Fapk-triage.md` | zip 结构与关键条目、AXML\u002FManifest 要点、签名版本判定、多 dex 自有类统计法、flag 形态 regex 集 |\n| `references\u002Fdalvik-notes.md` | smali 速查：常见 opcode 形态、const-string\u002Finvoke 模式、equals 比较点、R 类与命名误导识别 |\n\n## 补充专题入口\n\n- [tools](references\u002Ftools.md)：当前问题涉及文件名对应专题时按需读取。\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fdev-tools\u002Fcristallin2006-android-re",17,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia","https:\u002F\u002Feth2030.com","Hardcore infra. Building @alt-research and applied cryptography.","2026-11-14 02:27:51",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill android-re",{"tool":49,"command":50},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill android-re",{"tool":52,"command":53},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill android-re","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002FSKILL.md",true,[57,61,67,71,75,79,85,89,93,97,101,105,109,113,117],{"path":58,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":16},"LICENSE","许可证",1140,{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fapk-triage.md","REFERENCE","参考文档",5028,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Freferences\u002Fapk-triage.md",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fdalvik-notes.md",4925,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Freferences\u002Fdalvik-notes.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fdex-static-index.md",5129,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Freferences\u002Fdex-static-index.md",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Ftools.md",1062,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Freferences\u002Ftools.md",{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"scripts\u002F_android_tools.py","SCRIPT","脚本",6923,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Fscripts\u002F_android_tools.py",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"scripts\u002F_dex_index.py",14045,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Fscripts\u002F_dex_index.py",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"scripts\u002Fapk_oracle.py",22767,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Fscripts\u002Fapk_oracle.py",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"scripts\u002Fapk_triage.py",16884,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Fscripts\u002Fapk_triage.py",{"path":98,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":99,"sourceHtmlUrl":100},"scripts\u002Faxml_decompile.py",5089,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Fscripts\u002Faxml_decompile.py",{"path":102,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":103,"sourceHtmlUrl":104},"scripts\u002Fdex_disasm.py",7413,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Fscripts\u002Fdex_disasm.py",{"path":106,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":107,"sourceHtmlUrl":108},"scripts\u002Fdex_index.py",7350,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Fscripts\u002Fdex_index.py",{"path":110,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":111,"sourceHtmlUrl":112},"scripts\u002Fdex_triage.py",9591,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002Fscripts\u002Fdex_triage.py",{"path":114,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":115,"sourceHtmlUrl":116},"SOURCE.md",360,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002FSOURCE.md",{"path":118,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":119,"sourceHtmlUrl":120},"TRUST.auto.yaml",2087,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-android-re\u002FTRUST.auto.yaml",[122,150,173,191,204,214],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":126,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":29},"01M712C436EQYE43342Q4E7GG1","recipe-performance","Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold\u002Fwarm\u002Fbackground-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout\u002Fpaint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FSKILL.md",[],[130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":154,"licenseFileUrl":155,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":29},"01M70XT2F8A5CQZ81JBP98KSW3","mexc-spot-websocket","MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FSKILL.md",[],[159,160,161,162,163,164,165,166,167,168,169,170,171,172],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":154,"licenseFileUrl":177,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":29},"01M70XT0MBXN3WZY1BKN0CPNKR","mexc-spot-rest","MEXC Spot REST workflows for public data, signed account requests, orders, wallet\u002Fadmin actions, and secure signing without exposing API keys.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FSKILL.md",[],[181,160,182,183,184,185,186,170,169,168,187,188,189,164,190,163,162],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":154,"licenseFileUrl":195,"sourceHtmlUrl":196,"categories":197,"keywords":198,"publishedAt":29},"01M70XSYSVZ2N0N91XCAR2CAK0","mexc-futures-websocket","MEXC Futures WebSocket workflows for public streams, private account\u002Forder\u002Fposition streams, ping\u002Fpong, subscriptions, and depth maintenance.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSKILL.md",[],[199,200,161,201,202,171,169,203,167,166,164,163],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":205,"name":206,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":207,"sourceHtmlUrl":208,"categories":209,"keywords":210,"publishedAt":29},"01M6H0ZWHVE5W04WG2DKQE2SQC","0xklen-version-and-refresh-sanctions-lists","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FSKILL.md",[],[211,212,213],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":218,"sourceHtmlUrl":219,"categories":220,"keywords":221,"publishedAt":29},"01M6H0Z28Q3R8J0S799GJQWXM3","verify-tests-cover-changed-lines","Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FSKILL.md",[],[222,223,224,225,226,227,228,229,230,231,232],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","use","patch","code","share"]