-
-
[讨论]手机端给apk文件添加AlertDialog
-
发表于:
2013-12-16 15:49
6200
-
[讨论]手机端给apk文件添加AlertDialog
昨天有幸读到了 pc小波 的一篇文章
【原创】apk文件添加AlertDialog对话框
于是心想着能不能利用手机端的Dalivik字节码编辑器,通过比较APK修改前后的关键方法onCreate代码段的变化,来达到手机端添加AlertDialog的目的..
还是先以APK合金弹头为例 利用Dalivik字节码编辑器分别获取修改后的onCreate截图如下:
将全部代码复制出来 然后在对比软件对比结果如下:
其中添加的代码为:
new-instance v1 Landroid/app/AlertDialog$Builder;
invoke-direct {v1,v5} Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V
const-string v2 "普通对话框"
invoke-virtual {v1,v2} Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
const-string v2 "你好,Android!"
invoke-virtual {v1,v2} Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
invoke-virtual {v1} Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
move-result-object v2
invoke-virtual {v2} Landroid/app/AlertDialog;->show()V
所以手机端利用Dalivik字节码编辑器手动给合金多弹头APK添加AlertDialog的流程可以为:
1、打开 AndoroidMainfest.xml 确定APK的 package 名,如com.kinglau.mslug;
2、根据包名 找到主Activity 所在的 class.dex 文件夹目录,如/com/kinglau/mslug;
3、找到MianActity文件 在onCreate方法代码段的return-void之上添加上面贴出的代码,保存APK后成功实现!
后续的试验了多个APK 只要适当修改第一句中
invoke-direct {v1,v5} Landroid/app/AlertDialog$Builder;-><init>
{V1,V5} 中“V5”的值即可...
个人不会Smali语法,“V5”是动态的实现的,如果能够通过某种方式获取 那么实现手机端一键添加自定义AlertDialog对话框即不难实现..
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!