FuzzMe – Reverse Engineering and Fuzzing an Android Shared L... #1659
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🤖 Automated Content Update
This PR was automatically generated by the HackTricks News Bot based on a technical blog post.
📝 Source Information
🎯 Content Summary
This write-up presents an end-to-end, highly practical workflow for reverse engineering and fuzzing an Android AArch64 shared library (
libvalidate.so) to recover a hidden flag by driving a specific exported function (validate). Although designed as a CTF challenge, all techniques (binary inspection, harnessing, hooking, and fuzzing) generalize to real-world mobile binary assessment.1. Target discovery and initial RE
The challenge provides a single AArch64 ELF shared libr...
🔧 Technical Details
1. Reverse engineering JSON-based validators in Android shared libraries
Given an AArch64 ELF shared library, first enumerate exported symbols with
objdumpto identify callable entry points (e.g.,validate). Load the library into Ghidra or similar, inspect the decompiled function, and infer argument types (pointer + length). Follow the control flow to see if the input is treated as JSON or another structured format. By analyzing comparison branches and error paths, reconstruct the expected schema (e.g., mandatory top-level keys likemagic,version,padding, nestedroottrees with constanttype/level/num_childrenvalues). This allows crafting syntactically and semantically valid inputs that exercise deeper checks instead of failing on the first parse error.2. Using C harnesses to drive exported ELF functions
To fuzz a single exported f...
🤖 Agent Actions
Summary:
src/binary-exploitation/common-exploiting-problems.mdwith a new “Android AArch64 shared-library fuzzing & LD_PRELOAD hooking” section covering export triage, harness construction, schema reconstruction, LD_PRELOAD flag leaking, fuzz-space reduction, and an AFL-oriented harness (with collapsible code blocks).Tests: Not run (not applicable).
This PR was automatically created by the HackTricks Feed Bot. Please review the changes carefully before merging.