Code Monkey home page Code Monkey logo

androidshell's Introduction

AndroidShell

Android APK 加壳保护


原理介绍

为了防止直接对APK反编译,提高Android 程序安全性,可以给真正的APK加上一个外壳,当外壳运行的时侯,把真正的程序解密出来,动态加载到系统中。


基本步骤:

1 : 将我们的APK打包(AndroidShellDome)
2 :运行外壳程序,就是保护我们直正APK的程序,得到 classes.dex 文件 (AndroidShell)
3 : 运行加壳程序(ApkShellUtil),将我们要保护的APK 合并(可加密)到外壳程序的classes.dex中
4 : 将合并的后的classes.dex 放入 外壳程序(AndroidShell)bin 目录下重新运行打包
5 : 在外壳程序的 Application 中将真正的APK解密并释放出来加载运行

需要注意的问题

  1. 程序中所用到的资源文件要全部复制到 外壳程序中

  2. 应用中 AndroidManifest.xml 中所有内容需要在外壳程序的AndroidManifest.xml 重新注册

  3. 如果应用中定义了自己的Application 需要在 外壳程序中添加

    xxx.xxx.Application 是指我们定义的Application全称


APK: 需要加壳的程序

APKshell : 需要加的壳


参考资料

本示例完全参照以下博客内容实现,感谢他们的奉献。

Jack_Jia的博客

http://blog.csdn.net/jiazhijun/article/details/8678399

pvlking的专栏

http://blog.csdn.net/pvlking/article/details/42168233

androidshell's People

Contributors

longtaoge avatar yellow5a5 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androidshell's Issues

没有一点用

对apk稍微复杂一点点,比如多几个服务就会蹦的。或者有jni调用,只能用于简单的demo。这样的东西建议少发,网上一搜全是这种没用的加壳办法,不知道要害死多少菜鸟傻傻的浪费时间去弄这个没有价值的东西,顺便一提,//自己找的内核搜索ActivityThread.java文件,搜索成员mPackages就行
// final ArrayMap<String, WeakReference> mPackages
// = new ArrayMap<String, WeakReference>();
//看你对应手机的系统和对应内核的系统,用的是ArrayMap还是hashMap
//sdk19和以上手机用ArrayMap

报一个错误

为什么DemoApplication这个类在壳程序中不能删掉,删掉就报找不到这个类异常,加上就可以正常跑起来。

UMD Research Study

We are researchers from the University of Maryland conducting a study about software code reuse. If you are interested in helping us in this study​ through ​a short interview about this project, please contact us on ​[email protected]​ for more information​. You will be ​compensated for your time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.