How do Android applications obtain system signature permissions?

Source: Internet
Author: User
How do Android applications obtain system signature permissions?

Some libraries have demanding usage conditions. Only programs with the same signature can obtain access permissions. At this time, even if the corresponding permission is added to androidmanifest. XML, the problem of not having the XX access permission still occurs. For example, Android. Permission. access_surface_flinger.

 

The first method is simple, but it needs to be compiled using make in the environment of the Android system source code:

1. Add the Android: shareduserid = "android. uid. System" attribute to the manifest node in androidmanifest. xml of the application.

2. Modify the Android. mk file and add local_certificate: = platform.

3. Use the MM command to compile the generated APK and you will have the permission to modify the system time.

The second method is troublesome, but you do not need to run the virtual machine to the source code environment and use make to compile it:

1. Similarly, add the Android: shareduserid = "android. uid. System" attribute.

2. Compile the APK file using eclipse, but this APK file cannot be used.

3. Open the APK file with the compression software, and delete the CERT. SF and cert. RSA files under the META-INF directory.

4. Use the platform key of the target system to re-sign the APK file. This step is troublesome. First, find the key file. The location in my android source code directory is "build \ target \ product \ Security", and the following two files are platform. pk8 and platform. x509.pem. However
And then use the signapk tool provided by Android to sign it. The source code of signapk is in "build \ tools \ signapk" and its usage is"Signapk platform. x509.pem platform. pk8 input.apk output.apk", It is best to use an absolute path for the file name to prevent it from being found. You can also modify the source code to use it directly.

In this way, the final APK is the same as the first method.

The following explains the principle. First, add the Android: shareduserid = "android. uid. System" attribute. With the shared user ID, multiple APK with the same user ID can be configured to run in the same process. Then, assign the UID of the program to Android. uid. system, that is, to allow the program to run in the system process, so that you have the permission to modify the system time.

It is not enough to add the UID. If the APK cannot be installed at this time, the system prompts that the signature is inconsistent because the program wants to run in the system process and the platform of the target system is required. key, which is the platform mentioned in the second method above. pk8 and platform. x509.pem files. After these two keys are signed, the APK can be put into the system process. Adding local_certificate: = platform to the first method is actually using the two keys for signature.

There is also a problem, that is, the program generated in this way can only be used in the original Android system or a self-compiled system, because such a system can get the platform. pk8 and platform. x509.pem files. If other companies do not even install Android. Try the original Android key for signature. The program runs OK on the simulator, but the prompt "package... has no signatures that match those in" is displayed after being installed on G3.
Shared user Android. uid. System ", which also protects the system security.

Finally, the Android: shareduserid attribute can not only put the apk in the system process, but also configure multiple APK to run in one process to share data, it should be very useful.

 

Ref: http://labs.chinamobile.com/go.php? Url = http % 3A % 2f % 2fdev.10086.cn % 2 fblog % 2f % 3fuid-49302-action-viewspace-itemid-907

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.