[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71D6X4FSWYSGE5GPXHHNMCG":3,"skill-same:01M71D6X4FSWYSGE5GPXHHNMCG":111},{"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":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":14,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M71D6X4FSWYSGE5GPXHHNMCG","devel-jb-kotlin-tooling-agp9-migration",null,"--| | `android.uniquePackageNames` | `false` | `true` | Ensure each library has a unique namespace | | `android.","DCx7C5\u002Fai-marketplace","DCx7C5","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42419559?v=4","01M71C01G2AZV3NTNGWAWSHJPP","DC","01M71C01GQW6G50S2BYMS7PP3E",0,"MIT","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28],"devel jb kotlin tooling agp9 migration","tooling","migration","kotlin tooling","kotlin","android","true","library","cybersecurity","false","2026-11-10 10:12:30",false,"---\nname: devel-jb-kotlin-tooling-agp9-migration\ndescription: \"--| | `android.uniquePackageNames` | `false` | `true` | Ensure each library has a unique namespace | | `android.\"\ndomain: cybersecurity\n---\n\n--|\n| `android.uniquePackageNames` | `false` | `true` | Ensure each library has a unique namespace |\n| `android.enableAppCompileTimeRClass` | `false` | `true` | Refactor `switch` on R fields to `if\u002Felse` |\n| `android.defaults.buildfeatures.resvalues` | `true` | `false` | Enable `resValues = true` where needed |\n| `android.defaults.buildfeatures.shaders` | `true` | `false` | Enable shaders where needed |\n| `android.r8.optimizedResourceShrinking` | `false` | `true` | Review R8 keep rules |\n| `android.r8.strictFullModeForKeepRules` | `false` | `true` | Update keep rules to be explicit |\n| `android.proguard.failOnMissingFiles` | `false` | `true` | Remove invalid ProGuard file references |\n| `android.r8.proguardAndroidTxt.disallowed` | `false` | `true` | Use `proguard-android-optimize.txt` only |\n| `android.r8.globalOptionsInConsumerRules.disallowed` | `false` | `true` | Remove global options from library consumer rules |\n| `android.sourceset.disallowProvider` | `false` | `true` | Use `Sources` API on androidComponents |\n| `android.sdk.defaultTargetSdkToCompileSdkIfUnset` | `false` | `true` | Specify `targetSdk` explicitly |\n| `android.onlyEnableUnitTestForTheTestedBuildType` | `false` | `true` | Only if testing non-default build types |\n\nCheck for and remove properties that now cause errors:\n- `android.r8.integratedResourceShrinking` — removed, always on\n- `android.enableNewResourceShrinker.preciseShrinking` — removed, always on\n\n## Pure Android Tips\n\nFor non-KMP Android modules upgrading to AGP 9.0:\n\n- **Remove `org.jetbrains.kotlin.android`** plugin — AGP 9.0 includes Kotlin support built-in (see \"Built-in Kotlin Migration\" above)\n- **Migrate kapt** to KSP or `com.android.legacy-kapt`\n- **Migrate `kotlinOptions`** to `kotlin { compilerOptions {} }`\n- **Migrate `kotlin.sourceSets`** to `android.sourceSets` with `.kotlin` accessor\n- **Review new DSL interfaces** — `BaseExtension` is removed; use `CommonExtension` or specific extension types\n- **Java default changed** from Java 8 to Java 11 — ensure `compileOptions` reflects this\n- **R class is now compile-time non-final** in app modules — refactor any `switch` statements on R class fields to `if\u002Felse`\n- **targetSdk defaults to compileSdk** if not set — specify `targetSdk` explicitly to avoid surprises\n- **NDK default changed to r28c** — specify `ndkVersion` explicitly if using native code\n- **Temporary opt-out**: `android.builtInKotlin=false` + `android.newDsl=false` in `gradle.properties` (removed in AGP 10)\n\n## Verification\n\nAfter migration, verify with the [checklist](assets\u002Fchecklist.md). Key checks:\n\n1. `.\u002Fgradlew build` succeeds with no errors\n2. `.\u002Fgradlew :androidApp:assembleDebug` succeeds (if app module exists)\n3. No `com.android.library` or `com.android.application` in KMP modules\n4. No `org.jetbrains.kotlin.android` in AGP 9.0 modules\n5. Source sets use correct names (`androidMain`, `androidHostTest`, `androidDeviceTest`)\n6. No deprecation warnings about variant API\n7. Run configurations point to correct modules\n\n## Common Issues\n\nSee [references\u002FKNOWN-ISSUES.md](references\u002FKNOWN-ISSUES.md) for details. Key gotchas:\n\n### KMP Library Plugin Issues\n- **BuildConfig unavailable** in library modules — use DI\u002F`AppConfiguration` interface, or use [BuildKonfig](https:\u002F\u002Fgithub.com\u002Fyshrsmz\u002FBuildKonfig) or [gradle-buildconfig-plugin](https:\u002F\u002Fgithub.com\u002Fgmazzo\u002Fgradle-buildconfig-plugin) for compile-time constants\n- **No build variants** — single variant architecture; compile-time constants can use BuildKonfig\u002Fgradle-buildconfig-plugin flavors, but variant-specific dependencies\u002Fresources\u002Fsigning must move to app module\n- **NDK\u002FJNI unsupported** in new plugin — extract to separate `com.android.library` module\n- **Compose resources crash** without `androidResources { enable = true }` (CMP-9547)\n- **Consumer ProGuard rules silently dropped** if not migrated to `consumerProguardFiles.add(file(...))` in new DSL\n- **KSP** requires version 2.3.4+ for AGP 9.0 compatibility\n\n### AGP 9.0 General Issues\n- **Built-in Kotlin conflicts** — `org.jetbrains.kotlin.android` must be removed; kapt must be replaced\n- **BaseExtension removed** — convention plugins using old DSL types need rewriting\n- **Variant APIs removed** — `applicationVariants`, `libraryVariants`, `variantFilter` replaced by `androidComponents`\n- **R class non-final** — `switch` on R fields fails in app modules; refactor to `if\u002Felse`\n- **targetSdk defaults to compileSdk** — set explicitly to avoid unexpected behavior changes\n- **R8 rule changes** — strict full mode, no global options in consumer rules\n- **Plugin compatibility** — many plugins need updates or opt-out flags; check Plugin Compatibility section\n- **Convention plugins** need refactoring — old `android {}` extension helpers are obsolete\n\n## Reference Files\n\n- [DSL Reference](references\u002FDSL-REFERENCE.md) — side-by-side old→new DSL mapping\n- [Version Matrix](references\u002FVERSION-MATRIX.md) — AGP\u002FGradle\u002FKGP\u002FIDE compatibility\n- [Plugin Compatibility](references\u002FPLUGIN-COMPATIBILITY.md) — third-party plugin status and workarounds\n","--|\n| `android.uniquePackageNames` | `false` | `true` | Ensure each library has a unique namespace |\n| `android.enableAppCompileTimeRClass` | `false` | `true` | Refactor `switch` on R fields to `if\u002Felse` |\n| `android.defaults.buildfeatures.resvalues` | `true` | `false` | Enable `resValues = true` where needed |\n| `android.defaults.buildfeatures.shaders` | `true` | `false` | Enable shaders where needed |\n| `android.r8.optimizedResourceShrinking` | `false` | `true` | Review R8 keep rules |\n| `android.r8.strictFullModeForKeepRules` | `false` | `true` | Update keep rules to be explicit |\n| `android.proguard.failOnMissingFiles` | `false` | `true` | Remove invalid ProGuard file references |\n| `android.r8.proguardAndroidTxt.disallowed` | `false` | `true` | Use `proguard-android-optimize.txt` only |\n| `android.r8.globalOptionsInConsumerRules.disallowed` | `false` | `true` | Remove global options from library consumer rules |\n| `android.sourceset.disallowProvider` | `false` | `true` | Use `Sources` API on androidComponents |\n| `android.sdk.defaultTargetSdkToCompileSdkIfUnset` | `false` | `true` | Specify `targetSdk` explicitly |\n| `android.onlyEnableUnitTestForTheTestedBuildType` | `false` | `true` | Only if testing non-default build types |\n\nCheck for and remove properties that now cause errors:\n- `android.r8.integratedResourceShrinking` — removed, always on\n- `android.enableNewResourceShrinker.preciseShrinking` — removed, always on\n\n## Pure Android Tips\n\nFor non-KMP Android modules upgrading to AGP 9.0:\n\n- **Remove `org.jetbrains.kotlin.android`** plugin — AGP 9.0 includes Kotlin support built-in (see \"Built-in Kotlin Migration\" above)\n- **Migrate kapt** to KSP or `com.android.legacy-kapt`\n- **Migrate `kotlinOptions`** to `kotlin { compilerOptions {} }`\n- **Migrate `kotlin.sourceSets`** to `android.sourceSets` with `.kotlin` accessor\n- **Review new DSL interfaces** — `BaseExtension` is removed; use `CommonExtension` or specific extension types\n- **Java default changed** from Java 8 to Java 11 — ensure `compileOptions` reflects this\n- **R class is now compile-time non-final** in app modules — refactor any `switch` statements on R class fields to `if\u002Felse`\n- **targetSdk defaults to compileSdk** if not set — specify `targetSdk` explicitly to avoid surprises\n- **NDK default changed to r28c** — specify `ndkVersion` explicitly if using native code\n- **Temporary opt-out**: `android.builtInKotlin=false` + `android.newDsl=false` in `gradle.properties` (removed in AGP 10)\n\n## Verification\n\nAfter migration, verify with the [checklist](assets\u002Fchecklist.md). Key checks:\n\n1. `.\u002Fgradlew build` succeeds with no errors\n2. `.\u002Fgradlew :androidApp:assembleDebug` succeeds (if app module exists)\n3. No `com.android.library` or `com.android.application` in KMP modules\n4. No `org.jetbrains.kotlin.android` in AGP 9.0 modules\n5. Source sets use correct names (`androidMain`, `androidHostTest`, `androidDeviceTest`)\n6. No deprecation warnings about variant API\n7. Run configurations point to correct modules\n\n## Common Issues\n\nSee [references\u002FKNOWN-ISSUES.md](references\u002FKNOWN-ISSUES.md) for details. Key gotchas:\n\n### KMP Library Plugin Issues\n- **BuildConfig unavailable** in library modules — use DI\u002F`AppConfiguration` interface, or use [BuildKonfig](https:\u002F\u002Fgithub.com\u002Fyshrsmz\u002FBuildKonfig) or [gradle-buildconfig-plugin](https:\u002F\u002Fgithub.com\u002Fgmazzo\u002Fgradle-buildconfig-plugin) for compile-time constants\n- **No build variants** — single variant architecture; compile-time constants can use BuildKonfig\u002Fgradle-buildconfig-plugin flavors, but variant-specific dependencies\u002Fresources\u002Fsigning must move to app module\n- **NDK\u002FJNI unsupported** in new plugin — extract to separate `com.android.library` module\n- **Compose resources crash** without `androidResources { enable = true }` (CMP-9547)\n- **Consumer ProGuard rules silently dropped** if not migrated to `consumerProguardFiles.add(file(...))` in new DSL\n- **KSP** requires version 2.3.4+ for AGP 9.0 compatibility\n\n### AGP 9.0 General Issues\n- **Built-in Kotlin conflicts** — `org.jetbrains.kotlin.android` must be removed; kapt must be replaced\n- **BaseExtension removed** — convention plugins using old DSL types need rewriting\n- **Variant APIs removed** — `applicationVariants`, `libraryVariants`, `variantFilter` replaced by `androidComponents`\n- **R class non-final** — `switch` on R fields fails in app modules; refactor to `if\u002Felse`\n- **targetSdk defaults to compileSdk** — set explicitly to avoid unexpected behavior changes\n- **R8 rule changes** — strict full mode, no global options in consumer rules\n- **Plugin compatibility** — many plugins need updates or opt-out flags; check Plugin Compatibility section\n- **Convention plugins** need refactoring — old `android {}` extension helpers are obsolete\n\n## Reference Files\n\n- [DSL Reference](references\u002FDSL-REFERENCE.md) — side-by-side old→new DSL mapping\n- [Version Matrix](references\u002FVERSION-MATRIX.md) — AGP\u002FGradle\u002FKGP\u002FIDE compatibility\n- [Plugin Compatibility](references\u002FPLUGIN-COMPATIBILITY.md) — third-party plugin status and workarounds\n",{"name":5,"domain":27,"description":7},"main","a91f1293287ffa9f4f1b8f486cd6e835a1568c84","skills\u002Fdevel-jb-kotlin-tooling-agp9-migration","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace","https:\u002F\u002Fgithub.com\u002FDCx7C5","#Python","2026-09-01 11:21:00",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add DCx7C5\u002Fai-marketplace --skill devel-jb-kotlin-tooling-agp9-migration",{"tool":47,"command":48},"bunx","bunx skills add DCx7C5\u002Fai-marketplace --skill devel-jb-kotlin-tooling-agp9-migration",{"tool":50,"command":51},"pnpm","pnpm dlx skills add DCx7C5\u002Fai-marketplace --skill devel-jb-kotlin-tooling-agp9-migration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002FSKILL.md",true,[55,61,65,71,75,78,82,86,90,94,98,102,108],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"assets\u002Fchecklist.md","ASSET","资产文件",3645,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Fassets\u002Fchecklist.md",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"assets\u002Findex.json",84,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Fassets\u002Findex.json",{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"index.json","REFERENCE","参考文档",1568,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Findex.json",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002FDSL-REFERENCE.md",9978,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Freferences\u002FDSL-REFERENCE.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":63,"sourceHtmlUrl":77},"references\u002Findex.json","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Freferences\u002Findex.json",{"path":79,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002FKNOWN-ISSUES.md",18526,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Freferences\u002FKNOWN-ISSUES.md",{"path":83,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002FMIGRATION-APP-SPLIT.md",14416,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Freferences\u002FMIGRATION-APP-SPLIT.md",{"path":87,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002FMIGRATION-FULL-RESTRUCTURE.md",12514,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Freferences\u002FMIGRATION-FULL-RESTRUCTURE.md",{"path":91,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002FMIGRATION-LIBRARY.md",12922,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Freferences\u002FMIGRATION-LIBRARY.md",{"path":95,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002FPLUGIN-COMPATIBILITY.md",2563,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Freferences\u002FPLUGIN-COMPATIBILITY.md",{"path":99,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002FVERSION-MATRIX.md",6758,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Freferences\u002FVERSION-MATRIX.md",{"path":103,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":106,"sourceHtmlUrl":107},"scripts\u002Fanalyze-project.sh","SCRIPT","脚本",8329,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Fscripts\u002Fanalyze-project.sh",{"path":109,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":63,"sourceHtmlUrl":110},"scripts\u002Findex.json","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-agp9-migration\u002Fscripts\u002Findex.json",[112,137,160,182,204,220],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":29},"01M71HAPZ01KQ30RKTB0FFSQ05","services-wmi-persistence-detect","Detect WMI event subscription persistence by enumerating ActiveScriptEventConsumer, CommandLineEventConsumer, and permanent subscriptions in the WMI repository.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fservices\u002Fwmi\u002Fpersistence\u002Fdetect\u002FSKILL.md",[],[119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,27,136],"services","detect","services wmi persistence detect","wmi","persistence","de","cm","process","activescript","event","subscriptions","commandline-consumer","repository","subscription","event-subscription","t1546.003","forensics","process-forensics",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":29},"01M71HAK6JTTTS229T17WJMMCG","services-wmi-exec-exploit","Perform lateral movement across Windows networks using WMI-based remote execution techniques including Impacket wmiexec.py, CrackMapExec, and native WMI commands for stealthy post-exploitation during red team engagements.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fservices\u002Fwmi\u002Fexec\u002Fexploit\u002FSKILL.md",[],[144,119,145,122,146,147,148,27,149,150,151,152,153,154,124,155,156,157,158,159],"exploit","services wmi exec exploit","exec","remote","traffic","Bash","analysis","team","across","crackmapexec","native","command","lateral movement","read","lateral-movement","Impacket",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":29},"01M71HAG6MHKNQV8KDZKMT4886","registry-artifact-extract","Extract and analyze Windows Registry hives to uncover user activity, installed software, autostart entries, and evidence of system compromise.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fregistry\u002Fartifact\u002Fextract\u002FSKILL.md",[],[167,168,169,170,171,172,27,149,173,150,174,175,124,157,176,177,178,179,180,181],"artifact","registry","registry artifact extract","extract","evidence-collection","artifact-analysis","collection","analyze","uncover","software","activity","digital-forensics","windows-registry","regripper","sonnet",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":29},"01M71HACR4A8XTWTTSXK4124AA","processes-token-impersonate-detect","Detect Windows token impersonation and privilege abuse including SeImpersonatePrivilege exploitation via Potato attacks and token stealing techniques.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Ftoken\u002Fimpersonate\u002Fdetect\u002FSKILL.md",[],[120,189,190,191,192,193,194,125,195,27,136,196,197,198,199,200,201,202,203,124],"processes token impersonate detect","token","processes","attacks","windows","escalation","techniques","privilege-escalation","seimpersonate","token-impersonation","printspoofer","exploitation","potato","impersonation","via",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":210,"publishedAt":29},"01M71HAABSB4Z6QFSXEG00R4RK","processes-thread-injection-detect","Detect Windows thread injection techniques including CreateRemoteThread, QueueUserAPC, NtCreateThreadEx, and thread hijacking via process memory analysis.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Fthread\u002Finjection\u002Fdetect\u002FSKILL.md",[],[211,212,120,213,191,193,214,125,215,195,27,136,150,216,217,218,219,203,124,126],"thread","processes thread injection detect","injection","memory","process-injection","api","apc-injection","thread-injection","nt-api",{"skillNo":221,"name":222,"nameZh":6,"description":223,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":224,"categories":225,"keywords":226,"publishedAt":29},"01M71HA7H311V5G14WMX58HQSS","processes-hollow-technique-detect","Detect process hollowing (RunPE) by identifying processes with mismatched image paths between PEB and VAD tree, or unmapped PE headers in memory.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Fhollow\u002Ftechnique\u002Fdetect\u002FSKILL.md",[],[227,120,191,228,214,125,229,230,27,136,231,232,233,234,235,236,124,126,237,238],"processes hollow technique detect","tree","memory-forensics","process-hollow","peb","runpe","image","pe-header","in memory","with","mismatched","headers"]