0

I have been searching over the internet and in the stackoverflow as well and found that and apk file CAN BE de-compiled with some efforts using dex2jar and then there are many de-compilers for jar files. Some people told me that ProGaurd can obfuscate the code and its would be difficult to de-compile it but not impossible.

My goal is to run an audio file on the device which should be 'impossible to copy' for any user. Even if I save it on the device in sqlcipher database, it has to be decrypted to run it on the audio player.

Please suggest me a way to protect my audio file from being copied.

What about running it on a c++ code and connecting that code using JNI?

Nishant Soni
  • 658
  • 1
  • 9
  • 19
  • I'll make this a comment since it may not directly address your question. But if you make a device `play` an audio file on a digital device, there will be a way (maybe not lossless, if you try hard enough) to reproduce what you are playing. Is `protecting` the content really worth all the extra effort? Just wondering... – ChristopheD Apr 24 '12 at 22:10

1 Answers1

2

This requirement is impossible to fulfill. If it is supposed to be played for the user, the user can copy it. Even if you can keep things encrypted over all the digital components, he will be able to record the audio file from the headphone jack. Note that I have no idea in how far, if at all, Android supports the kind of hardware-based DRM that would be required to effectively prevent digital copying.

Edit: A more fruitful approach might be to watermark the audio so you can identify the user who copied the audio after the fact. Doing this securely would require personalizing the file before download though, or again, hardware support, which I doubt exists.

Medo42
  • 3,821
  • 1
  • 21
  • 37
  • I am not worried about if it is being copied by playing it and recording it because it cannot be a perfect recording without loss. So just assume as if it is a file that is not useful without being copied exactly. – Nishant Soni Apr 26 '12 at 17:37
  • As far as I understand your problem, the situation is still that the device needs to be able to read your file, but you don't want the user of the device to get at it. The only way I can think of achieving this is if the device has hardware to decrypt the file and will only pass the decrypted information on to trusted components that will not allow the user to get at it. I can't help you further because I don't know any relevant specifics. – Medo42 Apr 27 '12 at 20:48