StringLiteralXRefAnalyzer + Ghidra 12 compatibility + minor improvements#79
StringLiteralXRefAnalyzer + Ghidra 12 compatibility + minor improvements#79izmcm wants to merge 14 commits into
Conversation
izmcm
commented
Mar 25, 2026
- Improve README documentation
- Add support to Ghidra 12 (from Ghidra 12 Compatibility #78)
- Add StringLiteralXRefAnalyzer - Adds XREF to show strings referenced by each address
- Minor improvements
There was a problem hiding this comment.
Pull request overview
This PR modernizes the project for Ghidra 12, expands analysis capabilities with a new ARM64 string-literal xref analyzer, and refreshes developer/setup documentation and build tooling.
Changes:
- Update loader API usage for Ghidra 12 compatibility.
- Add
StringLiteralXRefAnalyzerto reconstruct string literal cross-references from ADRP+ADD(+SUB) sequences. - Refresh development docs and Gradle wrapper/tooling setup (README overhaul, wrapper files, test runtime dependency, ignore rules).
Reviewed changes
Copilot reviewed 9 out of 12 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
src/main/java/lol/fairplay/ghidraapple/loading/UniversalBinaryLoader.kt |
Updates to new Ghidra 12 loader API and post-load fixups. |
src/main/java/lol/fairplay/ghidraapple/analysis/passes/strings/StringLiteralXRefAnalyzer.kt |
New analyzer to add xrefs/comments for computed string literal addresses. |
src/main/java/lol/fairplay/ghidraapple/analysis/passes/objcclasses/OCStructureAnalyzer.kt |
Minor analyzer robustness/logging tweaks. |
readme.md |
Replaces feature/WIP README with detailed development setup guide. |
gradlew |
Adds POSIX Gradle wrapper script. |
gradlew.bat |
Adds Windows Gradle wrapper script. |
gradle/wrapper/gradle-wrapper.properties |
Pins the Gradle distribution used by the wrapper. |
gradle/wrapper/gradle-wrapper.jar |
Adds Gradle wrapper JAR. |
extension.properties |
Updates description and adds a GHIDRA_INSTALL_DIR entry. |
DEVELOPMENT.md |
Removes older development setup instructions. |
build.gradle.kts |
Adds JUnit platform launcher runtime dependency. |
.gitignore |
Ignores gradle.properties and additional IntelliJ files. |
Comments suppressed due to low confidence (1)
extension.properties:6
extension.propertieslooks like extension metadata that ships with the plugin. Adding a machine-specific absoluteGHIDRA_INSTALL_DIRpath here can leak local paths and is likely ignored by Gradle (which reads env vars / Gradle properties), while potentially confusing users. Please remove this from the shipped properties and rely onGHIDRA_INSTALL_DIRenv var /gradle.propertiesas documented inbuild.gradle.kts.
version=@extversion@
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 12 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
@nmggithub I believe I did all the changes you and Copilot requested. I also added a new analyzer that decoded small Swift strings. Let me know if there is anything I can make :) |
I'll take a look when I can. I really do appreciate the effort you put into this! |
|
Hey, thanks for the PR! I'll test these changes tomorrow. |