
Cyto's Puzzle Adventure — 1.0 (community-patched build)
adventure · puzzle · Android · Room8
This build of Cyto's Puzzle Adventure ( com.room8.Cyto ) has one native-code fix applied to libCyto.so , the game's compiled cocos2d-x engine/game logic. The bug: R8Screenshot::save_in_thread crashes with a SIGSEGV the first time it runs — right after finishing Level 1. It grabs a dictionary's key list via CCDictionary::allKeys() and immediately indexes into it, but under one specific timing condition that array's internal storage pointer comes back null, and nothing checks for that before dereferencing it. CCArray::count() , which you'd think could safely check first, has the exact same unguarded null dereference — so it can't be used as a safe guard either. The fix: since this is raw ARM machine code (not smali), there was no room to just add a line — the fix lives in a small "code cave" (a new section appended to the binary) that the crashing call site now branches into. It re-checks the same fields safely, bails out cleanly through the game's own existing shutdown path if anything's null, and otherwise jumps right back into normal flow. All position-independent, so it holds up under Android's ASLR. Behavior: crashes once on first launch after Level 1, then runs clean from then on (verified through World 2, including after a cache clear). No gameplay, IAP, or licensing logic was touched — checked all 16 call sites in the library that use allKeys() , and this was the only one missing a safety check.
Internet Archive
en
- Download torrent · en · 24780809 bytes
17defa8a7e3015d8e42b07d60a3eba9212047b1a






