During my random browsing of PPHelper, China’s largest “assistant” that provids download of cracked softwares as well as serving as a 2nd AppStore itself, we found one of the games contains a strange Adware not seen in its AppStore Version.
Overall it’s a pretty boring case since the native calls are not obfuscated
Running codesign -dvvv yields the following information:
1 | Identifier=dujj.com.AdAppActive |
Apparently a cracked app will have its CSBlobs removed so now we can
be sure that this application has been resigned, which is strange
considering this is published on
Applications for Jailbroken Devices
Running otool -l
against the main binary also yields a
new load command:
1 | Load command 57 |
The Binary
The main functionality of AdAppActive took place in
-[PPNiubilitySimpleFactory createClientInfo]
, starting
from the EntryPoint and in turn calls
[TRPPNiubilityManager share]
Inside -[PPNiubilitySimpleFactory createClientInfo]
, it
calls:
[PPNiubilityConfiguration sharedConfiguration]
[UIDevice isJailBreak]
[PPReachability reachabilityForLocalWiFi]
to collect various device information and upload them to http://applog.uc.cn:9081/collect
Dangerous Behaviours
UDID
-[PPNiubilitySimpleFactory createClientInfo]
calls
+[UnitlTool uuid]
which in turn abuses
MGCopyAnswer
in libMobileGestalt
to upload the
UDID of the device, although theoratically this private API is no longer
usable without proper entitlements, and our samples seems to be missing
those entitlements, it only contains:
1 | <?xml version="1.0" encoding="UTF-8"?> |
IOKit
Various methods in the class UIDeviceAdditions seems to be abusing IOKit and sysctl to fetch ECID/SerialNumber/MAC Address/Platform. This is also no longer usable in sandbox since around iOS 9.3.X