android反编译之投机主义

来源:互联网 发布:电脑温度测试软件 编辑:程序博客网 时间:2024/04/29 03:06

相信大家都知道,apk的安全机制存在一定问题,dex文件格式,是可以修改,重新编译的,最近用非常火的广告平台做个一个测试。

测试内容:汉化国外android软件,添加组件,更换图片,加入易积分广告sdk,重新打包签名发布。

步骤一:将下载的国外android apk文件用apktool d命令进行反编译,你会发现一些资源文件,和一堆java编译出的smali文件。

步骤二:添加广告平台的sdk(可以将广告平台的demo.apk反编译后获得sdk的smali文件,直接复制到你的工程中即可)

步骤三:按照广告平台要求更改AndroidManifest.xml文件,添加广告平台的信息。(特别注意:因为广告平台的android API版本问题,在你的AndroidManifest.xml文件中如果规定了android:targetSdkVersion,可能广告平台无法显示)

步骤四:修改所得反编译文件的入口activity,进行广告sdk的初始化。(入口activity在AndroidManifest.xml有介绍)

          1.加广告平台的实现接口,在smali文件中添加.implements。

          2.添加接口的实现方法(从demo smail文件中拷贝即可)

          3.添加field字段,特别注意字段的初始化。以Handler为例,Handler handler = new Handler() {public void handleMessage(Message msg) {}},这里就涉及到了内部类,你可以自己写一个相似的内部类文件观察一下,会生成一个内部类的smali文件,将其加入到入口文件所在的包,修改入口smali文件,在构造器init中,添加Handler的初始化,这样内部类的任务就完成了。

步骤四:汉化处理,增加组件,为其添加点击事件,链接到广告sdk,显示积分墙。

         1.汉化就不用说了,直接修改strings.xml文件就行,但是有的文字是在layout和程序中的,这就需要你仔细找一找了。

         2.组件添加是修改layout文件,注意public.xml,ids.xml的修改,public.xml中的16位value值是按资源种类递增的。

         3.点击事件同步骤三的内部类添加,不过这个少了一个在入口smali文件的初始化过程。

步骤五:重新用apktool打包,sign工具签名。

推荐:1.notepad++的查找功能非常强大,可以用来辅助修改,而且可以下载smali文件显示的高亮插件。

           2.dex2jar+jd-gui反编译出java源码,方便对应用程序的查找解读。

声明:反编译非法,不过用来学习学习还是挺有成就感的。