一. 编写广告页
写一个广告页面,并调用其他页面的demo
(1) 设计界面如下


(2) 编写代码如下
public class SplashActivity extends Activity {
    private static final int MSG_START_MENU = 1;
    @SuppressLint("HandlerLeak")
    Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
            case MSG_START_MENU:
                Intent intent = new Intent();
                intent.setClass(SplashActivity.this, HomeActivity.class);
                startActivity(intent);
                finish();
                break;
            default:
                break;
            }
        };
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        // 设置字体
        Typeface fontFace = Typeface.createFromAsset(getAssets(),
                "fonts/handwriting.ttf");
        TextView textSplash = (TextView) findViewById(R.id.textSplash);
        textSplash.setTypeface(fontFace);
        // 延时启动下一个Activity
        mHandler.sendEmptyMessageDelayed(MSG_START_MENU, 2000);
    }

}


运行效果:


(3). 确定修改点
如果要把这个Splash页面插入到别的Activity中,需要修改哪些地方?
    AndroidManifest.xml
    资源拷贝(图片,字体)
    资源ID
    控件ID
    调用原逻辑的Activity
    Activity中修正
            类名称 包名称
            资源ID
            被调用Activity
    字符串


二.反编译自己的APK
1. 解包APK
apktool d test.apk


2. 目录说明
assets 存放字体资源
res 存放图片资源 layout 字符串等资源
smali存放代码


其他文件请参考开发中的目录,基本一一对应
需要注意的是在res/values目录有一个public.xml
该文件由apktool生成, 里面保存了所有的ID选项
如果需要添加资源ID,直接在这里添加,apktool就会帮你编译回去



三.开始修改过程
1.先把目标apk解包


2. 添加字符串
定位到public.xml中加入
<public type="string" name="splash_info" id="0x7f040027" />


定位到string.xml加入


请确保id和名称的值不要和string的其他字符串有重叠

3. 添加字体
目标APK没有assets文件夹,我们直接把我们的assets文件夹拷贝过去
放到根目录即可


4. 添加图片
把图片拷贝到res\drawable文件夹(注意有重名的情况)
我们这次没有重名,如果有请在开始的时候就取一个特殊的名字

修改public.xml文件
<public type="drawable" name="splash" id="0x7f02001c" />

可以看到值和名字选中之后都没有重复的即可

5.添加layout
把layout目录下的activity_splash.xml拷贝到目标layout下面

基本上该Activity有多少控件id  就要在public.xml定义多少
为了方便 我把dimen全部直接替换过来了

修改public.xml如下

<public type="id" name="textSplash" id="0x7f080051" />

同时需要在public.xml加上activity_splash的ID

<public type="layout" name="activity_splash" id="0x7f030023" />

同时需要在ids.xml中加上一项


记录下这2个ID值
textSplash   0x7f080051
activity_splash  0x7f030023

6. 添加代码
把Test\smali\org\bing\test目录下的SplashActivity拷贝过去
mobilesafe\smali\com\mobilesafe

此时我们发现已经存在SplashActivity
2种解决方案
a. 换一个目录拷贝
b. 重命名

我们选择较麻烦的重命名法:
(1). 重命名源文件
源文件:

重命名成: (^ _ ^ 后面加了一个1)


(2). 替换类名
打开我们的SplashActivity1.smali
将org/bing/test/SplashActivity全部替换成com/mobilesafe/SplashActivity1


同样在SplashActivity1$1.smali中
将org/bing/test/SplashActivity全部替换成com/mobilesafe/SplashActivity1

最后修改handleMessage里面HomeActivity为
com/mobilesafe/SplashActivity (目标APP的主Activity)

(3).修改资源ID
找到setContentView 将上面的常量值修改成0x7f030023
找到findViewById将上面的常量值修改成0x7f080051

发现变红了 有smali语法插件就是爽(请百度:sublime配置smali语法插件  用记事本估计又被坑一波)

爆红是因为指令格式的问题, 把
const/high16 修改成 const就好



7.修改AndroidManifest文件

将原来的主Activity 改成我们的Activity

8. 回编译


报错则回顾哪里还没有做到位

然后签名,运行成功

四.总结
基本上开发需要的哪些细节,这里修改就得修改哪些点

实际运用可以考虑把过程写成自动化流程,给定广告模版文件,自动插入相应位置
这样就可以批量插广告  ^ _ ^

例子下载链接
链接:http://pan.baidu.com/s/1i5hlCCd 密码:pc1c





5. apktool 给XX手机卫士加广告页的更多相关文章

  1. Android 手机卫士--xutils说明与下载方法使用

    xUtils简介 xUtils 包含了很多实用的android工具. xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词) ...

  2. Android 项目实战--手机卫士(实现splash)

    从今天开始根据之前学习的android的基础知识,实战一下,实现一个简单功能的android手机卫士 本文地址:http://www.cnblogs.com/wuyudong/p/5899283.ht ...

  3. Touch事件or手机卫士面试题整理回答(二)

    Touch事件or手机卫士面试题整理回答(二) 自定义控件 1. Touch事件的传递机制 顶级View->父View->子View,不处理逆向返回 OnInterceptTouchEve ...

  4. Android核心基础(手机卫士的一个知识点总结)

    注意:有些功能是需要权限的,在这里并没有写出来,在程序运行中,根据程序报的错误,添加相应的权限即可,里面的具体里面可能有一些小细节,没有明确的写出来,具体的需要在程序中自己调试,解决. 这个总结涵盖了 ...

  5. Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究

    转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...

  6. apk去广告工具(利用apktool去除apk文件里的广告)

    基本知识 apk安装包的文件结构 以知名桌面软件“LauncherPro”为例,apk安装包文件目录: 文件目录如下: - META-INF - res - anim - color - drawab ...

  7. android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码

    Android精选源码 android身份证.银行卡号扫描源码 android仿bilibili客户端 android一款3D 指南针 源码 android手机卫士app源码 android提醒应用, ...

  8. Android 手机卫士--参照文档编写选择器

    本文来实现<Android 手机卫士--导航界面1的布局编写>中的图片选择器部分的代码. 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.ht ...

  9. Android 手机卫士--设置界面&功能列表界面跳转逻辑处理

    在<Android 手机卫士--md5加密过程>中已经实现了加密类,这里接着实现手机防盗功能 本文地址:http://www.cnblogs.com/wuyudong/p/5941959. ...

随机推荐

  1. C++常用的#include头文件总结

    C++常用的#include头文件总结 这篇文章主要介绍了C++常用的#include头文件,对初学者理解C++程序设计大有好处的相关资料   本文详细罗列了C++所包含的头文件的名称及作用说明,比较 ...

  2. 有了这个,再也不用每次连新机器都要设置secure crt属性了

    我连服务器用的是secure crt,每次ssh新服务器的时候都得手动设置字符编码和背景颜色,今天问了旁边的开发原来可以全局设置,以后连服务器的时候就再也不用手动设置相关属性了.步骤如下: 一开始点击 ...

  3. JavaScript正则表达式方法总结

    str.match(reg) 1.reg没有全局标志g,match将只执行一次匹配.匹配成功返回一个数组,arr = [$0,$1,$2,...,index,str],匹配失败返回null. arr中 ...

  4. PHP7的安装

    PHP7和HHVM比较PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM.HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导致crash了, 那么整个服务就挂 ...

  5. 本地wampserver如何配置伪静态

    本地wamp实现虚拟主机后,我把自己的站放进去就出现了500错误看日志看到.htaccess: Invalid command ‘RewriteEngine’, perhaps misspelled ...

  6. Web 安全测试

    http://blog.sina.com.cn/s/blog_a1bbddc70101dt12.html http://blog.csdn.net/pdn2000/article/details/64 ...

  7. 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用

    当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...

  8. [CentOs]ip操作

    摘要 在虚机里面安装好centos之后,需要知道centos的ip,方便以后连接时使用. 查看ip命令 命令 ifconfig 能查看到信息,说明已经配置过了,如果没配置过,可以通过下面的方式进行配置 ...

  9. Linux服务器管理: RPM包

    服务安装类型主要分两种: RPM安装和源码包编译安装: 1.RPM包查看: rpm -qa | grep 包名 用chkconfig --list 查看服务自启动命令    只对RPM包安装的服务生效 ...

  10. Collection类相关总结

    集合类的框架如下: Collection(接口)    List(接口):允许重复.         ArrayList         Vector         LinkedList    Se ...