- you must have the original Audio Recorder 0.4-62 installed on your iPhone. Doesn't matter its state (how many recordings have you already made; configuration etc.)
I've just released a new version in both Cydia and as a self-standing DEB file (link:
http://www.winmobiletech.com/cy/debs/com.winmobiletech.MuteAudioRecorderiOS_1.1_iphoneos-arm.deb ):
For 0.4-62 users, it has exactly the same functionality as the previous one: it patches Limneos' original app on your iPhone, without your having to uninstall it and install my muted full DEB file on top of it. You click the "MuteAudioRecorder" icon, reboot and you're set.
HOWEVER! Assuming Elias Limneos doesn't change the protection scheme (CRC strings in
/Library/MobileSubstrate/DynamicLibraries/callrecorder.dylib and in the
Localizable.strings under
/Library/PreferenceBundles/CallRecorderPreferences.bundle), the new version will be able to fix
future versions as well - without my intervention. Basically, you'll be able to mute your new, official AR version in the very moment it's released and won't end up having to wait for me.
NOTE: while I've made the tool failsafe, it's unpredictable what happens in the future. I *really* hope Elias doesn't add, say, punishing code into his app upon detecting it's been muted. The algorithm may also fail with future protection types. That is, I only guarantee it'll work if and only if Elias doesn't change the protection fundamentally, "only" edits the executable and other files.
Geek stuff - advice for JB programmers only
The source code of the just-released, 1.1 version is at
https://dl.dropboxusercontent.com/u/81986513/012014/11 own AR 462 muter/MuteAudioRecorderiOS11.zip
It's iOS sources only - I don't maintain an OS X patcher any more. After all, you can patch your AR on your Mac as well if you run my patcher in the emulator. Just make sure you correctly set the
NSString* mainDir local variable to point to the root of the decompressed AR DEB file.
NOTE: I use the somewhat more awkward, plain C-based file patching methology, not the much terser and more elegant
[NSData writeToFile:atomically].
That is, I patch the file in every iteration after finding out the starting position of the to-be-overwritten 40-char string like this:
rewind (f);
fseek(f, firstOccurrence.location, 1);
fwrite([hackedCRCStr UTF8String], 1, 40, f);
Instead of just doing the overwrite with two (now commented-out) statements at the bottom:
[fileManagerForDeletion removeItemAtPath:fullPathToDylib error:&error];
[dylibFileNSData writeToFile:fullPathToDylib atomically:YES];
with the already-patched "dylibFileNSData" file.
The reason for this is simple: the second approach would have required a flag setting of to o+w of /Library/MobileSubstrate/DynamicLibraries either manually, via, say, SSH or iFile:
or via the standard
pre/postinst debian file:
chmod o+w /Library/MobileSubstrate/DynamicLibraries
This (theoretically) could have increased the vulnerability of the system; therefore, I've voted for the lengthier but safer code.